aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore11
-rw-r--r--CREDITS5
-rw-r--r--Documentation/DocBook/kgdb.tmpl20
-rw-r--r--Documentation/accounting/taskstats-struct.txt6
-rw-r--r--Documentation/auxdisplay/cfag12864b4
-rw-r--r--Documentation/auxdisplay/cfag12864b-example.c2
-rw-r--r--Documentation/auxdisplay/ks01084
-rw-r--r--Documentation/cgroups.txt4
-rw-r--r--Documentation/controllers/devices.txt8
-rw-r--r--Documentation/cpusets.txt11
-rw-r--r--Documentation/feature-removal-schedule.txt9
-rw-r--r--Documentation/hwmon/sysfs-interface33
-rw-r--r--Documentation/i2c/writing-clients18
-rw-r--r--Documentation/kernel-parameters.txt8
-rw-r--r--Documentation/networking/ip-sysctl.txt12
-rw-r--r--Documentation/networking/s2io.txt6
-rw-r--r--Documentation/video4linux/CARDLIST.au08282
-rw-r--r--Documentation/vm/slabinfo.c4
-rw-r--r--Documentation/vm/slub.txt2
-rw-r--r--Documentation/x86_64/mm.txt5
-rw-r--r--MAINTAINERS91
-rw-r--r--Makefile2
-rw-r--r--arch/alpha/Makefile1
-rw-r--r--arch/alpha/kernel/core_t2.c2
-rw-r--r--arch/alpha/kernel/pci.c17
-rw-r--r--arch/alpha/kernel/traps.c3
-rw-r--r--arch/alpha/kernel/vmlinux.lds.S14
-rw-r--r--arch/arm/common/dmabounce.c3
-rw-r--r--arch/arm/mach-omap2/gpmc.c2
-rw-r--r--arch/arm/mach-realview/platsmp.c2
-rw-r--r--arch/arm/plat-omap/dma.c2
-rw-r--r--arch/blackfin/kernel/cplb-nompu/cplbinit.c6
-rw-r--r--arch/blackfin/kernel/irqchip.c5
-rw-r--r--arch/ia64/Makefile1
-rw-r--r--arch/ia64/kernel/iosapic.c2
-rw-r--r--arch/ia64/kernel/perfmon.c10
-rw-r--r--arch/ia64/kernel/sal.c7
-rw-r--r--arch/ia64/kernel/setup.c6
-rw-r--r--arch/ia64/kernel/time.c1
-rw-r--r--arch/ia64/sn/kernel/sn2/sn2_smp.c2
-rw-r--r--arch/ia64/uv/kernel/setup.c12
-rw-r--r--arch/mips/Kconfig2
-rw-r--r--arch/mips/Makefile18
-rw-r--r--arch/mips/au1000/common/platform.c4
-rw-r--r--arch/mips/configs/sb1250-swarm_defconfig676
-rw-r--r--arch/mips/configs/tb0219_defconfig192
-rw-r--r--arch/mips/configs/tb0226_defconfig192
-rw-r--r--arch/mips/configs/tb0287_defconfig207
-rw-r--r--arch/mips/fw/arc/identify.c5
-rw-r--r--arch/mips/kernel/cevt-txx9.c3
-rw-r--r--arch/mips/kernel/smp.c2
-rw-r--r--arch/mips/lasat/interrupt.c2
-rw-r--r--arch/mips/lasat/lasat_board.c13
-rw-r--r--arch/mips/lasat/sysctl.c172
-rw-r--r--arch/mips/lasat/sysctl.h24
-rw-r--r--arch/mips/mips-boards/generic/amon.c4
-rw-r--r--arch/mips/mips-boards/malta/Makefile3
-rw-r--r--arch/mips/mm/c-r4k.c33
-rw-r--r--arch/mips/mm/init.c1
-rw-r--r--arch/mips/mm/page.c2
-rw-r--r--arch/mips/nxp/pnx8550/jbs/board_setup.c11
-rw-r--r--arch/mips/nxp/pnx8550/stb810/board_setup.c10
-rw-r--r--arch/mips/pci/pci-sb1250.c8
-rw-r--r--arch/mips/pci/pci-vr41xx.c14
-rw-r--r--arch/mips/sgi-ip32/ip32-irq.c5
-rw-r--r--arch/mips/sibyte/swarm/Makefile4
-rw-r--r--arch/mn10300/kernel/mn10300_ksyms.c5
-rw-r--r--arch/mn10300/kernel/process.c2
-rw-r--r--arch/mn10300/kernel/setup.c1
-rw-r--r--arch/mn10300/lib/Makefile2
-rw-r--r--arch/mn10300/lib/__ucmpdi2.S43
-rw-r--r--arch/powerpc/Makefile4
-rw-r--r--arch/powerpc/boot/Makefile5
-rw-r--r--arch/powerpc/boot/crtsavres.S233
-rw-r--r--arch/powerpc/boot/dts/mpc8377_rdb.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc8378_rdb.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc8379_rdb.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc8548cds.dts4
-rw-r--r--arch/powerpc/configs/83xx/mpc8313_rdb_defconfig155
-rw-r--r--arch/powerpc/configs/83xx/mpc8315_rdb_defconfig162
-rw-r--r--arch/powerpc/configs/83xx/mpc832x_mds_defconfig146
-rw-r--r--arch/powerpc/configs/83xx/mpc832x_rdb_defconfig150
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_itx_defconfig157
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig150
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_mds_defconfig146
-rw-r--r--arch/powerpc/configs/83xx/mpc836x_mds_defconfig146
-rw-r--r--arch/powerpc/configs/83xx/mpc837x_mds_defconfig146
-rw-r--r--arch/powerpc/configs/83xx/mpc837x_rdb_defconfig224
-rw-r--r--arch/powerpc/configs/83xx/sbc834x_defconfig140
-rw-r--r--arch/powerpc/configs/85xx/ksi8560_defconfig168
-rw-r--r--arch/powerpc/configs/85xx/mpc8540_ads_defconfig133
-rw-r--r--arch/powerpc/configs/85xx/mpc8544_ds_defconfig210
-rw-r--r--arch/powerpc/configs/85xx/mpc8560_ads_defconfig135
-rw-r--r--arch/powerpc/configs/85xx/mpc8568mds_defconfig150
-rw-r--r--arch/powerpc/configs/85xx/mpc8572_ds_defconfig210
-rw-r--r--arch/powerpc/configs/85xx/mpc85xx_cds_defconfig137
-rw-r--r--arch/powerpc/configs/85xx/sbc8548_defconfig131
-rw-r--r--arch/powerpc/configs/85xx/sbc8560_defconfig135
-rw-r--r--arch/powerpc/configs/85xx/stx_gp3_defconfig152
-rw-r--r--arch/powerpc/configs/85xx/tqm8540_defconfig147
-rw-r--r--arch/powerpc/configs/85xx/tqm8541_defconfig146
-rw-r--r--arch/powerpc/configs/85xx/tqm8555_defconfig146
-rw-r--r--arch/powerpc/configs/85xx/tqm8560_defconfig146
-rw-r--r--arch/powerpc/configs/adder875_defconfig52
-rw-r--r--arch/powerpc/configs/ep8248e_defconfig124
-rw-r--r--arch/powerpc/configs/ep88xc_defconfig47
-rw-r--r--arch/powerpc/configs/g5_defconfig62
-rw-r--r--arch/powerpc/configs/linkstation_defconfig172
-rw-r--r--arch/powerpc/configs/mpc7448_hpc2_defconfig136
-rw-r--r--arch/powerpc/configs/mpc8272_ads_defconfig126
-rw-r--r--arch/powerpc/configs/mpc83xx_defconfig151
-rw-r--r--arch/powerpc/configs/mpc85xx_defconfig230
-rw-r--r--arch/powerpc/configs/mpc8610_hpcd_defconfig316
-rw-r--r--arch/powerpc/configs/mpc8641_hpcn_defconfig210
-rw-r--r--arch/powerpc/configs/mpc866_ads_defconfig128
-rw-r--r--arch/powerpc/configs/mpc885_ads_defconfig47
-rw-r--r--arch/powerpc/configs/ppc64_defconfig66
-rw-r--r--arch/powerpc/configs/pq2fads_defconfig133
-rw-r--r--arch/powerpc/configs/prpmc2800_defconfig153
-rw-r--r--arch/powerpc/configs/sbc8641d_defconfig150
-rw-r--r--arch/powerpc/configs/storcenter_defconfig71
-rw-r--r--arch/powerpc/kernel/head_44x.S7
-rw-r--r--arch/powerpc/kernel/irq.c2
-rw-r--r--arch/powerpc/kernel/legacy_serial.c5
-rw-r--r--arch/powerpc/kernel/ppc_ksyms.c2
-rw-r--r--arch/powerpc/kernel/prom_init_check.sh14
-rw-r--r--arch/powerpc/kernel/vdso.c2
-rw-r--r--arch/powerpc/lib/Makefile2
-rw-r--r--arch/powerpc/lib/crtsavres.S229
-rw-r--r--arch/powerpc/mm/hash_low_64.S4
-rw-r--r--arch/powerpc/platforms/52xx/lite5200_pm.c14
-rw-r--r--arch/powerpc/platforms/85xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/cell/spu_base.c44
-rw-r--r--arch/powerpc/platforms/cell/spufs/run.c21
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c19
-rw-r--r--arch/powerpc/platforms/pseries/eeh_driver.c11
-rw-r--r--arch/powerpc/platforms/pseries/nvram.c4
-rw-r--r--arch/powerpc/xmon/xmon.c1
-rw-r--r--arch/x86/Kconfig58
-rw-r--r--arch/x86/Kconfig.cpu4
-rw-r--r--arch/x86/Makefile4
-rw-r--r--arch/x86/boot/compressed/head_64.S5
-rw-r--r--arch/x86/boot/video-vga.c3
-rw-r--r--arch/x86/configs/i386_defconfig1711
-rw-r--r--arch/x86/configs/x86_64_defconfig1735
-rw-r--r--arch/x86/ia32/ia32entry.S6
-rw-r--r--arch/x86/kernel/Makefile4
-rw-r--r--arch/x86/kernel/acpi/realmode/wakeup.S38
-rw-r--r--arch/x86/kernel/acpi/realmode/wakeup.h5
-rw-r--r--arch/x86/kernel/acpi/sleep.c16
-rw-r--r--arch/x86/kernel/aperture_64.c307
-rw-r--r--arch/x86/kernel/apic_32.c12
-rw-r--r--arch/x86/kernel/apic_64.c36
-rw-r--r--arch/x86/kernel/apm_32.c25
-rw-r--r--arch/x86/kernel/cpu/Makefile4
-rw-r--r--arch/x86/kernel/cpu/amd.c42
-rw-r--r--arch/x86/kernel/cpu/amd_64.c211
-rw-r--r--arch/x86/kernel/cpu/bugs.c27
-rw-r--r--arch/x86/kernel/cpu/bugs_64.c (renamed from arch/x86/kernel/bugs_64.c)0
-rw-r--r--arch/x86/kernel/cpu/centaur_64.c43
-rw-r--r--arch/x86/kernel/cpu/cpu.h5
-rw-r--r--arch/x86/kernel/cpu/cpufreq/cpufreq-nforce2.c44
-rw-r--r--arch/x86/kernel/cpu/intel_64.c103
-rw-r--r--arch/x86/kernel/cpu/intel_cacheinfo.c1
-rw-r--r--arch/x86/kernel/cpu/mcheck/k7.c36
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce_64.c24
-rw-r--r--arch/x86/kernel/cpu/mcheck/p4.c90
-rw-r--r--arch/x86/kernel/early-quirks.c13
-rw-r--r--arch/x86/kernel/efi_32.c8
-rw-r--r--arch/x86/kernel/entry_64.S5
-rw-r--r--arch/x86/kernel/geode_32.c5
-rw-r--r--arch/x86/kernel/head_64.S29
-rw-r--r--arch/x86/kernel/hpet.c43
-rw-r--r--arch/x86/kernel/i387.c4
-rw-r--r--arch/x86/kernel/i8259.c (renamed from arch/x86/kernel/i8259_32.c)132
-rw-r--r--arch/x86/kernel/i8259_64.c512
-rw-r--r--arch/x86/kernel/io_apic_32.c474
-rw-r--r--arch/x86/kernel/io_apic_64.c132
-rw-r--r--arch/x86/kernel/ipi.c1
-rw-r--r--arch/x86/kernel/irq_32.c38
-rw-r--r--arch/x86/kernel/irq_64.c28
-rw-r--r--arch/x86/kernel/irqinit_32.c114
-rw-r--r--arch/x86/kernel/irqinit_64.c203
-rw-r--r--arch/x86/kernel/kvmclock.c89
-rw-r--r--arch/x86/kernel/ldt.c6
-rw-r--r--arch/x86/kernel/machine_kexec_32.c4
-rw-r--r--arch/x86/kernel/microcode.c29
-rw-r--r--arch/x86/kernel/mmconf-fam10h_64.c1
-rw-r--r--arch/x86/kernel/nmi_32.c13
-rw-r--r--arch/x86/kernel/nmi_64.c11
-rw-r--r--arch/x86/kernel/paravirt.c4
-rw-r--r--arch/x86/kernel/pci-dma.c13
-rw-r--r--arch/x86/kernel/pci-gart_64.c83
-rw-r--r--arch/x86/kernel/process.c190
-rw-r--r--arch/x86/kernel/process_32.c62
-rw-r--r--arch/x86/kernel/process_64.c36
-rw-r--r--arch/x86/kernel/pvclock.c141
-rw-r--r--arch/x86/kernel/quirks.c58
-rw-r--r--arch/x86/kernel/reboot.c18
-rw-r--r--arch/x86/kernel/reboot_fixups_32.c4
-rw-r--r--arch/x86/kernel/setup_32.c10
-rw-r--r--arch/x86/kernel/setup_64.c452
-rw-r--r--arch/x86/kernel/smpboot.c8
-rw-r--r--arch/x86/kernel/sys_i386_32.c64
-rw-r--r--arch/x86/kernel/time_32.c3
-rw-r--r--arch/x86/kernel/traps_64.c3
-rw-r--r--arch/x86/kernel/tsc_32.c24
-rw-r--r--arch/x86/kernel/tsc_64.c2
-rw-r--r--arch/x86/kernel/vmlinux_32.lds.S7
-rw-r--r--arch/x86/kernel/vmlinux_64.lds.S8
-rw-r--r--arch/x86/kernel/vsmp_64.c3
-rw-r--r--arch/x86/kvm/i8254.c9
-rw-r--r--arch/x86/kvm/lapic.c1
-rw-r--r--arch/x86/kvm/mmu.c19
-rw-r--r--arch/x86/kvm/vmx.c19
-rw-r--r--arch/x86/kvm/x86.c91
-rw-r--r--arch/x86/lib/copy_user_64.S25
-rw-r--r--arch/x86/lib/copy_user_nocache_64.S25
-rw-r--r--arch/x86/math-emu/reg_constant.c8
-rw-r--r--arch/x86/mm/discontig_32.c54
-rw-r--r--arch/x86/mm/dump_pagetables.c2
-rw-r--r--arch/x86/mm/fault.c4
-rw-r--r--arch/x86/mm/init_32.c18
-rw-r--r--arch/x86/mm/init_64.c20
-rw-r--r--arch/x86/mm/ioremap.c10
-rw-r--r--arch/x86/mm/k8topology_64.c13
-rw-r--r--arch/x86/mm/pageattr.c39
-rw-r--r--arch/x86/mm/pgtable.c2
-rw-r--r--arch/x86/mm/srat_64.c3
-rw-r--r--arch/x86/pci/Makefile_321
-rw-r--r--arch/x86/pci/Makefile_642
-rw-r--r--arch/x86/pci/acpi.c1
-rw-r--r--arch/x86/pci/amd_bus.c (renamed from arch/x86/pci/k8-bus_64.c)32
-rw-r--r--arch/x86/pci/direct.c25
-rw-r--r--arch/x86/pci/irq.c261
-rw-r--r--arch/x86/pci/mmconfig-shared.c2
-rw-r--r--arch/x86/pci/pci.h1
-rw-r--r--arch/x86/vdso/vma.c2
-rw-r--r--arch/x86/xen/Kconfig13
-rw-r--r--arch/x86/xen/Makefile2
-rw-r--r--arch/x86/xen/enlighten.c184
-rw-r--r--arch/x86/xen/manage.c143
-rw-r--r--arch/x86/xen/mmu.c343
-rw-r--r--arch/x86/xen/mmu.h34
-rw-r--r--arch/x86/xen/multicalls.c40
-rw-r--r--arch/x86/xen/multicalls.h12
-rw-r--r--arch/x86/xen/setup.c5
-rw-r--r--arch/x86/xen/smp.c8
-rw-r--r--arch/x86/xen/suspend.c45
-rw-r--r--arch/x86/xen/time.c145
-rw-r--r--arch/x86/xen/xen-head.S11
-rw-r--r--arch/x86/xen/xen-ops.h11
-rw-r--r--block/as-iosched.c2
-rw-r--r--drivers/acpi/ac.c8
-rw-r--r--drivers/acpi/bay.c3
-rw-r--r--drivers/acpi/dock.c3
-rw-r--r--drivers/acpi/glue.c3
-rw-r--r--drivers/acpi/sleep/main.c5
-rw-r--r--drivers/acpi/sleep/proc.c5
-rw-r--r--drivers/acpi/video.c3
-rw-r--r--drivers/ata/Kconfig10
-rw-r--r--drivers/ata/ahci.c46
-rw-r--r--drivers/ata/ata_piix.c7
-rw-r--r--drivers/ata/libata-core.c4
-rw-r--r--drivers/ata/libata-scsi.c16
-rw-r--r--drivers/ata/libata-sff.c30
-rw-r--r--drivers/ata/libata.h2
-rw-r--r--drivers/ata/pata_pcmcia.c2
-rw-r--r--drivers/ata/sata_mv.c21
-rw-r--r--drivers/ata/sata_sil24.c1
-rw-r--r--drivers/ata/sata_uli.c1
-rw-r--r--drivers/atm/he.c11
-rw-r--r--drivers/atm/he.h13
-rw-r--r--drivers/atm/iphase.c27
-rw-r--r--drivers/auxdisplay/Kconfig2
-rw-r--r--drivers/auxdisplay/cfag12864b.c4
-rw-r--r--drivers/auxdisplay/cfag12864bfb.c4
-rw-r--r--drivers/auxdisplay/ks0108.c4
-rw-r--r--drivers/base/node.c4
-rw-r--r--drivers/base/power/trace.c2
-rw-r--r--drivers/block/cciss.c70
-rw-r--r--drivers/char/agp/agp.h6
-rw-r--r--drivers/char/agp/alpha-agp.c4
-rw-r--r--drivers/char/agp/amd-k7-agp.c4
-rw-r--r--drivers/char/agp/amd64-agp.c89
-rw-r--r--drivers/char/agp/ati-agp.c4
-rw-r--r--drivers/char/agp/backend.c16
-rw-r--r--drivers/char/agp/compat_ioctl.c2
-rw-r--r--drivers/char/agp/efficeon-agp.c6
-rw-r--r--drivers/char/agp/frontend.c12
-rw-r--r--drivers/char/agp/generic.c35
-rw-r--r--drivers/char/agp/hp-agp.c6
-rw-r--r--drivers/char/agp/i460-agp.c2
-rw-r--r--drivers/char/agp/intel-agp.c239
-rw-r--r--drivers/char/agp/nvidia-agp.c4
-rw-r--r--drivers/char/agp/parisc-agp.c6
-rw-r--r--drivers/char/agp/sgi-agp.c8
-rw-r--r--drivers/char/agp/sworks-agp.c6
-rw-r--r--drivers/char/agp/uninorth-agp.c10
-rw-r--r--drivers/char/agp/via-agp.c13
-rw-r--r--drivers/char/drm/ati_pcigart.c8
-rw-r--r--drivers/char/drm/drm.h2
-rw-r--r--drivers/char/drm/drm_drv.c7
-rw-r--r--drivers/char/drm/drm_pciids.h17
-rw-r--r--drivers/char/drm/i915_drv.c1
-rw-r--r--drivers/char/drm/i915_drv.h11
-rw-r--r--drivers/char/drm/i915_irq.c4
-rw-r--r--drivers/char/drm/r300_cmdbuf.c117
-rw-r--r--drivers/char/drm/r300_reg.h242
-rw-r--r--drivers/char/drm/radeon_cp.c1148
-rw-r--r--drivers/char/drm/radeon_drm.h8
-rw-r--r--drivers/char/drm/radeon_drv.h251
-rw-r--r--drivers/char/drm/radeon_irq.c2
-rw-r--r--drivers/char/drm/radeon_microcode.h1844
-rw-r--r--drivers/char/drm/radeon_state.c17
-rw-r--r--drivers/char/hvc_xen.c61
-rw-r--r--drivers/char/tty_io.c2
-rw-r--r--drivers/char/tty_ioctl.c7
-rw-r--r--drivers/connector/connector.c40
-rw-r--r--drivers/firewire/Kconfig32
-rw-r--r--drivers/firewire/fw-cdev.c9
-rw-r--r--drivers/firewire/fw-ohci.c110
-rw-r--r--drivers/firewire/fw-sbp2.c3
-rw-r--r--drivers/firewire/fw-transaction.c52
-rw-r--r--drivers/gpio/Kconfig14
-rw-r--r--drivers/gpio/pca953x.c2
-rw-r--r--drivers/hwmon/abituguru3.c18
-rw-r--r--drivers/hwmon/adt7473.c3
-rw-r--r--drivers/hwmon/hdaps.c6
-rw-r--r--drivers/hwmon/lm75.c20
-rw-r--r--drivers/hwmon/lm85.c25
-rw-r--r--drivers/i2c/busses/i2c-s3c2410.c28
-rw-r--r--drivers/ide/arm/palm_bk3710.c22
-rw-r--r--drivers/ide/ide-probe.c2
-rw-r--r--drivers/ide/ide-proc.c2
-rw-r--r--drivers/ide/ide-taskfile.c6
-rw-r--r--drivers/ide/ide.c24
-rw-r--r--drivers/ide/legacy/ide-cs.c3
-rw-r--r--drivers/ieee1394/Kconfig118
-rw-r--r--drivers/infiniband/core/uverbs_main.c2
-rw-r--r--drivers/infiniband/hw/mthca/mthca_memfree.c6
-rw-r--r--drivers/infiniband/hw/nes/nes_verbs.c4
-rw-r--r--drivers/input/ff-core.c18
-rw-r--r--drivers/input/misc/Kconfig1
-rw-r--r--drivers/input/mouse/appletouch.c49
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h7
-rw-r--r--drivers/input/serio/i8042.c8
-rw-r--r--drivers/input/xen-kbdfront.c20
-rw-r--r--drivers/lguest/lg.h1
-rw-r--r--drivers/lguest/x86/core.c15
-rw-r--r--drivers/macintosh/mediabay.c4
-rw-r--r--drivers/macintosh/smu.c5
-rw-r--r--drivers/macintosh/therm_adt746x.c13
-rw-r--r--drivers/md/dm-crypt.c1
-rw-r--r--drivers/md/md.c6
-rw-r--r--drivers/md/raid10.c2
-rw-r--r--drivers/md/raid5.c7
-rw-r--r--drivers/media/common/ir-keymaps.c38
-rw-r--r--drivers/media/common/tuners/tda18271-common.c10
-rw-r--r--drivers/media/common/tuners/tda18271-fe.c53
-rw-r--r--drivers/media/common/tuners/xc5000.c30
-rw-r--r--drivers/media/common/tuners/xc5000_priv.h1
-rw-r--r--drivers/media/dvb/dvb-usb/gl861.c27
-rw-r--r--drivers/media/dvb/dvb-usb/umt-010.c2
-rw-r--r--drivers/media/dvb/frontends/au8522.c29
-rw-r--r--drivers/media/dvb/frontends/stv0299.c15
-rw-r--r--drivers/media/dvb/frontends/tda10023.c20
-rw-r--r--drivers/media/dvb/frontends/tda1004x.c29
-rw-r--r--drivers/media/dvb/ttpci/Kconfig1
-rw-r--r--drivers/media/dvb/ttpci/av7110_hw.c5
-rw-r--r--drivers/media/video/Kconfig8
-rw-r--r--drivers/media/video/Makefile2
-rw-r--r--drivers/media/video/au0828/au0828-cards.c18
-rw-r--r--drivers/media/video/cx18/Kconfig4
-rw-r--r--drivers/media/video/cx18/cx18-av-core.c73
-rw-r--r--drivers/media/video/cx18/cx18-av-core.h16
-rw-r--r--drivers/media/video/cx18/cx18-cards.c84
-rw-r--r--drivers/media/video/cx18/cx18-cards.h50
-rw-r--r--drivers/media/video/cx18/cx18-dvb.c17
-rw-r--r--drivers/media/video/cx18/cx18-gpio.c26
-rw-r--r--drivers/media/video/cx18/cx18-gpio.h1
-rw-r--r--drivers/media/video/cx18/cx18-i2c.c2
-rw-r--r--drivers/media/video/cx25840/cx25840-core.c2
-rw-r--r--drivers/media/video/cx88/cx88-alsa.c6
-rw-r--r--drivers/media/video/em28xx/em28xx-audio.c18
-rw-r--r--drivers/media/video/em28xx/em28xx-cards.c4
-rw-r--r--drivers/media/video/em28xx/em28xx-dvb.c10
-rw-r--r--drivers/media/video/em28xx/em28xx-reg.h1
-rw-r--r--drivers/media/video/em28xx/em28xx-video.c24
-rw-r--r--drivers/media/video/pxa_camera.c4
-rw-r--r--drivers/media/video/saa7134/saa7134-alsa.c8
-rw-r--r--drivers/media/video/saa7134/saa7134-cards.c56
-rw-r--r--drivers/media/video/saa7134/saa7134-dvb.c43
-rw-r--r--drivers/media/video/saa7134/saa7134-empress.c37
-rw-r--r--drivers/media/video/saa7134/saa7134-input.c9
-rw-r--r--drivers/media/video/soc_camera.c16
-rw-r--r--drivers/media/video/uvc/Makefile3
-rw-r--r--drivers/media/video/uvc/uvc_ctrl.c1256
-rw-r--r--drivers/media/video/uvc/uvc_driver.c1955
-rw-r--r--drivers/media/video/uvc/uvc_isight.c134
-rw-r--r--drivers/media/video/uvc/uvc_queue.c477
-rw-r--r--drivers/media/video/uvc/uvc_status.c207
-rw-r--r--drivers/media/video/uvc/uvc_v4l2.c1105
-rw-r--r--drivers/media/video/uvc/uvc_video.c934
-rw-r--r--drivers/media/video/uvc/uvcvideo.h796
-rw-r--r--drivers/media/video/videodev.c245
-rw-r--r--drivers/media/video/vivi.c7
-rw-r--r--drivers/mmc/host/pxamci.c13
-rw-r--r--drivers/mmc/host/sdhci.c34
-rw-r--r--drivers/net/3c59x.c5
-rw-r--r--drivers/net/atlx/atl1.c1
-rw-r--r--drivers/net/e100.c2
-rw-r--r--drivers/net/e1000/e1000_ethtool.c2
-rw-r--r--drivers/net/e1000e/netdev.c3
-rw-r--r--drivers/net/enc28j60.c87
-rw-r--r--drivers/net/hamradio/dmascc.c2
-rw-r--r--drivers/net/ibm_newemac/Kconfig1
-rw-r--r--drivers/net/igb/igb_main.c3
-rw-r--r--drivers/net/ipg.c16
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c3
-rw-r--r--drivers/net/netxen/netxen_nic.h18
-rw-r--r--drivers/net/netxen/netxen_nic_ethtool.c6
-rw-r--r--drivers/net/netxen/netxen_nic_hw.c112
-rw-r--r--drivers/net/netxen/netxen_nic_init.c46
-rw-r--r--drivers/net/netxen/netxen_nic_isr.c4
-rw-r--r--drivers/net/netxen/netxen_nic_main.c137
-rw-r--r--drivers/net/netxen/netxen_nic_niu.c22
-rw-r--r--drivers/net/pcmcia/axnet_cs.c2
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c3
-rw-r--r--drivers/net/pppoe.c2
-rw-r--r--drivers/net/qla3xxx.c2
-rw-r--r--drivers/net/r6040.c2
-rw-r--r--drivers/net/s2io.c35
-rw-r--r--drivers/net/s2io.h4
-rw-r--r--drivers/net/sky2.c1
-rw-r--r--drivers/net/tc35815.c4
-rw-r--r--drivers/net/tun.c15
-rw-r--r--drivers/net/wan/x25_asy.c3
-rw-r--r--drivers/net/wireless/b43/b43.h1
-rw-r--r--drivers/net/wireless/b43/dma.c65
-rw-r--r--drivers/net/wireless/b43/leds.c3
-rw-r--r--drivers/net/wireless/b43/main.c28
-rw-r--r--drivers/net/wireless/b43legacy/dma.c2
-rw-r--r--drivers/net/wireless/b43legacy/main.c6
-rw-r--r--drivers/net/wireless/hostap/hostap_80211_rx.c8
-rw-r--r--drivers/net/wireless/hostap/hostap_ap.c2
-rw-r--r--drivers/net/wireless/hostap/hostap_cs.c8
-rw-r--r--drivers/net/wireless/hostap/hostap_hw.c10
-rw-r--r--drivers/net/wireless/hostap/hostap_main.c5
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c33
-rw-r--r--drivers/net/wireless/iwlwifi/iwl4965-base.c39
-rw-r--r--drivers/net/wireless/prism54/islpci_eth.c2
-rw-r--r--drivers/net/wireless/rt2x00/Kconfig19
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c36
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h1
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c38
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00mac.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00pci.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00usb.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c37
-rw-r--r--drivers/pci/access.c14
-rw-r--r--drivers/pci/hotplug/acpiphp_glue.c17
-rw-r--r--drivers/pci/pci-sysfs.c4
-rw-r--r--drivers/pci/pci.h2
-rw-r--r--drivers/pci/quirks.c43
-rw-r--r--drivers/rtc/interface.c102
-rw-r--r--drivers/rtc/rtc-sa1100.c4
-rw-r--r--drivers/rtc/rtc-x1205.c111
-rw-r--r--drivers/scsi/dpt/dptsig.h3
-rw-r--r--drivers/scsi/esp_scsi.c22
-rw-r--r--drivers/scsi/hosts.c9
-rw-r--r--drivers/scsi/ses.c2
-rw-r--r--drivers/scsi/sr.c3
-rw-r--r--drivers/serial/bfin_5xx.c40
-rw-r--r--drivers/serial/serial_core.c4
-rw-r--r--drivers/spi/spidev.c10
-rw-r--r--drivers/ssb/main.c12
-rw-r--r--drivers/thermal/Kconfig9
-rw-r--r--drivers/thermal/thermal_sys.c4
-rw-r--r--drivers/usb/class/cdc-acm.c3
-rw-r--r--drivers/usb/core/hcd.c47
-rw-r--r--drivers/usb/core/hcd.h2
-rw-r--r--drivers/usb/core/hub.c24
-rw-r--r--drivers/usb/core/quirks.c3
-rw-r--r--drivers/usb/host/ehci.h19
-rw-r--r--drivers/usb/host/ohci-at91.c1
-rw-r--r--drivers/usb/host/ohci-au1xxx.c1
-rw-r--r--drivers/usb/host/ohci-ep93xx.c1
-rw-r--r--drivers/usb/host/ohci-hcd.c15
-rw-r--r--drivers/usb/host/ohci-hub.c53
-rw-r--r--drivers/usb/host/ohci-lh7a404.c1
-rw-r--r--drivers/usb/host/ohci-omap.c1
-rw-r--r--drivers/usb/host/ohci-pci.c1
-rw-r--r--drivers/usb/host/ohci-pnx4008.c1
-rw-r--r--drivers/usb/host/ohci-pnx8550.c1
-rw-r--r--drivers/usb/host/ohci-ppc-of.c1
-rw-r--r--drivers/usb/host/ohci-ppc-soc.c1
-rw-r--r--drivers/usb/host/ohci-ps3.c1
-rw-r--r--drivers/usb/host/ohci-pxa27x.c1
-rw-r--r--drivers/usb/host/ohci-q.c12
-rw-r--r--drivers/usb/host/ohci-s3c2410.c1
-rw-r--r--drivers/usb/host/ohci-sa1111.c1
-rw-r--r--drivers/usb/host/ohci-sh.c1
-rw-r--r--drivers/usb/host/ohci-sm501.c1
-rw-r--r--drivers/usb/host/ohci-ssb.c1
-rw-r--r--drivers/usb/host/u132-hcd.c11
-rw-r--r--drivers/usb/misc/sisusbvga/sisusb.c2
-rw-r--r--drivers/usb/serial/ftdi_sio.c1
-rw-r--r--drivers/usb/serial/ftdi_sio.h3
-rw-r--r--drivers/usb/serial/ipaq.c7
-rw-r--r--drivers/usb/serial/option.c1
-rw-r--r--drivers/usb/serial/pl2303.c1
-rw-r--r--drivers/usb/serial/pl2303.h1
-rw-r--r--drivers/usb/storage/unusual_devs.h8
-rw-r--r--drivers/video/Kconfig3
-rw-r--r--drivers/video/fsl-diu-fb.c29
-rw-r--r--drivers/video/pxafb.c52
-rw-r--r--drivers/video/w100fb.c1
-rw-r--r--drivers/video/xen-fbfront.c211
-rw-r--r--drivers/watchdog/hpwdt.c182
-rw-r--r--drivers/xen/Makefile2
-rw-r--r--drivers/xen/balloon.c10
-rw-r--r--drivers/xen/events.c116
-rw-r--r--drivers/xen/grant-table.c4
-rw-r--r--drivers/xen/manage.c252
-rw-r--r--drivers/xen/xenbus/xenbus_comms.c23
-rw-r--r--fs/9p/v9fs_vfs.h2
-rw-r--r--fs/9p/vfs_file.c4
-rw-r--r--fs/9p/vfs_inode.c18
-rw-r--r--fs/Kconfig2
-rw-r--r--fs/binfmt_elf.c3
-rw-r--r--fs/block_dev.c10
-rw-r--r--fs/buffer.c13
-rw-r--r--fs/dcache.c68
-rw-r--r--fs/ecryptfs/miscdev.c2
-rw-r--r--fs/exec.c8
-rw-r--r--fs/ext3/super.c4
-rw-r--r--fs/ext4/resize.c3
-rw-r--r--fs/ext4/super.c4
-rw-r--r--fs/fuse/inode.c4
-rw-r--r--fs/gfs2/bmap.c23
-rw-r--r--fs/gfs2/rgrp.c2
-rw-r--r--fs/libfs.c28
-rw-r--r--fs/locks.c6
-rw-r--r--fs/namei.c26
-rw-r--r--fs/nfs/mount_clnt.c5
-rw-r--r--fs/nfs/super.c76
-rw-r--r--fs/nfs/write.c7
-rw-r--r--fs/ocfs2/cluster/nodemanager.c74
-rw-r--r--fs/ocfs2/cluster/nodemanager.h4
-rw-r--r--fs/ocfs2/stack_o2cb.c41
-rw-r--r--fs/ocfs2/stack_user.c3
-rw-r--r--fs/ocfs2/stackglue.c119
-rw-r--r--fs/ocfs2/stackglue.h19
-rw-r--r--fs/open.c37
-rw-r--r--fs/pipe.c10
-rw-r--r--fs/proc/proc_misc.c16
-rw-r--r--fs/proc/task_mmu.c80
-rw-r--r--fs/reiserfs/super.c4
-rw-r--r--fs/select.c2
-rw-r--r--fs/udf/super.c57
-rw-r--r--fs/udf/udfdecl.h2
-rw-r--r--fs/utimes.c59
-rw-r--r--include/asm-alpha/core_mcpcia.h2
-rw-r--r--include/asm-alpha/core_t2.h14
-rw-r--r--include/asm-alpha/io.h6
-rw-r--r--include/asm-alpha/mmu_context.h6
-rw-r--r--include/asm-alpha/percpu.h74
-rw-r--r--include/asm-alpha/system.h10
-rw-r--r--include/asm-alpha/vga.h6
-rw-r--r--include/asm-blackfin/mach-bf527/bfin_serial_5xx.h2
-rw-r--r--include/asm-blackfin/mach-bf533/bfin_serial_5xx.h2
-rw-r--r--include/asm-blackfin/mach-bf537/bfin_serial_5xx.h2
-rw-r--r--include/asm-blackfin/mach-bf548/bfin_serial_5xx.h6
-rw-r--r--include/asm-blackfin/mach-bf561/bfin_serial_5xx.h2
-rw-r--r--include/asm-generic/Kbuild.asm2
-rw-r--r--include/asm-generic/atomic.h2
-rw-r--r--include/asm-generic/pgtable.h57
-rw-r--r--include/asm-generic/vmlinux.lds.h14
-rw-r--r--include/asm-ia64/sn/simulator.h7
-rw-r--r--include/asm-mips/atomic.h4
-rw-r--r--include/asm-mips/cpu-info.h4
-rw-r--r--include/asm-mips/gic.h4
-rw-r--r--include/asm-mips/lasat/serial.h4
-rw-r--r--include/asm-mips/mach-au1x00/au1000.h1
-rw-r--r--include/asm-mips/pgtable-bits.h2
-rw-r--r--include/asm-powerpc/Kbuild1
-rw-r--r--include/asm-powerpc/mediabay.h12
-rw-r--r--include/asm-powerpc/spu.h1
-rw-r--r--include/asm-powerpc/spu_csa.h2
-rw-r--r--include/asm-powerpc/system.h2
-rw-r--r--include/asm-x86/apic.h4
-rw-r--r--include/asm-x86/asm.h40
-rw-r--r--include/asm-x86/atomic_64.h6
-rw-r--r--include/asm-x86/bitops.h68
-rw-r--r--include/asm-x86/cpufeature.h4
-rw-r--r--include/asm-x86/current.h42
-rw-r--r--include/asm-x86/current_32.h17
-rw-r--r--include/asm-x86/current_64.h27
-rw-r--r--include/asm-x86/fixmap_32.h8
-rw-r--r--include/asm-x86/gart.h63
-rw-r--r--include/asm-x86/geode.h4
-rw-r--r--include/asm-x86/hardirq.h6
-rw-r--r--include/asm-x86/i8259.h2
-rw-r--r--include/asm-x86/io_apic.h13
-rw-r--r--include/asm-x86/kvm_host.h4
-rw-r--r--include/asm-x86/kvm_para.h33
-rw-r--r--include/asm-x86/mach-default/smpboot_hooks.h4
-rw-r--r--include/asm-x86/mmconfig.h12
-rw-r--r--include/asm-x86/msr-index.h4
-rw-r--r--include/asm-x86/msr.h2
-rw-r--r--include/asm-x86/nmi.h27
-rw-r--r--include/asm-x86/page.h11
-rw-r--r--include/asm-x86/page_32.h11
-rw-r--r--include/asm-x86/paravirt.h43
-rw-r--r--include/asm-x86/pci.h2
-rw-r--r--include/asm-x86/pci_32.h14
-rw-r--r--include/asm-x86/pgtable.h72
-rw-r--r--include/asm-x86/processor-flags.h6
-rw-r--r--include/asm-x86/processor.h6
-rw-r--r--include/asm-x86/ptrace.h8
-rw-r--r--include/asm-x86/pvclock-abi.h42
-rw-r--r--include/asm-x86/pvclock.h13
-rw-r--r--include/asm-x86/reboot.h2
-rw-r--r--include/asm-x86/required-features.h6
-rw-r--r--include/asm-x86/resume-trace.h2
-rw-r--r--include/asm-x86/seccomp_32.h1
-rw-r--r--include/asm-x86/seccomp_64.h1
-rw-r--r--include/asm-x86/string_32.h323
-rw-r--r--include/asm-x86/suspend_32.h5
-rw-r--r--include/asm-x86/system.h2
-rw-r--r--include/asm-x86/thread_info.h248
-rw-r--r--include/asm-x86/thread_info_32.h205
-rw-r--r--include/asm-x86/thread_info_64.h195
-rw-r--r--include/asm-x86/unistd_64.h2
-rw-r--r--include/asm-x86/vm86.h11
-rw-r--r--include/asm-x86/xen/hypercall.h11
-rw-r--r--include/asm-x86/xen/page.h29
-rw-r--r--include/asm-x86/xor_32.h5
-rw-r--r--include/asm-x86/xor_64.h5
-rw-r--r--include/linux/Kbuild3
-rw-r--r--include/linux/a.out.h8
-rw-r--r--include/linux/agp_backend.h16
-rw-r--r--include/linux/agpgart.h4
-rw-r--r--include/linux/audit.h2
-rw-r--r--include/linux/bootmem.h2
-rw-r--r--include/linux/capability.h2
-rw-r--r--include/linux/cfag12864b.h2
-rw-r--r--include/linux/console.h2
-rw-r--r--include/linux/cpumask.h4
-rw-r--r--include/linux/dcache.h2
-rw-r--r--include/linux/debug_locks.h10
-rw-r--r--include/linux/firmware.h2
-rw-r--r--include/linux/fs.h3
-rw-r--r--include/linux/i2c.h2
-rw-r--r--include/linux/if_tunnel.h2
-rw-r--r--include/linux/inet_lro.h6
-rw-r--r--include/linux/input.h2
-rw-r--r--include/linux/kernel.h3
-rw-r--r--include/linux/ks0108.h2
-rw-r--r--include/linux/kvm_host.h1
-rw-r--r--include/linux/netdevice.h4
-rw-r--r--include/linux/page-flags.h1
-rw-r--r--include/linux/pci_ids.h1
-rw-r--r--include/linux/rculist.h6
-rw-r--r--include/linux/resume-trace.h2
-rw-r--r--include/linux/securebits.h15
-rw-r--r--include/linux/slab.h2
-rw-r--r--include/linux/slub_def.h4
-rw-r--r--include/linux/thermal.h6
-rw-r--r--include/linux/tty_driver.h5
-rw-r--r--include/media/cx25840.h6
-rw-r--r--include/media/ir-common.h1
-rw-r--r--include/media/v4l2-dev.h4
-rw-r--r--include/net/ipv6.h6
-rw-r--r--include/net/mac80211.h9
-rw-r--r--include/net/net_namespace.h11
-rw-r--r--include/net/netfilter/nf_conntrack_extend.h1
-rw-r--r--include/net/sch_generic.h2
-rw-r--r--include/xen/events.h4
-rw-r--r--include/xen/grant_table.h3
-rw-r--r--include/xen/hvc-console.h9
-rw-r--r--include/xen/interface/elfnote.h20
-rw-r--r--include/xen/interface/features.h3
-rw-r--r--include/xen/interface/io/fbif.h29
-rw-r--r--include/xen/interface/io/kbdif.h2
-rw-r--r--include/xen/interface/memory.h12
-rw-r--r--include/xen/interface/xen.h16
-rw-r--r--include/xen/xen-ops.h6
-rw-r--r--kernel/audit.c6
-rw-r--r--kernel/auditfilter.c3
-rw-r--r--kernel/capability.c21
-rw-r--r--kernel/cpuset.c10
-rw-r--r--kernel/futex.c93
-rw-r--r--kernel/hrtimer.c8
-rw-r--r--kernel/kgdb.c3
-rw-r--r--kernel/printk.c3
-rw-r--r--kernel/rcuclassic.c16
-rw-r--r--kernel/rcupreempt.c2
-rw-r--r--kernel/sched.c52
-rw-r--r--kernel/sched_rt.c66
-rw-r--r--kernel/sched_stats.h6
-rw-r--r--kernel/softlockup.c16
-rw-r--r--kernel/time/tick-broadcast.c6
-rw-r--r--kernel/workqueue.c2
-rw-r--r--lib/bug.c2
-rw-r--r--lib/debugobjects.c15
-rw-r--r--lib/radix-tree.c2
-rw-r--r--lib/ts_bm.c2
-rw-r--r--mm/allocpercpu.c2
-rw-r--r--mm/bootmem.c6
-rw-r--r--mm/memory.c83
-rw-r--r--mm/mempolicy.c6
-rw-r--r--mm/migrate.c12
-rw-r--r--mm/mprotect.c10
-rw-r--r--mm/page_alloc.c1
-rw-r--r--mm/slab.c5
-rw-r--r--mm/slub.c14
-rw-r--r--mm/sparse-vmemmap.c2
-rw-r--r--net/atm/br2684.c78
-rw-r--r--net/core/dev.c44
-rw-r--r--net/core/fib_rules.c4
-rw-r--r--net/core/filter.c1
-rw-r--r--net/core/net_namespace.c3
-rw-r--r--net/core/skbuff.c17
-rw-r--r--net/ipv4/inet_connection_sock.c6
-rw-r--r--net/ipv4/inet_fragment.c16
-rw-r--r--net/ipv4/inet_lro.c3
-rw-r--r--net/ipv4/ip_fragment.c2
-rw-r--r--net/ipv4/netfilter/nf_nat_core.c3
-rw-r--r--net/ipv4/raw.c2
-rw-r--r--net/ipv4/tcp.c9
-rw-r--r--net/ipv4/tcp_ipv4.c10
-rw-r--r--net/ipv4/xfrm4_mode_tunnel.c2
-rw-r--r--net/ipv6/ip6_input.c9
-rw-r--r--net/ipv6/ipv6_sockglue.c11
-rw-r--r--net/ipv6/netfilter/ip6table_mangle.c2
-rw-r--r--net/ipv6/netfilter/nf_conntrack_reasm.c3
-rw-r--r--net/ipv6/reassembly.c2
-rw-r--r--net/ipv6/route.c6
-rw-r--r--net/ipv6/sit.c44
-rw-r--r--net/ipv6/tcp_ipv6.c6
-rw-r--r--net/mac80211/key.c9
-rw-r--r--net/mac80211/tx.c13
-rw-r--r--net/mac80211/wext.c10
-rw-r--r--net/mac80211/wme.c5
-rw-r--r--net/netfilter/nf_conntrack_extend.c9
-rw-r--r--net/netfilter/nf_conntrack_h323_main.c22
-rw-r--r--net/netfilter/nf_conntrack_proto_tcp.c13
-rw-r--r--net/netlabel/netlabel_unlabeled.c2
-rw-r--r--net/netlink/af_netlink.c2
-rw-r--r--net/netlink/attr.c7
-rw-r--r--net/netlink/genetlink.c15
-rw-r--r--net/sched/Kconfig11
-rw-r--r--net/sched/sch_api.c6
-rw-r--r--net/sched/sch_atm.c7
-rw-r--r--net/sched/sch_cbq.c8
-rw-r--r--net/sched/sch_dsmark.c2
-rw-r--r--net/sched/sch_generic.c2
-rw-r--r--net/sched/sch_hfsc.c6
-rw-r--r--net/sched/sch_htb.c27
-rw-r--r--net/sched/sch_ingress.c2
-rw-r--r--net/sched/sch_prio.c2
-rw-r--r--net/sched/sch_sfq.c2
-rw-r--r--net/sctp/associola.c13
-rw-r--r--net/sctp/protocol.c15
-rw-r--r--net/sctp/socket.c4
-rw-r--r--net/sunrpc/auth_gss/svcauth_gss.c12
-rw-r--r--net/unix/af_unix.c75
-rw-r--r--net/wireless/reg.c18
-rw-r--r--security/commoncap.c13
-rw-r--r--security/device_cgroup.c2
-rw-r--r--sound/isa/sb/sb_mixer.c4
-rw-r--r--sound/pci/aw2/aw2-alsa.c4
-rw-r--r--sound/pci/oxygen/oxygen_mixer.c12
-rw-r--r--virt/kvm/ioapic.c33
776 files changed, 26749 insertions, 11359 deletions
diff --git a/.gitignore b/.gitignore
index d24ad506e799..869e1a3b64b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,10 @@
3# subdirectories here. Add them in the ".gitignore" file 3# subdirectories here. Add them in the ".gitignore" file
4# in that subdirectory instead. 4# in that subdirectory instead.
5# 5#
6# NOTE! Please use 'git-ls-files -i --exclude-standard'
7# command after changing this file, to see if there are
8# any tracked files which get ignored after the change.
9#
6# Normal rules 10# Normal rules
7# 11#
8.* 12.*
@@ -18,18 +22,21 @@
18*.lst 22*.lst
19*.symtypes 23*.symtypes
20*.order 24*.order
25*.elf
26*.bin
27*.gz
21 28
22# 29#
23# Top-level generic files 30# Top-level generic files
24# 31#
25tags 32tags
26TAGS 33TAGS
27vmlinux* 34vmlinux
28!vmlinux.lds.S
29System.map 35System.map
30Module.markers 36Module.markers
31Module.symvers 37Module.symvers
32!.gitignore 38!.gitignore
39!.mailmap
33 40
34# 41#
35# Generated include files 42# Generated include files
diff --git a/CREDITS b/CREDITS
index 8fec7b3f96d5..e97bea06b59f 100644
--- a/CREDITS
+++ b/CREDITS
@@ -2611,8 +2611,9 @@ S: Perth, Western Australia
2611S: Australia 2611S: Australia
2612 2612
2613N: Miguel Ojeda Sandonis 2613N: Miguel Ojeda Sandonis
2614E: maxextreme@gmail.com 2614E: miguel.ojeda.sandonis@gmail.com
2615W: http://maxextreme.googlepages.com/ 2615W: http://miguelojeda.es
2616W: http://jair.lab.fi.uva.es/~migojed/
2616D: Author of the ks0108, cfag12864b and cfag12864bfb auxiliary display drivers. 2617D: Author of the ks0108, cfag12864b and cfag12864bfb auxiliary display drivers.
2617D: Maintainer of the auxiliary display drivers tree (drivers/auxdisplay/*) 2618D: Maintainer of the auxiliary display drivers tree (drivers/auxdisplay/*)
2618S: C/ Mieses 20, 9-B 2619S: C/ Mieses 20, 9-B
diff --git a/Documentation/DocBook/kgdb.tmpl b/Documentation/DocBook/kgdb.tmpl
index 028a8444d95e..e8acd1f03456 100644
--- a/Documentation/DocBook/kgdb.tmpl
+++ b/Documentation/DocBook/kgdb.tmpl
@@ -84,10 +84,9 @@
84 runs an instance of gdb against the vmlinux file which contains 84 runs an instance of gdb against the vmlinux file which contains
85 the symbols (not boot image such as bzImage, zImage, uImage...). 85 the symbols (not boot image such as bzImage, zImage, uImage...).
86 In gdb the developer specifies the connection parameters and 86 In gdb the developer specifies the connection parameters and
87 connects to kgdb. Depending on which kgdb I/O modules exist in 87 connects to kgdb. The type of connection a developer makes with
88 the kernel for a given architecture, it may be possible to debug 88 gdb depends on the availability of kgdb I/O modules compiled as
89 the test machine's kernel with the development machine using a 89 builtin's or kernel modules in the test machine's kernel.
90 rs232 or ethernet connection.
91 </para> 90 </para>
92 </chapter> 91 </chapter>
93 <chapter id="CompilingAKernel"> 92 <chapter id="CompilingAKernel">
@@ -223,7 +222,7 @@
223 </para> 222 </para>
224 <para> 223 <para>
225 IMPORTANT NOTE: Using this option with kgdb over the console 224 IMPORTANT NOTE: Using this option with kgdb over the console
226 (kgdboc) or kgdb over ethernet (kgdboe) is not supported. 225 (kgdboc) is not supported.
227 </para> 226 </para>
228 </sect1> 227 </sect1>
229 </chapter> 228 </chapter>
@@ -249,18 +248,11 @@
249 (gdb) target remote /dev/ttyS0 248 (gdb) target remote /dev/ttyS0
250 </programlisting> 249 </programlisting>
251 <para> 250 <para>
252 Example (kgdb to a terminal server): 251 Example (kgdb to a terminal server on tcp port 2012):
253 </para> 252 </para>
254 <programlisting> 253 <programlisting>
255 % gdb ./vmlinux 254 % gdb ./vmlinux
256 (gdb) target remote udp:192.168.2.2:6443 255 (gdb) target remote 192.168.2.2:2012
257 </programlisting>
258 <para>
259 Example (kgdb over ethernet):
260 </para>
261 <programlisting>
262 % gdb ./vmlinux
263 (gdb) target remote udp:192.168.2.2:6443
264 </programlisting> 256 </programlisting>
265 <para> 257 <para>
266 Once connected, you can debug a kernel the way you would debug an 258 Once connected, you can debug a kernel the way you would debug an
diff --git a/Documentation/accounting/taskstats-struct.txt b/Documentation/accounting/taskstats-struct.txt
index 8aa7529f8258..cd784f46bf8a 100644
--- a/Documentation/accounting/taskstats-struct.txt
+++ b/Documentation/accounting/taskstats-struct.txt
@@ -24,6 +24,8 @@ There are three different groups of fields in the struct taskstats:
24 24
254) Per-task and per-thread context switch count statistics 254) Per-task and per-thread context switch count statistics
26 26
275) Time accounting for SMT machines
28
27Future extension should add fields to the end of the taskstats struct, and 29Future extension should add fields to the end of the taskstats struct, and
28should not change the relative position of each field within the struct. 30should not change the relative position of each field within the struct.
29 31
@@ -164,4 +166,8 @@ struct taskstats {
164 __u64 nvcsw; /* Context voluntary switch counter */ 166 __u64 nvcsw; /* Context voluntary switch counter */
165 __u64 nivcsw; /* Context involuntary switch counter */ 167 __u64 nivcsw; /* Context involuntary switch counter */
166 168
1695) Time accounting for SMT machines
170 __u64 ac_utimescaled; /* utime scaled on frequency etc */
171 __u64 ac_stimescaled; /* stime scaled on frequency etc */
172 __u64 cpu_scaled_run_real_total; /* scaled cpu_run_real_total */
167} 173}
diff --git a/Documentation/auxdisplay/cfag12864b b/Documentation/auxdisplay/cfag12864b
index b714183d4125..eb7be393a510 100644
--- a/Documentation/auxdisplay/cfag12864b
+++ b/Documentation/auxdisplay/cfag12864b
@@ -3,7 +3,7 @@
3 =================================== 3 ===================================
4 4
5License: GPLv2 5License: GPLv2
6Author & Maintainer: Miguel Ojeda Sandonis <maxextreme@gmail.com> 6Author & Maintainer: Miguel Ojeda Sandonis
7Date: 2006-10-27 7Date: 2006-10-27
8 8
9 9
@@ -22,7 +22,7 @@ Date: 2006-10-27
221. DRIVER INFORMATION 221. DRIVER INFORMATION
23--------------------- 23---------------------
24 24
25This driver support one cfag12864b display at time. 25This driver supports a cfag12864b LCD.
26 26
27 27
28--------------------- 28---------------------
diff --git a/Documentation/auxdisplay/cfag12864b-example.c b/Documentation/auxdisplay/cfag12864b-example.c
index 7bfac354d4c9..2caeea5e4993 100644
--- a/Documentation/auxdisplay/cfag12864b-example.c
+++ b/Documentation/auxdisplay/cfag12864b-example.c
@@ -4,7 +4,7 @@
4 * Description: cfag12864b LCD userspace example program 4 * Description: cfag12864b LCD userspace example program
5 * License: GPLv2 5 * License: GPLv2
6 * 6 *
7 * Author: Copyright (C) Miguel Ojeda Sandonis <maxextreme@gmail.com> 7 * Author: Copyright (C) Miguel Ojeda Sandonis
8 * Date: 2006-10-31 8 * Date: 2006-10-31
9 * 9 *
10 * This program is free software; you can redistribute it and/or modify 10 * This program is free software; you can redistribute it and/or modify
diff --git a/Documentation/auxdisplay/ks0108 b/Documentation/auxdisplay/ks0108
index 92b03b60c613..8ddda0c8ceef 100644
--- a/Documentation/auxdisplay/ks0108
+++ b/Documentation/auxdisplay/ks0108
@@ -3,7 +3,7 @@
3 ========================================== 3 ==========================================
4 4
5License: GPLv2 5License: GPLv2
6Author & Maintainer: Miguel Ojeda Sandonis <maxextreme@gmail.com> 6Author & Maintainer: Miguel Ojeda Sandonis
7Date: 2006-10-27 7Date: 2006-10-27
8 8
9 9
@@ -21,7 +21,7 @@ Date: 2006-10-27
211. DRIVER INFORMATION 211. DRIVER INFORMATION
22--------------------- 22---------------------
23 23
24This driver support the ks0108 LCD controller. 24This driver supports the ks0108 LCD controller.
25 25
26 26
27--------------------- 27---------------------
diff --git a/Documentation/cgroups.txt b/Documentation/cgroups.txt
index 824fc0274471..d9014aa0eb68 100644
--- a/Documentation/cgroups.txt
+++ b/Documentation/cgroups.txt
@@ -390,6 +390,10 @@ If you have several tasks to attach, you have to do it one after another:
390 ... 390 ...
391# /bin/echo PIDn > tasks 391# /bin/echo PIDn > tasks
392 392
393You can attach the current shell task by echoing 0:
394
395# echo 0 > tasks
396
3933. Kernel API 3973. Kernel API
394============= 398=============
395 399
diff --git a/Documentation/controllers/devices.txt b/Documentation/controllers/devices.txt
index 4dcea42432c2..7cc6e6a60672 100644
--- a/Documentation/controllers/devices.txt
+++ b/Documentation/controllers/devices.txt
@@ -13,7 +13,7 @@ either an integer or * for all. Access is a composition of r
13The root device cgroup starts with rwm to 'all'. A child device 13The root device cgroup starts with rwm to 'all'. A child device
14cgroup gets a copy of the parent. Administrators can then remove 14cgroup gets a copy of the parent. Administrators can then remove
15devices from the whitelist or add new entries. A child cgroup can 15devices from the whitelist or add new entries. A child cgroup can
16never receive a device access which is denied its parent. However 16never receive a device access which is denied by its parent. However
17when a device access is removed from a parent it will not also be 17when a device access is removed from a parent it will not also be
18removed from the child(ren). 18removed from the child(ren).
19 19
@@ -29,7 +29,11 @@ allows cgroup 1 to read and mknod the device usually known as
29 29
30 echo a > /cgroups/1/devices.deny 30 echo a > /cgroups/1/devices.deny
31 31
32will remove the default 'a *:* mrw' entry. 32will remove the default 'a *:* rwm' entry. Doing
33
34 echo a > /cgroups/1/devices.allow
35
36will add the 'a *:* rwm' entry to the whitelist.
33 37
343. Security 383. Security
35 39
diff --git a/Documentation/cpusets.txt b/Documentation/cpusets.txt
index d803c5c68ab5..1f5a924d1e56 100644
--- a/Documentation/cpusets.txt
+++ b/Documentation/cpusets.txt
@@ -154,13 +154,15 @@ browsing and modifying the cpusets presently known to the kernel. No
154new system calls are added for cpusets - all support for querying and 154new system calls are added for cpusets - all support for querying and
155modifying cpusets is via this cpuset file system. 155modifying cpusets is via this cpuset file system.
156 156
157The /proc/<pid>/status file for each task has two added lines, 157The /proc/<pid>/status file for each task has four added lines,
158displaying the tasks cpus_allowed (on which CPUs it may be scheduled) 158displaying the tasks cpus_allowed (on which CPUs it may be scheduled)
159and mems_allowed (on which Memory Nodes it may obtain memory), 159and mems_allowed (on which Memory Nodes it may obtain memory),
160in the format seen in the following example: 160in the two formats seen in the following example:
161 161
162 Cpus_allowed: ffffffff,ffffffff,ffffffff,ffffffff 162 Cpus_allowed: ffffffff,ffffffff,ffffffff,ffffffff
163 Cpus_allowed_list: 0-127
163 Mems_allowed: ffffffff,ffffffff 164 Mems_allowed: ffffffff,ffffffff
165 Mems_allowed_list: 0-63
164 166
165Each cpuset is represented by a directory in the cgroup file system 167Each cpuset is represented by a directory in the cgroup file system
166containing (on top of the standard cgroup files) the following 168containing (on top of the standard cgroup files) the following
@@ -542,7 +544,10 @@ otherwise initial value -1 that indicates the cpuset has no request.
542 2 : search cores in a package. 544 2 : search cores in a package.
543 3 : search cpus in a node [= system wide on non-NUMA system] 545 3 : search cpus in a node [= system wide on non-NUMA system]
544 ( 4 : search nodes in a chunk of node [on NUMA system] ) 546 ( 4 : search nodes in a chunk of node [on NUMA system] )
545 ( 5~ : search system wide [on NUMA system]) 547 ( 5 : search system wide [on NUMA system] )
548
549The system default is architecture dependent. The system default
550can be changed using the relax_domain_level= boot parameter.
546 551
547This file is per-cpuset and affect the sched domain where the cpuset 552This file is per-cpuset and affect the sched domain where the cpuset
548belongs to. Therefore if the flag 'sched_load_balance' of a cpuset 553belongs to. Therefore if the flag 'sched_load_balance' of a cpuset
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 5b3f31faed56..46ece3fba6f9 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -312,3 +312,12 @@ When: 2.6.26
312Why: Implementation became generic; users should now include 312Why: Implementation became generic; users should now include
313 linux/semaphore.h instead. 313 linux/semaphore.h instead.
314Who: Matthew Wilcox <willy@linux.intel.com> 314Who: Matthew Wilcox <willy@linux.intel.com>
315
316---------------------------
317
318What: CONFIG_THERMAL_HWMON
319When: January 2009
320Why: This option was introduced just to allow older lm-sensors userspace
321 to keep working over the upgrade to 2.6.26. At the scheduled time of
322 removal fixed lm-sensors (2.x or 3.x) should be readily available.
323Who: Rene Herman <rene.herman@gmail.com>
diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface
index f4a8ebc1ef1a..2d845730d4e0 100644
--- a/Documentation/hwmon/sysfs-interface
+++ b/Documentation/hwmon/sysfs-interface
@@ -2,17 +2,12 @@ Naming and data format standards for sysfs files
2------------------------------------------------ 2------------------------------------------------
3 3
4The libsensors library offers an interface to the raw sensors data 4The libsensors library offers an interface to the raw sensors data
5through the sysfs interface. See libsensors documentation and source for 5through the sysfs interface. Since lm-sensors 3.0.0, libsensors is
6further information. As of writing this document, libsensors 6completely chip-independent. It assumes that all the kernel drivers
7(from lm_sensors 2.8.3) is heavily chip-dependent. Adding or updating 7implement the standard sysfs interface described in this document.
8support for any given chip requires modifying the library's code. 8This makes adding or updating support for any given chip very easy, as
9This is because libsensors was written for the procfs interface 9libsensors, and applications using it, do not need to be modified.
10older kernel modules were using, which wasn't standardized enough. 10This is a major improvement compared to lm-sensors 2.
11Recent versions of libsensors (from lm_sensors 2.8.2 and later) have
12support for the sysfs interface, though.
13
14The new sysfs interface was designed to be as chip-independent as
15possible.
16 11
17Note that motherboards vary widely in the connections to sensor chips. 12Note that motherboards vary widely in the connections to sensor chips.
18There is no standard that ensures, for example, that the second 13There is no standard that ensures, for example, that the second
@@ -35,19 +30,17 @@ access this data in a simple and consistent way. That said, such programs
35will have to implement conversion, labeling and hiding of inputs. For 30will have to implement conversion, labeling and hiding of inputs. For
36this reason, it is still not recommended to bypass the library. 31this reason, it is still not recommended to bypass the library.
37 32
38If you are developing a userspace application please send us feedback on
39this standard.
40
41Note that this standard isn't completely established yet, so it is subject
42to changes. If you are writing a new hardware monitoring driver those
43features can't seem to fit in this interface, please contact us with your
44extension proposal. Keep in mind that backward compatibility must be
45preserved.
46
47Each chip gets its own directory in the sysfs /sys/devices tree. To 33Each chip gets its own directory in the sysfs /sys/devices tree. To
48find all sensor chips, it is easier to follow the device symlinks from 34find all sensor chips, it is easier to follow the device symlinks from
49/sys/class/hwmon/hwmon*. 35/sys/class/hwmon/hwmon*.
50 36
37Up to lm-sensors 3.0.0, libsensors looks for hardware monitoring attributes
38in the "physical" device directory. Since lm-sensors 3.0.1, attributes found
39in the hwmon "class" device directory are also supported. Complex drivers
40(e.g. drivers for multifunction chips) may want to use this possibility to
41avoid namespace pollution. The only drawback will be that older versions of
42libsensors won't support the driver in question.
43
51All sysfs values are fixed point numbers. 44All sysfs values are fixed point numbers.
52 45
53There is only one value per file, unlike the older /proc specification. 46There is only one value per file, unlike the older /proc specification.
diff --git a/Documentation/i2c/writing-clients b/Documentation/i2c/writing-clients
index ee75cbace28d..d4cd4126d1ad 100644
--- a/Documentation/i2c/writing-clients
+++ b/Documentation/i2c/writing-clients
@@ -25,12 +25,23 @@ routines, and should be zero-initialized except for fields with data you
25provide. A client structure holds device-specific information like the 25provide. A client structure holds device-specific information like the
26driver model device node, and its I2C address. 26driver model device node, and its I2C address.
27 27
28/* iff driver uses driver model ("new style") binding model: */
29
30static struct i2c_device_id foo_idtable[] = {
31 { "foo", my_id_for_foo },
32 { "bar", my_id_for_bar },
33 { }
34};
35
36MODULE_DEVICE_TABLE(i2c, foo_idtable);
37
28static struct i2c_driver foo_driver = { 38static struct i2c_driver foo_driver = {
29 .driver = { 39 .driver = {
30 .name = "foo", 40 .name = "foo",
31 }, 41 },
32 42
33 /* iff driver uses driver model ("new style") binding model: */ 43 /* iff driver uses driver model ("new style") binding model: */
44 .id_table = foo_ids,
34 .probe = foo_probe, 45 .probe = foo_probe,
35 .remove = foo_remove, 46 .remove = foo_remove,
36 47
@@ -173,10 +184,9 @@ handle may be used during foo_probe(). If foo_probe() reports success
173(zero not a negative status code) it may save the handle and use it until 184(zero not a negative status code) it may save the handle and use it until
174foo_remove() returns. That binding model is used by most Linux drivers. 185foo_remove() returns. That binding model is used by most Linux drivers.
175 186
176Drivers match devices when i2c_client.driver_name and the driver name are 187The probe function is called when an entry in the id_table name field
177the same; this approach is used in several other busses that don't have 188matches the device's name. It is passed the entry that was matched so
178device typing support in the hardware. The driver and module name should 189the driver knows which one in the table matched.
179match, so hotplug/coldplug mechanisms will modprobe the driver.
180 190
181 191
182Device Creation (Standard driver model) 192Device Creation (Standard driver model)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index e07c432c731f..b52f47d588b4 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -295,7 +295,7 @@ and is between 256 and 4096 characters. It is defined in the file
295 when initialising the APIC and IO-APIC components. 295 when initialising the APIC and IO-APIC components.
296 296
297 apm= [APM] Advanced Power Management 297 apm= [APM] Advanced Power Management
298 See header of arch/i386/kernel/apm.c. 298 See header of arch/x86/kernel/apm_32.c.
299 299
300 arcrimi= [HW,NET] ARCnet - "RIM I" (entirely mem-mapped) cards 300 arcrimi= [HW,NET] ARCnet - "RIM I" (entirely mem-mapped) cards
301 Format: <io>,<irq>,<nodeID> 301 Format: <io>,<irq>,<nodeID>
@@ -638,7 +638,7 @@ and is between 256 and 4096 characters. It is defined in the file
638 638
639 elanfreq= [X86-32] 639 elanfreq= [X86-32]
640 See comment before function elanfreq_setup() in 640 See comment before function elanfreq_setup() in
641 arch/i386/kernel/cpu/cpufreq/elanfreq.c. 641 arch/x86/kernel/cpu/cpufreq/elanfreq.c.
642 642
643 elevator= [IOSCHED] 643 elevator= [IOSCHED]
644 Format: {"anticipatory" | "cfq" | "deadline" | "noop"} 644 Format: {"anticipatory" | "cfq" | "deadline" | "noop"}
@@ -1679,6 +1679,10 @@ and is between 256 and 4096 characters. It is defined in the file
1679 Format: <reboot_mode>[,<reboot_mode2>[,...]] 1679 Format: <reboot_mode>[,<reboot_mode2>[,...]]
1680 See arch/*/kernel/reboot.c or arch/*/kernel/process.c 1680 See arch/*/kernel/reboot.c or arch/*/kernel/process.c
1681 1681
1682 relax_domain_level=
1683 [KNL, SMP] Set scheduler's default relax_domain_level.
1684 See Documentation/cpusets.txt.
1685
1682 reserve= [KNL,BUGS] Force the kernel to ignore some iomem area 1686 reserve= [KNL,BUGS] Force the kernel to ignore some iomem area
1683 1687
1684 reservetop= [X86-32] 1688 reservetop= [X86-32]
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 17a6e46fbd43..17f1f91af35c 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -81,23 +81,23 @@ inet_peer_minttl - INTEGER
81 Minimum time-to-live of entries. Should be enough to cover fragment 81 Minimum time-to-live of entries. Should be enough to cover fragment
82 time-to-live on the reassembling side. This minimum time-to-live is 82 time-to-live on the reassembling side. This minimum time-to-live is
83 guaranteed if the pool size is less than inet_peer_threshold. 83 guaranteed if the pool size is less than inet_peer_threshold.
84 Measured in jiffies(1). 84 Measured in seconds.
85 85
86inet_peer_maxttl - INTEGER 86inet_peer_maxttl - INTEGER
87 Maximum time-to-live of entries. Unused entries will expire after 87 Maximum time-to-live of entries. Unused entries will expire after
88 this period of time if there is no memory pressure on the pool (i.e. 88 this period of time if there is no memory pressure on the pool (i.e.
89 when the number of entries in the pool is very small). 89 when the number of entries in the pool is very small).
90 Measured in jiffies(1). 90 Measured in seconds.
91 91
92inet_peer_gc_mintime - INTEGER 92inet_peer_gc_mintime - INTEGER
93 Minimum interval between garbage collection passes. This interval is 93 Minimum interval between garbage collection passes. This interval is
94 in effect under high memory pressure on the pool. 94 in effect under high memory pressure on the pool.
95 Measured in jiffies(1). 95 Measured in seconds.
96 96
97inet_peer_gc_maxtime - INTEGER 97inet_peer_gc_maxtime - INTEGER
98 Minimum interval between garbage collection passes. This interval is 98 Minimum interval between garbage collection passes. This interval is
99 in effect under low (or absent) memory pressure on the pool. 99 in effect under low (or absent) memory pressure on the pool.
100 Measured in jiffies(1). 100 Measured in seconds.
101 101
102TCP variables: 102TCP variables:
103 103
@@ -794,10 +794,6 @@ tag - INTEGER
794 Allows you to write a number, which can be used as required. 794 Allows you to write a number, which can be used as required.
795 Default value is 0. 795 Default value is 0.
796 796
797(1) Jiffie: internal timeunit for the kernel. On the i386 1/100s, on the
798Alpha 1/1024s. See the HZ define in /usr/include/asm/param.h for the exact
799value on your system.
800
801Alexey Kuznetsov. 797Alexey Kuznetsov.
802kuznet@ms2.inr.ac.ru 798kuznet@ms2.inr.ac.ru
803 799
diff --git a/Documentation/networking/s2io.txt b/Documentation/networking/s2io.txt
index 4bde53e85f3f..1e28e2ddb90a 100644
--- a/Documentation/networking/s2io.txt
+++ b/Documentation/networking/s2io.txt
@@ -83,9 +83,9 @@ Valid range: Limited by memory on system
83Default: 30 83Default: 30
84 84
85e. intr_type 85e. intr_type
86Specifies interrupt type. Possible values 1(INTA), 2(MSI), 3(MSI-X) 86Specifies interrupt type. Possible values 0(INTA), 2(MSI-X)
87Valid range: 1-3 87Valid values: 0, 2
88Default: 1 88Default: 2
89 89
905. Performance suggestions 905. Performance suggestions
91General: 91General:
diff --git a/Documentation/video4linux/CARDLIST.au0828 b/Documentation/video4linux/CARDLIST.au0828
index aaae360312e4..86d1c8e7b18f 100644
--- a/Documentation/video4linux/CARDLIST.au0828
+++ b/Documentation/video4linux/CARDLIST.au0828
@@ -1,4 +1,4 @@
1 0 -> Unknown board (au0828) 1 0 -> Unknown board (au0828)
2 1 -> Hauppauge HVR950Q (au0828) [2040:7200] 2 1 -> Hauppauge HVR950Q (au0828) [2040:7200,2040:7210,2040:7217,2040:721b,2040:721f,2040:7280,0fd9:0008]
3 2 -> Hauppauge HVR850 (au0828) [2040:7240] 3 2 -> Hauppauge HVR850 (au0828) [2040:7240]
4 3 -> DViCO FusionHDTV USB (au0828) [0fe9:d620] 4 3 -> DViCO FusionHDTV USB (au0828) [0fe9:d620]
diff --git a/Documentation/vm/slabinfo.c b/Documentation/vm/slabinfo.c
index e4230ed16ee7..df3227605d59 100644
--- a/Documentation/vm/slabinfo.c
+++ b/Documentation/vm/slabinfo.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Slabinfo: Tool to get reports about slabs 2 * Slabinfo: Tool to get reports about slabs
3 * 3 *
4 * (C) 2007 sgi, Christoph Lameter <clameter@sgi.com> 4 * (C) 2007 sgi, Christoph Lameter
5 * 5 *
6 * Compile by: 6 * Compile by:
7 * 7 *
@@ -99,7 +99,7 @@ void fatal(const char *x, ...)
99 99
100void usage(void) 100void usage(void)
101{ 101{
102 printf("slabinfo 5/7/2007. (c) 2007 sgi. clameter@sgi.com\n\n" 102 printf("slabinfo 5/7/2007. (c) 2007 sgi.\n\n"
103 "slabinfo [-ahnpvtsz] [-d debugopts] [slab-regexp]\n" 103 "slabinfo [-ahnpvtsz] [-d debugopts] [slab-regexp]\n"
104 "-a|--aliases Show aliases\n" 104 "-a|--aliases Show aliases\n"
105 "-A|--activity Most active slabs first\n" 105 "-A|--activity Most active slabs first\n"
diff --git a/Documentation/vm/slub.txt b/Documentation/vm/slub.txt
index 7c13f22a0c9e..bb1f5c6e28b3 100644
--- a/Documentation/vm/slub.txt
+++ b/Documentation/vm/slub.txt
@@ -266,4 +266,4 @@ of other objects.
266 266
267 slub_debug=FZ,dentry 267 slub_debug=FZ,dentry
268 268
269Christoph Lameter, <clameter@sgi.com>, May 30, 2007 269Christoph Lameter, May 30, 2007
diff --git a/Documentation/x86_64/mm.txt b/Documentation/x86_64/mm.txt
index b89b6d2bebfa..efce75097369 100644
--- a/Documentation/x86_64/mm.txt
+++ b/Documentation/x86_64/mm.txt
@@ -11,9 +11,8 @@ ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole
11ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space 11ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space
12ffffe20000000000 - ffffe2ffffffffff (=40 bits) virtual memory map (1TB) 12ffffe20000000000 - ffffe2ffffffffff (=40 bits) virtual memory map (1TB)
13... unused hole ... 13... unused hole ...
14ffffffff80000000 - ffffffff82800000 (=40 MB) kernel text mapping, from phys 0 14ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0
15... unused hole ... 15ffffffffa0000000 - fffffffffff00000 (=1536 MB) module mapping space
16ffffffff88000000 - fffffffffff00000 (=1919 MB) module mapping space
17 16
18The direct mapping covers all memory in the system up to the highest 17The direct mapping covers all memory in the system up to the highest
19memory address (this means in some cases it can also include PCI memory 18memory address (this means in some cases it can also include PCI memory
diff --git a/MAINTAINERS b/MAINTAINERS
index cd587eec9fa7..6476125363e0 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -763,9 +763,10 @@ S: Maintained
763 763
764AUXILIARY DISPLAY DRIVERS 764AUXILIARY DISPLAY DRIVERS
765P: Miguel Ojeda Sandonis 765P: Miguel Ojeda Sandonis
766M: maxextreme@gmail.com 766M: miguel.ojeda.sandonis@gmail.com
767L: linux-kernel@vger.kernel.org 767L: linux-kernel@vger.kernel.org
768W: http://auxdisplay.googlepages.com/ 768W: http://miguelojeda.es/auxdisplay.htm
769W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
769S: Maintained 770S: Maintained
770 771
771AVR32 ARCHITECTURE 772AVR32 ARCHITECTURE
@@ -1055,16 +1056,18 @@ S: Supported
1055 1056
1056CFAG12864B LCD DRIVER 1057CFAG12864B LCD DRIVER
1057P: Miguel Ojeda Sandonis 1058P: Miguel Ojeda Sandonis
1058M: maxextreme@gmail.com 1059M: miguel.ojeda.sandonis@gmail.com
1059L: linux-kernel@vger.kernel.org 1060L: linux-kernel@vger.kernel.org
1060W: http://auxdisplay.googlepages.com/ 1061W: http://miguelojeda.es/auxdisplay.htm
1062W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
1061S: Maintained 1063S: Maintained
1062 1064
1063CFAG12864BFB LCD FRAMEBUFFER DRIVER 1065CFAG12864BFB LCD FRAMEBUFFER DRIVER
1064P: Miguel Ojeda Sandonis 1066P: Miguel Ojeda Sandonis
1065M: maxextreme@gmail.com 1067M: miguel.ojeda.sandonis@gmail.com
1066L: linux-kernel@vger.kernel.org 1068L: linux-kernel@vger.kernel.org
1067W: http://auxdisplay.googlepages.com/ 1069W: http://miguelojeda.es/auxdisplay.htm
1070W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
1068S: Maintained 1071S: Maintained
1069 1072
1070CFG80211 and NL80211 1073CFG80211 and NL80211
@@ -1420,6 +1423,14 @@ M: kristen.c.accardi@intel.com
1420L: linux-acpi@vger.kernel.org 1423L: linux-acpi@vger.kernel.org
1421S: Supported 1424S: Supported
1422 1425
1426DOCUMENTATION (/Documentation directory)
1427P: Michael Kerrisk
1428M: mtk.manpages@gmail.com
1429P: Randy Dunlap
1430M: rdunlap@xenotime.net
1431L: linux-doc@vger.kernel.org
1432S: Maintained
1433
1423DOUBLETALK DRIVER 1434DOUBLETALK DRIVER
1424P: James R. Van Zandt 1435P: James R. Van Zandt
1425M: jrv@vanzandt.mv.com 1436M: jrv@vanzandt.mv.com
@@ -1626,13 +1637,13 @@ S: Maintained
1626 1637
1627EXT3 FILE SYSTEM 1638EXT3 FILE SYSTEM
1628P: Stephen Tweedie, Andrew Morton 1639P: Stephen Tweedie, Andrew Morton
1629M: sct@redhat.com, akpm@linux-foundation.org, adilger@clusterfs.com 1640M: sct@redhat.com, akpm@linux-foundation.org, adilger@sun.com
1630L: linux-ext4@vger.kernel.org 1641L: linux-ext4@vger.kernel.org
1631S: Maintained 1642S: Maintained
1632 1643
1633EXT4 FILE SYSTEM 1644EXT4 FILE SYSTEM
1634P: Stephen Tweedie, Andrew Morton 1645P: Stephen Tweedie, Andrew Morton
1635M: sct@redhat.com, akpm@linux-foundation.org, adilger@clusterfs.com 1646M: sct@redhat.com, akpm@linux-foundation.org, adilger@sun.com
1636L: linux-ext4@vger.kernel.org 1647L: linux-ext4@vger.kernel.org
1637S: Maintained 1648S: Maintained
1638 1649
@@ -2428,9 +2439,10 @@ S: Maintained
2428 2439
2429KS0108 LCD CONTROLLER DRIVER 2440KS0108 LCD CONTROLLER DRIVER
2430P: Miguel Ojeda Sandonis 2441P: Miguel Ojeda Sandonis
2431M: maxextreme@gmail.com 2442M: miguel.ojeda.sandonis@gmail.com
2432L: linux-kernel@vger.kernel.org 2443L: linux-kernel@vger.kernel.org
2433W: http://auxdisplay.googlepages.com/ 2444W: http://miguelojeda.es/auxdisplay.htm
2445W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
2434S: Maintained 2446S: Maintained
2435 2447
2436LAPB module 2448LAPB module
@@ -2474,9 +2486,11 @@ M: James.Bottomley@HansenPartnership.com
2474W: http://www.hansenpartnership.com/voyager 2486W: http://www.hansenpartnership.com/voyager
2475S: Maintained 2487S: Maintained
2476 2488
2477LINUX FOR POWERPC 2489LINUX FOR POWERPC (32-BIT AND 64-BIT)
2478P: Paul Mackerras 2490P: Paul Mackerras
2479M: paulus@samba.org 2491M: paulus@samba.org
2492P: Benjamin Herrenschmidt
2493M: benh@kernel.crashing.org
2480W: http://www.penguinppc.org/ 2494W: http://www.penguinppc.org/
2481L: linuxppc-dev@ozlabs.org 2495L: linuxppc-dev@ozlabs.org
2482T: git kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc.git 2496T: git kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc.git
@@ -2516,13 +2530,6 @@ W: http://wiki.secretlab.ca/index.php/Linux_on_Xilinx_Virtex
2516L: linuxppc-dev@ozlabs.org 2530L: linuxppc-dev@ozlabs.org
2517S: Maintained 2531S: Maintained
2518 2532
2519LINUX FOR POWERPC BOOT CODE
2520P: Tom Rini
2521M: trini@kernel.crashing.org
2522W: http://www.penguinppc.org/
2523L: linuxppc-dev@ozlabs.org
2524S: Maintained
2525
2526LINUX FOR POWERPC EMBEDDED PPC8XX 2533LINUX FOR POWERPC EMBEDDED PPC8XX
2527P: Vitaly Bordug 2534P: Vitaly Bordug
2528M: vitb@kernel.crashing.org 2535M: vitb@kernel.crashing.org
@@ -2551,17 +2558,6 @@ P: Arnaldo Carvalho de Melo
2551M: acme@ghostprotocols.net 2558M: acme@ghostprotocols.net
2552S: Maintained 2559S: Maintained
2553 2560
2554LINUX FOR 64BIT POWERPC
2555P: Paul Mackerras
2556M: paulus@samba.org
2557M: paulus@au.ibm.com
2558P: Anton Blanchard
2559M: anton@samba.org
2560M: anton@au.ibm.com
2561W: http://www.penguinppc.org/ppc64/
2562L: linuxppc-dev@ozlabs.org
2563S: Supported
2564
2565LINUX SECURITY MODULE (LSM) FRAMEWORK 2561LINUX SECURITY MODULE (LSM) FRAMEWORK
2566P: Chris Wright 2562P: Chris Wright
2567M: chrisw@sous-sol.org 2563M: chrisw@sous-sol.org
@@ -2680,8 +2676,8 @@ S: Supported
2680MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7 2676MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7
2681P: Michael Kerrisk 2677P: Michael Kerrisk
2682M: mtk.manpages@gmail.com 2678M: mtk.manpages@gmail.com
2683W: ftp://ftp.kernel.org/pub/linux/docs/manpages 2679W: http://www.kernel.org/doc/man-pages
2684S: Maintained 2680S: Supported
2685 2681
2686MARVELL LIBERTAS WIRELESS DRIVER 2682MARVELL LIBERTAS WIRELESS DRIVER
2687P: Dan Williams 2683P: Dan Williams
@@ -2814,6 +2810,12 @@ W: https://tango.0pointer.de/mailman/listinfo/s270-linux
2814W: http://0pointer.de/lennart/tchibo.html 2810W: http://0pointer.de/lennart/tchibo.html
2815S: Maintained 2811S: Maintained
2816 2812
2813MULTIFUNCTION DEVICES (MFD)
2814P: Samuel Ortiz
2815M: sameo@openedhand.com
2816L: linux-kernel@vger.kernel.org
2817S: Supported
2818
2817MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM 2819MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
2818P: Pierre Ossman 2820P: Pierre Ossman
2819M: drzeus-mmc@drzeus.cx 2821M: drzeus-mmc@drzeus.cx
@@ -3195,8 +3197,8 @@ L: netdev@vger.kernel.org
3195S: Maintained 3197S: Maintained
3196 3198
3197PER-TASK DELAY ACCOUNTING 3199PER-TASK DELAY ACCOUNTING
3198P: Shailabh Nagar 3200P: Balbir Singh
3199M: nagar@watson.ibm.com 3201M: balbir@linux.vnet.ibm.com
3200L: linux-kernel@vger.kernel.org 3202L: linux-kernel@vger.kernel.org
3201S: Maintained 3203S: Maintained
3202 3204
@@ -3688,7 +3690,7 @@ S: Maintained
3688 3690
3689SLAB ALLOCATOR 3691SLAB ALLOCATOR
3690P: Christoph Lameter 3692P: Christoph Lameter
3691M: clameter@sgi.com 3693M: cl@linux-foundation.org
3692P: Pekka Enberg 3694P: Pekka Enberg
3693M: penberg@cs.helsinki.fi 3695M: penberg@cs.helsinki.fi
3694P: Matt Mackall 3696P: Matt Mackall
@@ -3898,8 +3900,8 @@ M: hch@infradead.org
3898S: Maintained 3900S: Maintained
3899 3901
3900TASKSTATS STATISTICS INTERFACE 3902TASKSTATS STATISTICS INTERFACE
3901P: Shailabh Nagar 3903P: Balbir Singh
3902M: nagar@watson.ibm.com 3904M: balbir@linux.vnet.ibm.com
3903L: linux-kernel@vger.kernel.org 3905L: linux-kernel@vger.kernel.org
3904S: Maintained 3906S: Maintained
3905 3907
@@ -3995,7 +3997,8 @@ W: http://www.buzzard.org.uk/toshiba/
3995S: Maintained 3997S: Maintained
3996 3998
3997TPM DEVICE DRIVER 3999TPM DEVICE DRIVER
3998P: Kylene Hall 4000P: Debora Velarde
4001P: Rajiv Andrade
3999M: tpmdd-devel@lists.sourceforge.net 4002M: tpmdd-devel@lists.sourceforge.net
4000W: http://tpmdd.sourceforge.net 4003W: http://tpmdd.sourceforge.net
4001P: Marcel Selhorst 4004P: Marcel Selhorst
@@ -4314,6 +4317,14 @@ L: netdev@vger.kernel.org
4314W: http://www.linux-usb.org/usbnet 4317W: http://www.linux-usb.org/usbnet
4315S: Maintained 4318S: Maintained
4316 4319
4320USB VIDEO CLASS
4321P: Laurent Pinchart
4322M: laurent.pinchart@skynet.be
4323L: linx-uvc-devel@berlios.de
4324L: video4linux-list@redhat.com
4325W: http://linux-uvc.berlios.de
4326S: Maintained
4327
4317USB W996[87]CF DRIVER 4328USB W996[87]CF DRIVER
4318P: Luca Risolia 4329P: Luca Risolia
4319M: luca.risolia@studio.unibo.it 4330M: luca.risolia@studio.unibo.it
@@ -4431,10 +4442,10 @@ M: johnpol@2ka.mipt.ru
4431S: Maintained 4442S: Maintained
4432 4443
4433W83791D HARDWARE MONITORING DRIVER 4444W83791D HARDWARE MONITORING DRIVER
4434P: Charles Spirakis 4445P: Marc Hulsman
4435M: bezaur@gmail.com 4446M: m.hulsman@tudelft.nl
4436L: lm-sensors@lm-sensors.org 4447L: lm-sensors@lm-sensors.org
4437S: Odd Fixes 4448S: Maintained
4438 4449
4439W83793 HARDWARE MONITORING DRIVER 4450W83793 HARDWARE MONITORING DRIVER
4440P: Rudolf Marek 4451P: Rudolf Marek
diff --git a/Makefile b/Makefile
index 6923d669a4f6..6315424a00b9 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 26 3SUBLEVEL = 26
4EXTRAVERSION = -rc6 4EXTRAVERSION = -rc9
5NAME = Rotary Wombat 5NAME = Rotary Wombat
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
diff --git a/arch/alpha/Makefile b/arch/alpha/Makefile
index 4e1a8e2c4541..4759fe751aa1 100644
--- a/arch/alpha/Makefile
+++ b/arch/alpha/Makefile
@@ -13,6 +13,7 @@ NM := $(NM) -B
13LDFLAGS_vmlinux := -static -N #-relax 13LDFLAGS_vmlinux := -static -N #-relax
14CHECKFLAGS += -D__alpha__ -m64 14CHECKFLAGS += -D__alpha__ -m64
15cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data 15cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data
16cflags-y += $(call cc-option, -fno-jump-tables)
16 17
17cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4 18cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4
18cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5 19cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5
diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c
index c0750291b44a..d9980d47ab81 100644
--- a/arch/alpha/kernel/core_t2.c
+++ b/arch/alpha/kernel/core_t2.c
@@ -74,6 +74,8 @@
74# define DBG(args) 74# define DBG(args)
75#endif 75#endif
76 76
77DEFINE_SPINLOCK(t2_hae_lock);
78
77static volatile unsigned int t2_mcheck_any_expected; 79static volatile unsigned int t2_mcheck_any_expected;
78static volatile unsigned int t2_mcheck_last_taken; 80static volatile unsigned int t2_mcheck_last_taken;
79 81
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c
index 36ab22a7ea12..5cf45fc51343 100644
--- a/arch/alpha/kernel/pci.c
+++ b/arch/alpha/kernel/pci.c
@@ -71,6 +71,23 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82378, quirk_i
71static void __init 71static void __init
72quirk_cypress(struct pci_dev *dev) 72quirk_cypress(struct pci_dev *dev)
73{ 73{
74 /* The Notorious Cy82C693 chip. */
75
76 /* The generic legacy mode IDE fixup in drivers/pci/probe.c
77 doesn't work correctly with the Cypress IDE controller as
78 it has non-standard register layout. Fix that. */
79 if (dev->class >> 8 == PCI_CLASS_STORAGE_IDE) {
80 dev->resource[2].start = dev->resource[3].start = 0;
81 dev->resource[2].end = dev->resource[3].end = 0;
82 dev->resource[2].flags = dev->resource[3].flags = 0;
83 if (PCI_FUNC(dev->devfn) == 2) {
84 dev->resource[0].start = 0x170;
85 dev->resource[0].end = 0x177;
86 dev->resource[1].start = 0x376;
87 dev->resource[1].end = 0x376;
88 }
89 }
90
74 /* The Cypress bridge responds on the PCI bus in the address range 91 /* The Cypress bridge responds on the PCI bus in the address range
75 0xffff0000-0xffffffff (conventional x86 BIOS ROM). There is no 92 0xffff0000-0xffffffff (conventional x86 BIOS ROM). There is no
76 way to turn this off. The bridge also supports several extended 93 way to turn this off. The bridge also supports several extended
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c
index dc57790250d2..c778779007fc 100644
--- a/arch/alpha/kernel/traps.c
+++ b/arch/alpha/kernel/traps.c
@@ -447,7 +447,7 @@ struct unaligned_stat {
447 447
448 448
449/* Macro for exception fixup code to access integer registers. */ 449/* Macro for exception fixup code to access integer registers. */
450#define una_reg(r) (regs->regs[(r) >= 16 && (r) <= 18 ? (r)+19 : (r)]) 450#define una_reg(r) (_regs[(r) >= 16 && (r) <= 18 ? (r)+19 : (r)])
451 451
452 452
453asmlinkage void 453asmlinkage void
@@ -456,6 +456,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg,
456{ 456{
457 long error, tmp1, tmp2, tmp3, tmp4; 457 long error, tmp1, tmp2, tmp3, tmp4;
458 unsigned long pc = regs->pc - 4; 458 unsigned long pc = regs->pc - 4;
459 unsigned long *_regs = regs->regs;
459 const struct exception_table_entry *fixup; 460 const struct exception_table_entry *fixup;
460 461
461 unaligned[0].count++; 462 unaligned[0].count++;
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S
index f13249be17c5..ef37fc1acaea 100644
--- a/arch/alpha/kernel/vmlinux.lds.S
+++ b/arch/alpha/kernel/vmlinux.lds.S
@@ -25,6 +25,13 @@ SECTIONS
25 } :kernel 25 } :kernel
26 _etext = .; /* End of text section */ 26 _etext = .; /* End of text section */
27 27
28 NOTES :kernel :note
29 .dummy : {
30 *(.dummy)
31 } :kernel
32
33 RODATA
34
28 /* Exception table */ 35 /* Exception table */
29 . = ALIGN(16); 36 . = ALIGN(16);
30 __ex_table : { 37 __ex_table : {
@@ -33,13 +40,6 @@ SECTIONS
33 __stop___ex_table = .; 40 __stop___ex_table = .;
34 } 41 }
35 42
36 NOTES :kernel :note
37 .dummy : {
38 *(.dummy)
39 } :kernel
40
41 RODATA
42
43 /* Will be freed after init */ 43 /* Will be freed after init */
44 . = ALIGN(PAGE_SIZE); 44 . = ALIGN(PAGE_SIZE);
45 /* Init code and data */ 45 /* Init code and data */
diff --git a/arch/arm/common/dmabounce.c b/arch/arm/common/dmabounce.c
index 52fc6a883281..2744673314b4 100644
--- a/arch/arm/common/dmabounce.c
+++ b/arch/arm/common/dmabounce.c
@@ -650,7 +650,8 @@ EXPORT_SYMBOL(dma_map_sg);
650EXPORT_SYMBOL(dma_unmap_sg); 650EXPORT_SYMBOL(dma_unmap_sg);
651EXPORT_SYMBOL(dma_sync_single_for_cpu); 651EXPORT_SYMBOL(dma_sync_single_for_cpu);
652EXPORT_SYMBOL(dma_sync_single_for_device); 652EXPORT_SYMBOL(dma_sync_single_for_device);
653EXPORT_SYMBOL(dma_sync_sg); 653EXPORT_SYMBOL(dma_sync_sg_for_cpu);
654EXPORT_SYMBOL(dma_sync_sg_for_device);
654EXPORT_SYMBOL(dmabounce_register_dev); 655EXPORT_SYMBOL(dmabounce_register_dev);
655EXPORT_SYMBOL(dmabounce_unregister_dev); 656EXPORT_SYMBOL(dmabounce_unregister_dev);
656 657
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index 02cede295e89..dbf68dc50ae2 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -42,7 +42,7 @@
42#define GPMC_STATUS 0x54 42#define GPMC_STATUS 0x54
43#define GPMC_PREFETCH_CONFIG1 0x1e0 43#define GPMC_PREFETCH_CONFIG1 0x1e0
44#define GPMC_PREFETCH_CONFIG2 0x1e4 44#define GPMC_PREFETCH_CONFIG2 0x1e4
45#define GPMC_PREFETCH_CONTROL 0x1e8 45#define GPMC_PREFETCH_CONTROL 0x1ec
46#define GPMC_PREFETCH_STATUS 0x1f0 46#define GPMC_PREFETCH_STATUS 0x1f0
47#define GPMC_ECC_CONFIG 0x1f4 47#define GPMC_ECC_CONFIG 0x1f4
48#define GPMC_ECC_CONTROL 0x1f8 48#define GPMC_ECC_CONTROL 0x1f8
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
index 3e57428affee..8e813ed57519 100644
--- a/arch/arm/mach-realview/platsmp.c
+++ b/arch/arm/mach-realview/platsmp.c
@@ -74,6 +74,8 @@ static DEFINE_SPINLOCK(boot_lock);
74 74
75void __cpuinit platform_secondary_init(unsigned int cpu) 75void __cpuinit platform_secondary_init(unsigned int cpu)
76{ 76{
77 trace_hardirqs_off();
78
77 /* 79 /*
78 * the primary core may have used a "cross call" soft interrupt 80 * the primary core may have used a "cross call" soft interrupt
79 * to get this processor out of WFI in the BootMonitor - make 81 * to get this processor out of WFI in the BootMonitor - make
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index c00eda588cd8..39c637b0ffea 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -501,8 +501,6 @@ static inline void omap_enable_channel_irq(int lch)
501 501
502 /* Enable some nice interrupts. */ 502 /* Enable some nice interrupts. */
503 OMAP_DMA_CICR_REG(lch) = dma_chan[lch].enabled_irqs; 503 OMAP_DMA_CICR_REG(lch) = dma_chan[lch].enabled_irqs;
504
505 dma_chan[lch].flags |= OMAP_DMA_ACTIVE;
506} 504}
507 505
508static void omap_disable_channel_irq(int lch) 506static void omap_disable_channel_irq(int lch)
diff --git a/arch/blackfin/kernel/cplb-nompu/cplbinit.c b/arch/blackfin/kernel/cplb-nompu/cplbinit.c
index 917325bfbd84..6be0c50122e8 100644
--- a/arch/blackfin/kernel/cplb-nompu/cplbinit.c
+++ b/arch/blackfin/kernel/cplb-nompu/cplbinit.c
@@ -254,7 +254,8 @@ close_cplbtab(struct cplb_tab *table)
254} 254}
255 255
256/* helper function */ 256/* helper function */
257static void __fill_code_cplbtab(struct cplb_tab *t, int i, u32 a_start, u32 a_end) 257static void __init
258__fill_code_cplbtab(struct cplb_tab *t, int i, u32 a_start, u32 a_end)
258{ 259{
259 if (cplb_data[i].psize) { 260 if (cplb_data[i].psize) {
260 fill_cplbtab(t, 261 fill_cplbtab(t,
@@ -291,7 +292,8 @@ static void __fill_code_cplbtab(struct cplb_tab *t, int i, u32 a_start, u32 a_en
291 } 292 }
292} 293}
293 294
294static void __fill_data_cplbtab(struct cplb_tab *t, int i, u32 a_start, u32 a_end) 295static void __init
296__fill_data_cplbtab(struct cplb_tab *t, int i, u32 a_start, u32 a_end)
295{ 297{
296 if (cplb_data[i].psize) { 298 if (cplb_data[i].psize) {
297 fill_cplbtab(t, 299 fill_cplbtab(t,
diff --git a/arch/blackfin/kernel/irqchip.c b/arch/blackfin/kernel/irqchip.c
index 73647c158774..07402f57c9de 100644
--- a/arch/blackfin/kernel/irqchip.c
+++ b/arch/blackfin/kernel/irqchip.c
@@ -60,9 +60,14 @@ static struct irq_chip bad_chip = {
60}; 60};
61 61
62static struct irq_desc bad_irq_desc = { 62static struct irq_desc bad_irq_desc = {
63 .status = IRQ_DISABLED,
63 .chip = &bad_chip, 64 .chip = &bad_chip,
64 .handle_irq = handle_bad_irq, 65 .handle_irq = handle_bad_irq,
65 .depth = 1, 66 .depth = 1,
67 .lock = __SPIN_LOCK_UNLOCKED(irq_desc->lock),
68#ifdef CONFIG_SMP
69 .affinity = CPU_MASK_ALL
70#endif
66}; 71};
67 72
68int show_interrupts(struct seq_file *p, void *v) 73int show_interrupts(struct seq_file *p, void *v)
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index 88f1a55c6c94..e67ee3f27698 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -57,6 +57,7 @@ core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/
57core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/ 57core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/
58core-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/dig/ 58core-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/dig/
59core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/ 59core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/
60core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/
60core-$(CONFIG_KVM) += arch/ia64/kvm/ 61core-$(CONFIG_KVM) += arch/ia64/kvm/
61 62
62drivers-$(CONFIG_PCI) += arch/ia64/pci/ 63drivers-$(CONFIG_PCI) += arch/ia64/pci/
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index 082c31dcfd99..39752cdef6ff 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -558,8 +558,6 @@ static struct iosapic_rte_info * __init_refok iosapic_alloc_rte (void)
558 if (!iosapic_kmalloc_ok && list_empty(&free_rte_list)) { 558 if (!iosapic_kmalloc_ok && list_empty(&free_rte_list)) {
559 rte = alloc_bootmem(sizeof(struct iosapic_rte_info) * 559 rte = alloc_bootmem(sizeof(struct iosapic_rte_info) *
560 NR_PREALLOCATE_RTE_ENTRIES); 560 NR_PREALLOCATE_RTE_ENTRIES);
561 if (!rte)
562 return NULL;
563 for (i = 0; i < NR_PREALLOCATE_RTE_ENTRIES; i++, rte++) 561 for (i = 0; i < NR_PREALLOCATE_RTE_ENTRIES; i++, rte++)
564 list_add(&rte->rte_list, &free_rte_list); 562 list_add(&rte->rte_list, &free_rte_list);
565 } 563 }
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index 71d05133f556..7714a97b0104 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -1864,11 +1864,6 @@ pfm_flush(struct file *filp, fl_owner_t id)
1864 * invoked after, it will find an empty queue and no 1864 * invoked after, it will find an empty queue and no
1865 * signal will be sent. In both case, we are safe 1865 * signal will be sent. In both case, we are safe
1866 */ 1866 */
1867 if (filp->f_flags & FASYNC) {
1868 DPRINT(("cleaning up async_queue=%p\n", ctx->ctx_async_queue));
1869 pfm_do_fasync (-1, filp, ctx, 0);
1870 }
1871
1872 PROTECT_CTX(ctx, flags); 1867 PROTECT_CTX(ctx, flags);
1873 1868
1874 state = ctx->ctx_state; 1869 state = ctx->ctx_state;
@@ -1999,6 +1994,11 @@ pfm_close(struct inode *inode, struct file *filp)
1999 return -EBADF; 1994 return -EBADF;
2000 } 1995 }
2001 1996
1997 if (filp->f_flags & FASYNC) {
1998 DPRINT(("cleaning up async_queue=%p\n", ctx->ctx_async_queue));
1999 pfm_do_fasync(-1, filp, ctx, 0);
2000 }
2001
2002 PROTECT_CTX(ctx, flags); 2002 PROTECT_CTX(ctx, flags);
2003 2003
2004 state = ctx->ctx_state; 2004 state = ctx->ctx_state;
diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c
index 7e0259709c04..0464173ea568 100644
--- a/arch/ia64/kernel/sal.c
+++ b/arch/ia64/kernel/sal.c
@@ -252,11 +252,10 @@ check_sal_cache_flush (void)
252 local_irq_save(flags); 252 local_irq_save(flags);
253 253
254 /* 254 /*
255 * Schedule a timer interrupt, wait until it's reported, and see if 255 * Send ourselves a timer interrupt, wait until it's reported, and see
256 * SAL_CACHE_FLUSH drops it. 256 * if SAL_CACHE_FLUSH drops it.
257 */ 257 */
258 ia64_set_itv(IA64_TIMER_VECTOR); 258 platform_send_ipi(cpu, IA64_TIMER_VECTOR, IA64_IPI_DM_INT, 0);
259 ia64_set_itm(ia64_get_itc() + 1000);
260 259
261 while (!ia64_get_irr(IA64_TIMER_VECTOR)) 260 while (!ia64_get_irr(IA64_TIMER_VECTOR))
262 cpu_relax(); 261 cpu_relax();
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index f48a809c686d..632cda8f2e76 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -547,7 +547,8 @@ setup_arch (char **cmdline_p)
547# ifdef CONFIG_ACPI_NUMA 547# ifdef CONFIG_ACPI_NUMA
548 acpi_numa_init(); 548 acpi_numa_init();
549 per_cpu_scan_finalize((cpus_weight(early_cpu_possible_map) == 0 ? 549 per_cpu_scan_finalize((cpus_weight(early_cpu_possible_map) == 0 ?
550 32 : cpus_weight(early_cpu_possible_map)), additional_cpus); 550 32 : cpus_weight(early_cpu_possible_map)),
551 additional_cpus > 0 ? additional_cpus : 0);
551# endif 552# endif
552#else 553#else
553# ifdef CONFIG_SMP 554# ifdef CONFIG_SMP
@@ -578,8 +579,6 @@ setup_arch (char **cmdline_p)
578 cpu_init(); /* initialize the bootstrap CPU */ 579 cpu_init(); /* initialize the bootstrap CPU */
579 mmu_context_init(); /* initialize context_id bitmap */ 580 mmu_context_init(); /* initialize context_id bitmap */
580 581
581 check_sal_cache_flush();
582
583#ifdef CONFIG_ACPI 582#ifdef CONFIG_ACPI
584 acpi_boot_init(); 583 acpi_boot_init();
585#endif 584#endif
@@ -607,6 +606,7 @@ setup_arch (char **cmdline_p)
607 ia64_mca_init(); 606 ia64_mca_init();
608 607
609 platform_setup(cmdline_p); 608 platform_setup(cmdline_p);
609 check_sal_cache_flush();
610 paging_init(); 610 paging_init();
611} 611}
612 612
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 8c73643f2d66..aad1b7b1fff9 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -117,6 +117,7 @@ void account_system_vtime(struct task_struct *tsk)
117 117
118 local_irq_restore(flags); 118 local_irq_restore(flags);
119} 119}
120EXPORT_SYMBOL_GPL(account_system_vtime);
120 121
121/* 122/*
122 * Called from the timer interrupt handler to charge accumulated user time 123 * Called from the timer interrupt handler to charge accumulated user time
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c
index 49d3120415eb..e585f9a2afb9 100644
--- a/arch/ia64/sn/kernel/sn2/sn2_smp.c
+++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c
@@ -512,6 +512,8 @@ static ssize_t sn2_ptc_proc_write(struct file *file, const char __user *user, si
512 int cpu; 512 int cpu;
513 char optstr[64]; 513 char optstr[64];
514 514
515 if (count == 0 || count > sizeof(optstr))
516 return -EINVAL;
515 if (copy_from_user(optstr, user, count)) 517 if (copy_from_user(optstr, user, count))
516 return -EFAULT; 518 return -EFAULT;
517 optstr[count - 1] = '\0'; 519 optstr[count - 1] = '\0';
diff --git a/arch/ia64/uv/kernel/setup.c b/arch/ia64/uv/kernel/setup.c
index 9aa743203c3c..cf5f28ae96c4 100644
--- a/arch/ia64/uv/kernel/setup.c
+++ b/arch/ia64/uv/kernel/setup.c
@@ -17,6 +17,9 @@
17DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); 17DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
18EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info); 18EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info);
19 19
20#ifdef CONFIG_IA64_SGI_UV
21int sn_prom_type;
22#endif
20 23
21struct redir_addr { 24struct redir_addr {
22 unsigned long redirect; 25 unsigned long redirect;
@@ -64,6 +67,15 @@ void __init uv_setup(char **cmdline_p)
64 m_n_config.s.m_skt = 37; 67 m_n_config.s.m_skt = 37;
65 m_n_config.s.n_skt = 0; 68 m_n_config.s.n_skt = 0;
66 mmr_base = 0; 69 mmr_base = 0;
70#if 0
71 /* Need BIOS calls - TDB */
72 if (!ia64_sn_is_fake_prom())
73 sn_prom_type = 1;
74 else
75#endif
76 sn_prom_type = 2;
77 printk(KERN_INFO "Running on medusa with %s PROM\n",
78 (sn_prom_type == 1) ? "real" : "fake");
67 } else { 79 } else {
68 get_lowmem_redirect(&lowmem_redir_base, &lowmem_redir_size); 80 get_lowmem_redirect(&lowmem_redir_base, &lowmem_redir_size);
69 node_id.v = uv_read_local_mmr(UVH_NODE_ID); 81 node_id.v = uv_read_local_mmr(UVH_NODE_ID);
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index e5a7c5d96364..24c5dee91768 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1006,7 +1006,7 @@ config BOOT_ELF32
1006config MIPS_L1_CACHE_SHIFT 1006config MIPS_L1_CACHE_SHIFT
1007 int 1007 int
1008 default "4" if MACH_DECSTATION 1008 default "4" if MACH_DECSTATION
1009 default "7" if SGI_IP27 || SGI_IP28 || SNI_RM 1009 default "7" if SGI_IP22 || SGI_IP27 || SGI_IP28 || SNI_RM
1010 default "4" if PMC_MSP4200_EVAL 1010 default "4" if PMC_MSP4200_EVAL
1011 default "5" 1011 default "5"
1012 1012
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 69648d01acc0..ad36c946ff96 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -538,19 +538,19 @@ cflags-$(CONFIG_SIBYTE_BCM1x80) += -Iinclude/asm-mips/mach-sibyte \
538# Sibyte SWARM board 538# Sibyte SWARM board
539# Sibyte BCM91x80 (BigSur) board 539# Sibyte BCM91x80 (BigSur) board
540# 540#
541libs-$(CONFIG_SIBYTE_CARMEL) += arch/mips/sibyte/swarm/ 541core-$(CONFIG_SIBYTE_CARMEL) += arch/mips/sibyte/swarm/
542load-$(CONFIG_SIBYTE_CARMEL) := 0xffffffff80100000 542load-$(CONFIG_SIBYTE_CARMEL) := 0xffffffff80100000
543libs-$(CONFIG_SIBYTE_CRHINE) += arch/mips/sibyte/swarm/ 543core-$(CONFIG_SIBYTE_CRHINE) += arch/mips/sibyte/swarm/
544load-$(CONFIG_SIBYTE_CRHINE) := 0xffffffff80100000 544load-$(CONFIG_SIBYTE_CRHINE) := 0xffffffff80100000
545libs-$(CONFIG_SIBYTE_CRHONE) += arch/mips/sibyte/swarm/ 545core-$(CONFIG_SIBYTE_CRHONE) += arch/mips/sibyte/swarm/
546load-$(CONFIG_SIBYTE_CRHONE) := 0xffffffff80100000 546load-$(CONFIG_SIBYTE_CRHONE) := 0xffffffff80100000
547libs-$(CONFIG_SIBYTE_RHONE) += arch/mips/sibyte/swarm/ 547core-$(CONFIG_SIBYTE_RHONE) += arch/mips/sibyte/swarm/
548load-$(CONFIG_SIBYTE_RHONE) := 0xffffffff80100000 548load-$(CONFIG_SIBYTE_RHONE) := 0xffffffff80100000
549libs-$(CONFIG_SIBYTE_SENTOSA) += arch/mips/sibyte/swarm/ 549core-$(CONFIG_SIBYTE_SENTOSA) += arch/mips/sibyte/swarm/
550load-$(CONFIG_SIBYTE_SENTOSA) := 0xffffffff80100000 550load-$(CONFIG_SIBYTE_SENTOSA) := 0xffffffff80100000
551libs-$(CONFIG_SIBYTE_SWARM) += arch/mips/sibyte/swarm/ 551core-$(CONFIG_SIBYTE_SWARM) += arch/mips/sibyte/swarm/
552load-$(CONFIG_SIBYTE_SWARM) := 0xffffffff80100000 552load-$(CONFIG_SIBYTE_SWARM) := 0xffffffff80100000
553libs-$(CONFIG_SIBYTE_BIGSUR) += arch/mips/sibyte/swarm/ 553core-$(CONFIG_SIBYTE_BIGSUR) += arch/mips/sibyte/swarm/
554load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000 554load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000
555 555
556# 556#
@@ -565,7 +565,11 @@ load-$(CONFIG_BCM47XX) := 0xffffffff80001000
565# 565#
566core-$(CONFIG_SNI_RM) += arch/mips/sni/ 566core-$(CONFIG_SNI_RM) += arch/mips/sni/
567cflags-$(CONFIG_SNI_RM) += -Iinclude/asm-mips/mach-rm 567cflags-$(CONFIG_SNI_RM) += -Iinclude/asm-mips/mach-rm
568ifdef CONFIG_CPU_LITTLE_ENDIAN
568load-$(CONFIG_SNI_RM) += 0xffffffff80600000 569load-$(CONFIG_SNI_RM) += 0xffffffff80600000
570else
571load-$(CONFIG_SNI_RM) += 0xffffffff80030000
572endif
569all-$(CONFIG_SNI_RM) := vmlinux.ecoff 573all-$(CONFIG_SNI_RM) := vmlinux.ecoff
570 574
571# 575#
diff --git a/arch/mips/au1000/common/platform.c b/arch/mips/au1000/common/platform.c
index 8cae7753ef79..74d6d4a593be 100644
--- a/arch/mips/au1000/common/platform.c
+++ b/arch/mips/au1000/common/platform.c
@@ -165,12 +165,12 @@ static struct resource au1xxx_usb_gdt_resources[] = {
165static struct resource au1xxx_mmc_resources[] = { 165static struct resource au1xxx_mmc_resources[] = {
166 [0] = { 166 [0] = {
167 .start = SD0_PHYS_ADDR, 167 .start = SD0_PHYS_ADDR,
168 .end = SD0_PHYS_ADDR + 0x40, 168 .end = SD0_PHYS_ADDR + 0x7ffff,
169 .flags = IORESOURCE_MEM, 169 .flags = IORESOURCE_MEM,
170 }, 170 },
171 [1] = { 171 [1] = {
172 .start = SD1_PHYS_ADDR, 172 .start = SD1_PHYS_ADDR,
173 .end = SD1_PHYS_ADDR + 0x40, 173 .end = SD1_PHYS_ADDR + 0x7ffff,
174 .flags = IORESOURCE_MEM, 174 .flags = IORESOURCE_MEM,
175 }, 175 },
176 [2] = { 176 [2] = {
diff --git a/arch/mips/configs/sb1250-swarm_defconfig b/arch/mips/configs/sb1250-swarm_defconfig
index 117470b60e34..4b8799802788 100644
--- a/arch/mips/configs/sb1250-swarm_defconfig
+++ b/arch/mips/configs/sb1250-swarm_defconfig
@@ -1,67 +1,58 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20 3# Linux kernel version: 2.6.25
4# Tue Feb 20 21:47:40 2007 4# Sat May 3 00:38:11 2008
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
8# 8#
9# Machine selection 9# Machine selection
10# 10#
11CONFIG_ZONE_DMA=y 11# CONFIG_MACH_ALCHEMY is not set
12# CONFIG_MIPS_MTX1 is not set
13# CONFIG_MIPS_BOSPORUS is not set
14# CONFIG_MIPS_PB1000 is not set
15# CONFIG_MIPS_PB1100 is not set
16# CONFIG_MIPS_PB1500 is not set
17# CONFIG_MIPS_PB1550 is not set
18# CONFIG_MIPS_PB1200 is not set
19# CONFIG_MIPS_DB1000 is not set
20# CONFIG_MIPS_DB1100 is not set
21# CONFIG_MIPS_DB1500 is not set
22# CONFIG_MIPS_DB1550 is not set
23# CONFIG_MIPS_DB1200 is not set
24# CONFIG_MIPS_MIRAGE is not set
25# CONFIG_BASLER_EXCITE is not set 12# CONFIG_BASLER_EXCITE is not set
13# CONFIG_BCM47XX is not set
26# CONFIG_MIPS_COBALT is not set 14# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 15# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 16# CONFIG_MACH_JAZZ is not set
17# CONFIG_LASAT is not set
18# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 19# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 20# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 21# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 22# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 23# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 24# CONFIG_MACH_VR41XX is not set
36# CONFIG_PNX8550_JBS is not set 25# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 26# CONFIG_PNX8550_STB810 is not set
38# CONFIG_MACH_VR41XX is not set 27# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 28# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_MARKEINS is not set
41# CONFIG_SGI_IP22 is not set 29# CONFIG_SGI_IP22 is not set
42# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
31# CONFIG_SGI_IP28 is not set
43# CONFIG_SGI_IP32 is not set 32# CONFIG_SGI_IP32 is not set
44# CONFIG_SIBYTE_BIGSUR is not set
45CONFIG_SIBYTE_SWARM=y
46# CONFIG_SIBYTE_SENTOSA is not set
47# CONFIG_SIBYTE_RHONE is not set
48# CONFIG_SIBYTE_CARMEL is not set
49# CONFIG_SIBYTE_LITTLESUR is not set
50# CONFIG_SIBYTE_CRHINE is not set 33# CONFIG_SIBYTE_CRHINE is not set
34# CONFIG_SIBYTE_CARMEL is not set
51# CONFIG_SIBYTE_CRHONE is not set 35# CONFIG_SIBYTE_CRHONE is not set
36# CONFIG_SIBYTE_RHONE is not set
37CONFIG_SIBYTE_SWARM=y
38# CONFIG_SIBYTE_LITTLESUR is not set
39# CONFIG_SIBYTE_SENTOSA is not set
40# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SNI_RM is not set 41# CONFIG_SNI_RM is not set
53# CONFIG_TOSHIBA_JMR3927 is not set 42# CONFIG_TOSHIBA_JMR3927 is not set
54# CONFIG_TOSHIBA_RBTX4927 is not set 43# CONFIG_TOSHIBA_RBTX4927 is not set
55# CONFIG_TOSHIBA_RBTX4938 is not set 44# CONFIG_TOSHIBA_RBTX4938 is not set
45# CONFIG_WR_PPMC is not set
56CONFIG_SIBYTE_SB1250=y 46CONFIG_SIBYTE_SB1250=y
57CONFIG_SIBYTE_SB1xxx_SOC=y 47CONFIG_SIBYTE_SB1xxx_SOC=y
58CONFIG_CPU_SB1_PASS_1=y 48# CONFIG_CPU_SB1_PASS_1 is not set
59# CONFIG_CPU_SB1_PASS_2_1250 is not set 49# CONFIG_CPU_SB1_PASS_2_1250 is not set
60# CONFIG_CPU_SB1_PASS_2_2 is not set 50CONFIG_CPU_SB1_PASS_2_2=y
61# CONFIG_CPU_SB1_PASS_4 is not set 51# CONFIG_CPU_SB1_PASS_4 is not set
62# CONFIG_CPU_SB1_PASS_2_112x is not set 52# CONFIG_CPU_SB1_PASS_2_112x is not set
63# CONFIG_CPU_SB1_PASS_3 is not set 53# CONFIG_CPU_SB1_PASS_3 is not set
64CONFIG_SIBYTE_HAS_LDT=y 54CONFIG_SIBYTE_HAS_LDT=y
55CONFIG_SIBYTE_ENABLE_LDT_IF_PCI=y
65# CONFIG_SIMULATION is not set 56# CONFIG_SIMULATION is not set
66# CONFIG_SB1_CEX_ALWAYS_FATAL is not set 57# CONFIG_SB1_CEX_ALWAYS_FATAL is not set
67# CONFIG_SB1_CERR_STALL is not set 58# CONFIG_SB1_CERR_STALL is not set
@@ -69,20 +60,32 @@ CONFIG_SIBYTE_CFE=y
69# CONFIG_SIBYTE_CFE_CONSOLE is not set 60# CONFIG_SIBYTE_CFE_CONSOLE is not set
70# CONFIG_SIBYTE_BUS_WATCHER is not set 61# CONFIG_SIBYTE_BUS_WATCHER is not set
71# CONFIG_SIBYTE_TBPROF is not set 62# CONFIG_SIBYTE_TBPROF is not set
63CONFIG_SIBYTE_HAS_ZBUS_PROFILING=y
72CONFIG_RWSEM_GENERIC_SPINLOCK=y 64CONFIG_RWSEM_GENERIC_SPINLOCK=y
73# CONFIG_ARCH_HAS_ILOG2_U32 is not set 65# CONFIG_ARCH_HAS_ILOG2_U32 is not set
74# CONFIG_ARCH_HAS_ILOG2_U64 is not set 66# CONFIG_ARCH_HAS_ILOG2_U64 is not set
67CONFIG_ARCH_SUPPORTS_OPROFILE=y
75CONFIG_GENERIC_FIND_NEXT_BIT=y 68CONFIG_GENERIC_FIND_NEXT_BIT=y
76CONFIG_GENERIC_HWEIGHT=y 69CONFIG_GENERIC_HWEIGHT=y
77CONFIG_GENERIC_CALIBRATE_DELAY=y 70CONFIG_GENERIC_CALIBRATE_DELAY=y
71CONFIG_GENERIC_CLOCKEVENTS=y
78CONFIG_GENERIC_TIME=y 72CONFIG_GENERIC_TIME=y
73CONFIG_GENERIC_CMOS_UPDATE=y
79CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 74CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
80# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set 75# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
76CONFIG_CEVT_SB1250=y
77CONFIG_CSRC_SB1250=y
78CONFIG_CFE=y
81CONFIG_DMA_COHERENT=y 79CONFIG_DMA_COHERENT=y
80CONFIG_EARLY_PRINTK=y
81CONFIG_SYS_HAS_EARLY_PRINTK=y
82# CONFIG_HOTPLUG_CPU is not set
83# CONFIG_NO_IOPORT is not set
82CONFIG_CPU_BIG_ENDIAN=y 84CONFIG_CPU_BIG_ENDIAN=y
83# CONFIG_CPU_LITTLE_ENDIAN is not set 85# CONFIG_CPU_LITTLE_ENDIAN is not set
84CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 86CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
85CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 87CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
88CONFIG_IRQ_CPU=y
86CONFIG_SWAP_IO_SPACE=y 89CONFIG_SWAP_IO_SPACE=y
87CONFIG_BOOT_ELF32=y 90CONFIG_BOOT_ELF32=y
88CONFIG_MIPS_L1_CACHE_SHIFT=5 91CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -90,6 +93,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
90# 93#
91# CPU selection 94# CPU selection
92# 95#
96# CONFIG_CPU_LOONGSON2 is not set
93# CONFIG_CPU_MIPS32_R1 is not set 97# CONFIG_CPU_MIPS32_R1 is not set
94# CONFIG_CPU_MIPS32_R2 is not set 98# CONFIG_CPU_MIPS32_R2 is not set
95# CONFIG_CPU_MIPS64_R1 is not set 99# CONFIG_CPU_MIPS64_R1 is not set
@@ -130,8 +134,7 @@ CONFIG_CPU_HAS_PREFETCH=y
130CONFIG_MIPS_MT_DISABLED=y 134CONFIG_MIPS_MT_DISABLED=y
131# CONFIG_MIPS_MT_SMP is not set 135# CONFIG_MIPS_MT_SMP is not set
132# CONFIG_MIPS_MT_SMTC is not set 136# CONFIG_MIPS_MT_SMTC is not set
133# CONFIG_MIPS_VPE_LOADER is not set 137CONFIG_SB1_PASS_2_WORKAROUNDS=y
134CONFIG_SB1_PASS_1_WORKAROUNDS=y
135CONFIG_CPU_HAS_LLSC=y 138CONFIG_CPU_HAS_LLSC=y
136CONFIG_CPU_HAS_SYNC=y 139CONFIG_CPU_HAS_SYNC=y
137CONFIG_GENERIC_HARDIRQS=y 140CONFIG_GENERIC_HARDIRQS=y
@@ -140,6 +143,7 @@ CONFIG_IRQ_PER_CPU=y
140CONFIG_CPU_SUPPORTS_HIGHMEM=y 143CONFIG_CPU_SUPPORTS_HIGHMEM=y
141CONFIG_SYS_SUPPORTS_HIGHMEM=y 144CONFIG_SYS_SUPPORTS_HIGHMEM=y
142CONFIG_ARCH_FLATMEM_ENABLE=y 145CONFIG_ARCH_FLATMEM_ENABLE=y
146CONFIG_ARCH_POPULATES_NODE_MAP=y
143CONFIG_SELECT_MEMORY_MODEL=y 147CONFIG_SELECT_MEMORY_MODEL=y
144CONFIG_FLATMEM_MANUAL=y 148CONFIG_FLATMEM_MANUAL=y
145# CONFIG_DISCONTIGMEM_MANUAL is not set 149# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -147,13 +151,19 @@ CONFIG_FLATMEM_MANUAL=y
147CONFIG_FLATMEM=y 151CONFIG_FLATMEM=y
148CONFIG_FLAT_NODE_MEM_MAP=y 152CONFIG_FLAT_NODE_MEM_MAP=y
149# CONFIG_SPARSEMEM_STATIC is not set 153# CONFIG_SPARSEMEM_STATIC is not set
154# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
150CONFIG_SPLIT_PTLOCK_CPUS=4 155CONFIG_SPLIT_PTLOCK_CPUS=4
151CONFIG_RESOURCES_64BIT=y 156CONFIG_RESOURCES_64BIT=y
152CONFIG_ZONE_DMA_FLAG=1 157CONFIG_ZONE_DMA_FLAG=0
158CONFIG_VIRT_TO_BUS=y
153CONFIG_SMP=y 159CONFIG_SMP=y
154CONFIG_SYS_SUPPORTS_SMP=y 160CONFIG_SYS_SUPPORTS_SMP=y
155CONFIG_NR_CPUS_DEFAULT_2=y 161CONFIG_NR_CPUS_DEFAULT_2=y
156CONFIG_NR_CPUS=2 162CONFIG_NR_CPUS=2
163CONFIG_TICK_ONESHOT=y
164# CONFIG_NO_HZ is not set
165CONFIG_HIGH_RES_TIMERS=y
166CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
157# CONFIG_HZ_48 is not set 167# CONFIG_HZ_48 is not set
158# CONFIG_HZ_100 is not set 168# CONFIG_HZ_100 is not set
159# CONFIG_HZ_128 is not set 169# CONFIG_HZ_128 is not set
@@ -166,38 +176,49 @@ CONFIG_HZ=1000
166CONFIG_PREEMPT_NONE=y 176CONFIG_PREEMPT_NONE=y
167# CONFIG_PREEMPT_VOLUNTARY is not set 177# CONFIG_PREEMPT_VOLUNTARY is not set
168# CONFIG_PREEMPT is not set 178# CONFIG_PREEMPT is not set
169CONFIG_PREEMPT_BKL=y
170# CONFIG_KEXEC is not set 179# CONFIG_KEXEC is not set
180CONFIG_SECCOMP=y
171CONFIG_LOCKDEP_SUPPORT=y 181CONFIG_LOCKDEP_SUPPORT=y
172CONFIG_STACKTRACE_SUPPORT=y 182CONFIG_STACKTRACE_SUPPORT=y
173CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 183CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
174 184
175# 185#
176# Code maturity level options 186# General setup
177# 187#
178CONFIG_EXPERIMENTAL=y 188CONFIG_EXPERIMENTAL=y
179CONFIG_LOCK_KERNEL=y 189CONFIG_LOCK_KERNEL=y
180CONFIG_INIT_ENV_ARG_LIMIT=32 190CONFIG_INIT_ENV_ARG_LIMIT=32
181
182#
183# General setup
184#
185CONFIG_LOCALVERSION="" 191CONFIG_LOCALVERSION=""
186CONFIG_LOCALVERSION_AUTO=y 192CONFIG_LOCALVERSION_AUTO=y
187CONFIG_SWAP=y 193CONFIG_SWAP=y
188CONFIG_SYSVIPC=y 194CONFIG_SYSVIPC=y
189# CONFIG_IPC_NS is not set
190CONFIG_SYSVIPC_SYSCTL=y 195CONFIG_SYSVIPC_SYSCTL=y
191# CONFIG_POSIX_MQUEUE is not set 196# CONFIG_POSIX_MQUEUE is not set
192# CONFIG_BSD_PROCESS_ACCT is not set 197# CONFIG_BSD_PROCESS_ACCT is not set
193# CONFIG_TASKSTATS is not set 198# CONFIG_TASKSTATS is not set
194# CONFIG_UTS_NS is not set
195# CONFIG_AUDIT is not set 199# CONFIG_AUDIT is not set
196# CONFIG_IKCONFIG is not set 200# CONFIG_IKCONFIG is not set
201CONFIG_LOG_BUF_SHIFT=15
197CONFIG_CGROUPS=y 202CONFIG_CGROUPS=y
203# CONFIG_CGROUP_DEBUG is not set
204# CONFIG_CGROUP_NS is not set
198CONFIG_CPUSETS=y 205CONFIG_CPUSETS=y
199CONFIG_SYSFS_DEPRECATED=y 206CONFIG_GROUP_SCHED=y
207CONFIG_FAIR_GROUP_SCHED=y
208# CONFIG_RT_GROUP_SCHED is not set
209CONFIG_USER_SCHED=y
210# CONFIG_CGROUP_SCHED is not set
211CONFIG_CGROUP_CPUACCT=y
212# CONFIG_RESOURCE_COUNTERS is not set
213# CONFIG_SYSFS_DEPRECATED_V2 is not set
214# CONFIG_PROC_PID_CPUSET is not set
200CONFIG_RELAY=y 215CONFIG_RELAY=y
216CONFIG_NAMESPACES=y
217# CONFIG_UTS_NS is not set
218# CONFIG_IPC_NS is not set
219# CONFIG_USER_NS is not set
220# CONFIG_PID_NS is not set
221CONFIG_BLK_DEV_INITRD=y
201CONFIG_INITRAMFS_SOURCE="" 222CONFIG_INITRAMFS_SOURCE=""
202# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 223# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
203CONFIG_SYSCTL=y 224CONFIG_SYSCTL=y
@@ -209,20 +230,29 @@ CONFIG_HOTPLUG=y
209CONFIG_PRINTK=y 230CONFIG_PRINTK=y
210CONFIG_BUG=y 231CONFIG_BUG=y
211CONFIG_ELF_CORE=y 232CONFIG_ELF_CORE=y
233# CONFIG_COMPAT_BRK is not set
212CONFIG_BASE_FULL=y 234CONFIG_BASE_FULL=y
213CONFIG_FUTEX=y 235CONFIG_FUTEX=y
236CONFIG_ANON_INODES=y
214CONFIG_EPOLL=y 237CONFIG_EPOLL=y
238CONFIG_SIGNALFD=y
239CONFIG_TIMERFD=y
240CONFIG_EVENTFD=y
215CONFIG_SHMEM=y 241CONFIG_SHMEM=y
216CONFIG_SLAB=y
217CONFIG_VM_EVENT_COUNTERS=y 242CONFIG_VM_EVENT_COUNTERS=y
243CONFIG_SLAB=y
244# CONFIG_SLUB is not set
245# CONFIG_SLOB is not set
246# CONFIG_PROFILING is not set
247# CONFIG_MARKERS is not set
248CONFIG_HAVE_OPROFILE=y
249# CONFIG_HAVE_KPROBES is not set
250# CONFIG_HAVE_KRETPROBES is not set
251CONFIG_PROC_PAGE_MONITOR=y
252CONFIG_SLABINFO=y
218CONFIG_RT_MUTEXES=y 253CONFIG_RT_MUTEXES=y
219# CONFIG_TINY_SHMEM is not set 254# CONFIG_TINY_SHMEM is not set
220CONFIG_BASE_SMALL=0 255CONFIG_BASE_SMALL=0
221# CONFIG_SLOB is not set
222
223#
224# Loadable module support
225#
226CONFIG_MODULES=y 256CONFIG_MODULES=y
227CONFIG_MODULE_UNLOAD=y 257CONFIG_MODULE_UNLOAD=y
228# CONFIG_MODULE_FORCE_UNLOAD is not set 258# CONFIG_MODULE_FORCE_UNLOAD is not set
@@ -230,12 +260,10 @@ CONFIG_MODVERSIONS=y
230CONFIG_MODULE_SRCVERSION_ALL=y 260CONFIG_MODULE_SRCVERSION_ALL=y
231CONFIG_KMOD=y 261CONFIG_KMOD=y
232CONFIG_STOP_MACHINE=y 262CONFIG_STOP_MACHINE=y
233
234#
235# Block layer
236#
237CONFIG_BLOCK=y 263CONFIG_BLOCK=y
238# CONFIG_BLK_DEV_IO_TRACE is not set 264# CONFIG_BLK_DEV_IO_TRACE is not set
265CONFIG_BLK_DEV_BSG=y
266CONFIG_BLOCK_COMPAT=y
239 267
240# 268#
241# IO Schedulers 269# IO Schedulers
@@ -249,22 +277,19 @@ CONFIG_DEFAULT_AS=y
249# CONFIG_DEFAULT_CFQ is not set 277# CONFIG_DEFAULT_CFQ is not set
250# CONFIG_DEFAULT_NOOP is not set 278# CONFIG_DEFAULT_NOOP is not set
251CONFIG_DEFAULT_IOSCHED="anticipatory" 279CONFIG_DEFAULT_IOSCHED="anticipatory"
280CONFIG_CLASSIC_RCU=y
252 281
253# 282#
254# Bus options (PCI, PCMCIA, EISA, ISA, TC) 283# Bus options (PCI, PCMCIA, EISA, ISA, TC)
255# 284#
256CONFIG_HW_HAS_PCI=y 285CONFIG_HW_HAS_PCI=y
257CONFIG_PCI=y 286CONFIG_PCI=y
287CONFIG_PCI_DOMAINS=y
288# CONFIG_ARCH_SUPPORTS_MSI is not set
289# CONFIG_PCI_LEGACY is not set
258CONFIG_MMU=y 290CONFIG_MMU=y
259 291CONFIG_ZONE_DMA32=y
260#
261# PCCARD (PCMCIA/CardBus) support
262#
263# CONFIG_PCCARD is not set 292# CONFIG_PCCARD is not set
264
265#
266# PCI Hotplug Support
267#
268# CONFIG_HOTPLUG_PCI is not set 293# CONFIG_HOTPLUG_PCI is not set
269 294
270# 295#
@@ -272,7 +297,6 @@ CONFIG_MMU=y
272# 297#
273CONFIG_BINFMT_ELF=y 298CONFIG_BINFMT_ELF=y
274# CONFIG_BINFMT_MISC is not set 299# CONFIG_BINFMT_MISC is not set
275# CONFIG_BUILD_ELF64 is not set
276CONFIG_MIPS32_COMPAT=y 300CONFIG_MIPS32_COMPAT=y
277CONFIG_COMPAT=y 301CONFIG_COMPAT=y
278CONFIG_SYSVIPC_COMPAT=y 302CONFIG_SYSVIPC_COMPAT=y
@@ -286,7 +310,6 @@ CONFIG_BINFMT_ELF32=y
286CONFIG_PM=y 310CONFIG_PM=y
287# CONFIG_PM_LEGACY is not set 311# CONFIG_PM_LEGACY is not set
288# CONFIG_PM_DEBUG is not set 312# CONFIG_PM_DEBUG is not set
289# CONFIG_PM_SYSFS_DEPRECATED is not set
290 313
291# 314#
292# Networking 315# Networking
@@ -296,7 +319,6 @@ CONFIG_NET=y
296# 319#
297# Networking options 320# Networking options
298# 321#
299# CONFIG_NETDEBUG is not set
300CONFIG_PACKET=y 322CONFIG_PACKET=y
301CONFIG_PACKET_MMAP=y 323CONFIG_PACKET_MMAP=y
302CONFIG_UNIX=y 324CONFIG_UNIX=y
@@ -304,6 +326,7 @@ CONFIG_XFRM=y
304CONFIG_XFRM_USER=m 326CONFIG_XFRM_USER=m
305# CONFIG_XFRM_SUB_POLICY is not set 327# CONFIG_XFRM_SUB_POLICY is not set
306CONFIG_XFRM_MIGRATE=y 328CONFIG_XFRM_MIGRATE=y
329# CONFIG_XFRM_STATISTICS is not set
307CONFIG_NET_KEY=y 330CONFIG_NET_KEY=y
308CONFIG_NET_KEY_MIGRATE=y 331CONFIG_NET_KEY_MIGRATE=y
309CONFIG_INET=y 332CONFIG_INET=y
@@ -326,6 +349,7 @@ CONFIG_IP_PNP_BOOTP=y
326CONFIG_INET_XFRM_MODE_TRANSPORT=m 349CONFIG_INET_XFRM_MODE_TRANSPORT=m
327CONFIG_INET_XFRM_MODE_TUNNEL=m 350CONFIG_INET_XFRM_MODE_TUNNEL=m
328CONFIG_INET_XFRM_MODE_BEET=m 351CONFIG_INET_XFRM_MODE_BEET=m
352CONFIG_INET_LRO=m
329CONFIG_INET_DIAG=y 353CONFIG_INET_DIAG=y
330CONFIG_INET_TCP_DIAG=y 354CONFIG_INET_TCP_DIAG=y
331# CONFIG_TCP_CONG_ADVANCED is not set 355# CONFIG_TCP_CONG_ADVANCED is not set
@@ -333,24 +357,15 @@ CONFIG_TCP_CONG_CUBIC=y
333CONFIG_DEFAULT_TCP_CONG="cubic" 357CONFIG_DEFAULT_TCP_CONG="cubic"
334CONFIG_TCP_MD5SIG=y 358CONFIG_TCP_MD5SIG=y
335# CONFIG_IPV6 is not set 359# CONFIG_IPV6 is not set
336# CONFIG_INET6_XFRM_TUNNEL is not set
337# CONFIG_INET6_TUNNEL is not set
338CONFIG_NETWORK_SECMARK=y 360CONFIG_NETWORK_SECMARK=y
339# CONFIG_NETFILTER is not set 361# CONFIG_NETFILTER is not set
340
341#
342# DCCP Configuration (EXPERIMENTAL)
343#
344# CONFIG_IP_DCCP is not set 362# CONFIG_IP_DCCP is not set
345 363CONFIG_IP_SCTP=m
346# 364# CONFIG_SCTP_DBG_MSG is not set
347# SCTP Configuration (EXPERIMENTAL) 365# CONFIG_SCTP_DBG_OBJCNT is not set
348# 366# CONFIG_SCTP_HMAC_NONE is not set
349# CONFIG_IP_SCTP is not set 367# CONFIG_SCTP_HMAC_SHA1 is not set
350 368CONFIG_SCTP_HMAC_MD5=y
351#
352# TIPC Configuration (EXPERIMENTAL)
353#
354# CONFIG_TIPC is not set 369# CONFIG_TIPC is not set
355# CONFIG_ATM is not set 370# CONFIG_ATM is not set
356# CONFIG_BRIDGE is not set 371# CONFIG_BRIDGE is not set
@@ -363,26 +378,52 @@ CONFIG_NETWORK_SECMARK=y
363# CONFIG_LAPB is not set 378# CONFIG_LAPB is not set
364# CONFIG_ECONET is not set 379# CONFIG_ECONET is not set
365# CONFIG_WAN_ROUTER is not set 380# CONFIG_WAN_ROUTER is not set
366
367#
368# QoS and/or fair queueing
369#
370# CONFIG_NET_SCHED is not set 381# CONFIG_NET_SCHED is not set
382CONFIG_NET_SCH_FIFO=y
371 383
372# 384#
373# Network testing 385# Network testing
374# 386#
375# CONFIG_NET_PKTGEN is not set 387# CONFIG_NET_PKTGEN is not set
376# CONFIG_HAMRADIO is not set 388# CONFIG_HAMRADIO is not set
389# CONFIG_CAN is not set
377# CONFIG_IRDA is not set 390# CONFIG_IRDA is not set
378# CONFIG_BT is not set 391# CONFIG_BT is not set
392# CONFIG_AF_RXRPC is not set
393
394#
395# Wireless
396#
397CONFIG_CFG80211=m
398CONFIG_NL80211=y
399CONFIG_WIRELESS_EXT=y
400CONFIG_MAC80211=m
401
402#
403# Rate control algorithm selection
404#
405CONFIG_MAC80211_RC_DEFAULT_PID=y
406# CONFIG_MAC80211_RC_DEFAULT_NONE is not set
407
408#
409# Selecting 'y' for an algorithm will
410#
411
412#
413# build the algorithm into mac80211.
414#
415CONFIG_MAC80211_RC_DEFAULT="pid"
416CONFIG_MAC80211_RC_PID=y
417# CONFIG_MAC80211_MESH is not set
418# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
419# CONFIG_MAC80211_DEBUG is not set
379CONFIG_IEEE80211=m 420CONFIG_IEEE80211=m
380# CONFIG_IEEE80211_DEBUG is not set 421# CONFIG_IEEE80211_DEBUG is not set
381CONFIG_IEEE80211_CRYPT_WEP=m 422CONFIG_IEEE80211_CRYPT_WEP=m
382CONFIG_IEEE80211_CRYPT_CCMP=m 423CONFIG_IEEE80211_CRYPT_CCMP=m
383CONFIG_IEEE80211_SOFTMAC=m 424CONFIG_IEEE80211_CRYPT_TKIP=m
384# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 425CONFIG_RFKILL=m
385CONFIG_WIRELESS_EXT=y 426# CONFIG_NET_9P is not set
386 427
387# 428#
388# Device Drivers 429# Device Drivers
@@ -391,34 +432,15 @@ CONFIG_WIRELESS_EXT=y
391# 432#
392# Generic Driver Options 433# Generic Driver Options
393# 434#
435CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
394CONFIG_STANDALONE=y 436CONFIG_STANDALONE=y
395CONFIG_PREVENT_FIRMWARE_BUILD=y 437CONFIG_PREVENT_FIRMWARE_BUILD=y
396CONFIG_FW_LOADER=m 438CONFIG_FW_LOADER=m
397# CONFIG_SYS_HYPERVISOR is not set 439# CONFIG_SYS_HYPERVISOR is not set
398
399#
400# Connector - unified userspace <-> kernelspace linker
401#
402CONFIG_CONNECTOR=m 440CONFIG_CONNECTOR=m
403
404#
405# Memory Technology Devices (MTD)
406#
407# CONFIG_MTD is not set 441# CONFIG_MTD is not set
408
409#
410# Parallel port support
411#
412# CONFIG_PARPORT is not set 442# CONFIG_PARPORT is not set
413 443CONFIG_BLK_DEV=y
414#
415# Plug and Play support
416#
417# CONFIG_PNPACPI is not set
418
419#
420# Block devices
421#
422# CONFIG_BLK_CPQ_DA is not set 444# CONFIG_BLK_CPQ_DA is not set
423# CONFIG_BLK_CPQ_CISS_DA is not set 445# CONFIG_BLK_CPQ_CISS_DA is not set
424# CONFIG_BLK_DEV_DAC960 is not set 446# CONFIG_BLK_DEV_DAC960 is not set
@@ -427,49 +449,77 @@ CONFIG_CONNECTOR=m
427# CONFIG_BLK_DEV_LOOP is not set 449# CONFIG_BLK_DEV_LOOP is not set
428# CONFIG_BLK_DEV_NBD is not set 450# CONFIG_BLK_DEV_NBD is not set
429# CONFIG_BLK_DEV_SX8 is not set 451# CONFIG_BLK_DEV_SX8 is not set
452# CONFIG_BLK_DEV_UB is not set
430CONFIG_BLK_DEV_RAM=y 453CONFIG_BLK_DEV_RAM=y
431CONFIG_BLK_DEV_RAM_COUNT=16 454CONFIG_BLK_DEV_RAM_COUNT=16
432CONFIG_BLK_DEV_RAM_SIZE=9220 455CONFIG_BLK_DEV_RAM_SIZE=9220
433CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 456# CONFIG_BLK_DEV_XIP is not set
434CONFIG_BLK_DEV_INITRD=y
435CONFIG_CDROM_PKTCDVD=m 457CONFIG_CDROM_PKTCDVD=m
436CONFIG_CDROM_PKTCDVD_BUFFERS=8 458CONFIG_CDROM_PKTCDVD_BUFFERS=8
437# CONFIG_CDROM_PKTCDVD_WCACHE is not set 459# CONFIG_CDROM_PKTCDVD_WCACHE is not set
438CONFIG_ATA_OVER_ETH=m 460CONFIG_ATA_OVER_ETH=m
439 461CONFIG_MISC_DEVICES=y
440# 462# CONFIG_PHANTOM is not set
441# Misc devices 463# CONFIG_EEPROM_93CX6 is not set
442#
443CONFIG_SGI_IOC4=m 464CONFIG_SGI_IOC4=m
444# CONFIG_TIFM_CORE is not set 465# CONFIG_TIFM_CORE is not set
445 466# CONFIG_ENCLOSURE_SERVICES is not set
446# 467CONFIG_HAVE_IDE=y
447# ATA/ATAPI/MFM/RLL support
448#
449CONFIG_IDE=y 468CONFIG_IDE=y
450CONFIG_IDE_MAX_HWIFS=4 469CONFIG_IDE_MAX_HWIFS=4
451CONFIG_BLK_DEV_IDE=y 470CONFIG_BLK_DEV_IDE=y
452 471
453# 472#
454# Please see Documentation/ide.txt for help/info on IDE drives 473# Please see Documentation/ide/ide.txt for help/info on IDE drives
455# 474#
456# CONFIG_BLK_DEV_IDE_SATA is not set 475# CONFIG_BLK_DEV_IDE_SATA is not set
457CONFIG_BLK_DEV_IDEDISK=y 476CONFIG_BLK_DEV_IDEDISK=y
458# CONFIG_IDEDISK_MULTI_MODE is not set 477# CONFIG_IDEDISK_MULTI_MODE is not set
459CONFIG_BLK_DEV_IDECD=y 478CONFIG_BLK_DEV_IDECD=y
479CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
460CONFIG_BLK_DEV_IDETAPE=y 480CONFIG_BLK_DEV_IDETAPE=y
461CONFIG_BLK_DEV_IDEFLOPPY=y 481CONFIG_BLK_DEV_IDEFLOPPY=y
462# CONFIG_IDE_TASK_IOCTL is not set 482# CONFIG_IDE_TASK_IOCTL is not set
483CONFIG_IDE_PROC_FS=y
463 484
464# 485#
465# IDE chipset support/bugfixes 486# IDE chipset support/bugfixes
466# 487#
467CONFIG_IDE_GENERIC=y 488# CONFIG_IDE_GENERIC is not set
468# CONFIG_BLK_DEV_IDEPCI is not set 489# CONFIG_BLK_DEV_PLATFORM is not set
490
491#
492# PCI IDE chipsets support
493#
494# CONFIG_BLK_DEV_GENERIC is not set
495# CONFIG_BLK_DEV_OPTI621 is not set
496# CONFIG_BLK_DEV_AEC62XX is not set
497# CONFIG_BLK_DEV_ALI15X3 is not set
498# CONFIG_BLK_DEV_AMD74XX is not set
499# CONFIG_BLK_DEV_CMD64X is not set
500# CONFIG_BLK_DEV_TRIFLEX is not set
501# CONFIG_BLK_DEV_CY82C693 is not set
502# CONFIG_BLK_DEV_CS5520 is not set
503# CONFIG_BLK_DEV_CS5530 is not set
504# CONFIG_BLK_DEV_HPT34X is not set
505# CONFIG_BLK_DEV_HPT366 is not set
506# CONFIG_BLK_DEV_JMICRON is not set
507# CONFIG_BLK_DEV_SC1200 is not set
508# CONFIG_BLK_DEV_PIIX is not set
509# CONFIG_BLK_DEV_IT8213 is not set
510# CONFIG_BLK_DEV_IT821X is not set
511# CONFIG_BLK_DEV_NS87415 is not set
512# CONFIG_BLK_DEV_PDC202XX_OLD is not set
513# CONFIG_BLK_DEV_PDC202XX_NEW is not set
514# CONFIG_BLK_DEV_SVWKS is not set
515# CONFIG_BLK_DEV_SIIMAGE is not set
516# CONFIG_BLK_DEV_SLC90E66 is not set
517# CONFIG_BLK_DEV_TRM290 is not set
518# CONFIG_BLK_DEV_VIA82CXXX is not set
519# CONFIG_BLK_DEV_TC86C001 is not set
469CONFIG_BLK_DEV_IDE_SWARM=y 520CONFIG_BLK_DEV_IDE_SWARM=y
470# CONFIG_IDE_ARM is not set
471# CONFIG_BLK_DEV_IDEDMA is not set 521# CONFIG_BLK_DEV_IDEDMA is not set
472# CONFIG_IDEDMA_AUTO is not set 522# CONFIG_BLK_DEV_HD_ONLY is not set
473# CONFIG_BLK_DEV_HD is not set 523# CONFIG_BLK_DEV_HD is not set
474 524
475# 525#
@@ -477,89 +527,68 @@ CONFIG_BLK_DEV_IDE_SWARM=y
477# 527#
478CONFIG_RAID_ATTRS=m 528CONFIG_RAID_ATTRS=m
479# CONFIG_SCSI is not set 529# CONFIG_SCSI is not set
530# CONFIG_SCSI_DMA is not set
480# CONFIG_SCSI_NETLINK is not set 531# CONFIG_SCSI_NETLINK is not set
481
482#
483# Serial ATA (prod) and Parallel ATA (experimental) drivers
484#
485# CONFIG_ATA is not set 532# CONFIG_ATA is not set
486
487#
488# Multi-device support (RAID and LVM)
489#
490# CONFIG_MD is not set 533# CONFIG_MD is not set
491
492#
493# Fusion MPT device support
494#
495# CONFIG_FUSION is not set 534# CONFIG_FUSION is not set
496 535
497# 536#
498# IEEE 1394 (FireWire) support 537# IEEE 1394 (FireWire) support
499# 538#
539# CONFIG_FIREWIRE is not set
500# CONFIG_IEEE1394 is not set 540# CONFIG_IEEE1394 is not set
501
502#
503# I2O device support
504#
505# CONFIG_I2O is not set 541# CONFIG_I2O is not set
506
507#
508# Network device support
509#
510CONFIG_NETDEVICES=y 542CONFIG_NETDEVICES=y
543CONFIG_NETDEVICES_MULTIQUEUE=y
511# CONFIG_DUMMY is not set 544# CONFIG_DUMMY is not set
512# CONFIG_BONDING is not set 545# CONFIG_BONDING is not set
546CONFIG_MACVLAN=m
513# CONFIG_EQUALIZER is not set 547# CONFIG_EQUALIZER is not set
514# CONFIG_TUN is not set 548# CONFIG_TUN is not set
515 549# CONFIG_VETH is not set
516#
517# ARCnet devices
518#
519# CONFIG_ARCNET is not set 550# CONFIG_ARCNET is not set
520 551CONFIG_PHYLIB=y
521#
522# PHY device support
523#
524CONFIG_PHYLIB=m
525 552
526# 553#
527# MII PHY device drivers 554# MII PHY device drivers
528# 555#
529CONFIG_MARVELL_PHY=m 556# CONFIG_MARVELL_PHY is not set
530CONFIG_DAVICOM_PHY=m 557# CONFIG_DAVICOM_PHY is not set
531CONFIG_QSEMI_PHY=m 558# CONFIG_QSEMI_PHY is not set
532CONFIG_LXT_PHY=m 559# CONFIG_LXT_PHY is not set
533CONFIG_CICADA_PHY=m 560# CONFIG_CICADA_PHY is not set
534CONFIG_VITESSE_PHY=m 561# CONFIG_VITESSE_PHY is not set
535CONFIG_SMSC_PHY=m 562# CONFIG_SMSC_PHY is not set
536# CONFIG_BROADCOM_PHY is not set 563CONFIG_BROADCOM_PHY=y
564# CONFIG_ICPLUS_PHY is not set
565# CONFIG_REALTEK_PHY is not set
537# CONFIG_FIXED_PHY is not set 566# CONFIG_FIXED_PHY is not set
538 567# CONFIG_MDIO_BITBANG is not set
539#
540# Ethernet (10 or 100Mbit)
541#
542CONFIG_NET_ETHERNET=y 568CONFIG_NET_ETHERNET=y
543CONFIG_MII=y 569CONFIG_MII=y
570# CONFIG_AX88796 is not set
544# CONFIG_HAPPYMEAL is not set 571# CONFIG_HAPPYMEAL is not set
545# CONFIG_SUNGEM is not set 572# CONFIG_SUNGEM is not set
546# CONFIG_CASSINI is not set 573# CONFIG_CASSINI is not set
547# CONFIG_NET_VENDOR_3COM is not set 574# CONFIG_NET_VENDOR_3COM is not set
548# CONFIG_DM9000 is not set 575# CONFIG_DM9000 is not set
549
550#
551# Tulip family network device support
552#
553# CONFIG_NET_TULIP is not set 576# CONFIG_NET_TULIP is not set
554# CONFIG_HP100 is not set 577# CONFIG_HP100 is not set
578# CONFIG_IBM_NEW_EMAC_ZMII is not set
579# CONFIG_IBM_NEW_EMAC_RGMII is not set
580# CONFIG_IBM_NEW_EMAC_TAH is not set
581# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
555# CONFIG_NET_PCI is not set 582# CONFIG_NET_PCI is not set
556 583# CONFIG_B44 is not set
557# 584CONFIG_NETDEV_1000=y
558# Ethernet (1000 Mbit)
559#
560# CONFIG_ACENIC is not set 585# CONFIG_ACENIC is not set
561# CONFIG_DL2K is not set 586# CONFIG_DL2K is not set
562# CONFIG_E1000 is not set 587# CONFIG_E1000 is not set
588# CONFIG_E1000E is not set
589# CONFIG_E1000E_ENABLED is not set
590# CONFIG_IP1000 is not set
591# CONFIG_IGB is not set
563# CONFIG_NS83820 is not set 592# CONFIG_NS83820 is not set
564# CONFIG_HAMACHI is not set 593# CONFIG_HAMACHI is not set
565# CONFIG_YELLOWFIN is not set 594# CONFIG_YELLOWFIN is not set
@@ -568,53 +597,70 @@ CONFIG_SB1250_MAC=y
568# CONFIG_SIS190 is not set 597# CONFIG_SIS190 is not set
569# CONFIG_SKGE is not set 598# CONFIG_SKGE is not set
570# CONFIG_SKY2 is not set 599# CONFIG_SKY2 is not set
571# CONFIG_SK98LIN is not set 600# CONFIG_VIA_VELOCITY is not set
572# CONFIG_TIGON3 is not set 601# CONFIG_TIGON3 is not set
573# CONFIG_BNX2 is not set 602# CONFIG_BNX2 is not set
574CONFIG_QLA3XXX=m 603# CONFIG_QLA3XXX is not set
575# CONFIG_ATL1 is not set 604# CONFIG_ATL1 is not set
576 605CONFIG_NETDEV_10000=y
577#
578# Ethernet (10000 Mbit)
579#
580# CONFIG_CHELSIO_T1 is not set 606# CONFIG_CHELSIO_T1 is not set
581CONFIG_CHELSIO_T3=m 607# CONFIG_CHELSIO_T3 is not set
608# CONFIG_IXGBE is not set
582# CONFIG_IXGB is not set 609# CONFIG_IXGB is not set
583# CONFIG_S2IO is not set 610# CONFIG_S2IO is not set
584# CONFIG_MYRI10GE is not set 611# CONFIG_MYRI10GE is not set
585CONFIG_NETXEN_NIC=m 612# CONFIG_NETXEN_NIC is not set
586 613# CONFIG_NIU is not set
587# 614# CONFIG_MLX4_CORE is not set
588# Token Ring devices 615# CONFIG_TEHUTI is not set
589# 616# CONFIG_BNX2X is not set
590# CONFIG_TR is not set 617# CONFIG_TR is not set
591 618
592# 619#
593# Wireless LAN (non-hamradio) 620# Wireless LAN
594# 621#
595# CONFIG_NET_RADIO is not set 622# CONFIG_WLAN_PRE80211 is not set
596 623CONFIG_WLAN_80211=y
597# 624# CONFIG_IPW2100 is not set
598# Wan interfaces 625# CONFIG_IPW2200 is not set
599# 626# CONFIG_LIBERTAS is not set
627# CONFIG_HERMES is not set
628# CONFIG_ATMEL is not set
629# CONFIG_PRISM54 is not set
630# CONFIG_USB_ZD1201 is not set
631# CONFIG_USB_NET_RNDIS_WLAN is not set
632# CONFIG_RTL8180 is not set
633# CONFIG_RTL8187 is not set
634# CONFIG_ADM8211 is not set
635# CONFIG_P54_COMMON is not set
636# CONFIG_ATH5K is not set
637# CONFIG_IWLCORE is not set
638# CONFIG_IWLWIFI_LEDS is not set
639# CONFIG_IWL4965 is not set
640# CONFIG_IWL3945 is not set
641# CONFIG_HOSTAP is not set
642# CONFIG_B43 is not set
643# CONFIG_B43LEGACY is not set
644# CONFIG_ZD1211RW is not set
645# CONFIG_RT2X00 is not set
646
647#
648# USB Network Adapters
649#
650# CONFIG_USB_CATC is not set
651# CONFIG_USB_KAWETH is not set
652# CONFIG_USB_PEGASUS is not set
653# CONFIG_USB_RTL8150 is not set
654# CONFIG_USB_USBNET is not set
600# CONFIG_WAN is not set 655# CONFIG_WAN is not set
601# CONFIG_FDDI is not set 656# CONFIG_FDDI is not set
602# CONFIG_HIPPI is not set 657# CONFIG_HIPPI is not set
603# CONFIG_PPP is not set 658# CONFIG_PPP is not set
604# CONFIG_SLIP is not set 659# CONFIG_SLIP is not set
605# CONFIG_SHAPER is not set
606# CONFIG_NETCONSOLE is not set 660# CONFIG_NETCONSOLE is not set
607# CONFIG_NETPOLL is not set 661# CONFIG_NETPOLL is not set
608# CONFIG_NET_POLL_CONTROLLER is not set 662# CONFIG_NET_POLL_CONTROLLER is not set
609
610#
611# ISDN subsystem
612#
613# CONFIG_ISDN is not set 663# CONFIG_ISDN is not set
614
615#
616# Telephony Support
617#
618# CONFIG_PHONE is not set 664# CONFIG_PHONE is not set
619 665
620# 666#
@@ -637,24 +683,8 @@ CONFIG_SERIO_RAW=m
637# Character devices 683# Character devices
638# 684#
639# CONFIG_VT is not set 685# CONFIG_VT is not set
640CONFIG_SERIAL_NONSTANDARD=y 686# CONFIG_SERIAL_NONSTANDARD is not set
641# CONFIG_COMPUTONE is not set 687# CONFIG_NOZOMI is not set
642# CONFIG_ROCKETPORT is not set
643# CONFIG_CYCLADES is not set
644# CONFIG_DIGIEPCA is not set
645# CONFIG_MOXA_INTELLIO is not set
646# CONFIG_MOXA_SMARTIO is not set
647CONFIG_MOXA_SMARTIO_NEW=m
648# CONFIG_ISI is not set
649# CONFIG_SYNCLINKMP is not set
650# CONFIG_SYNCLINK_GT is not set
651# CONFIG_N_HDLC is not set
652# CONFIG_SPECIALIX is not set
653# CONFIG_SX is not set
654# CONFIG_RIO is not set
655# CONFIG_STALDRV is not set
656CONFIG_SERIAL_SB1250_DUART=y
657CONFIG_SERIAL_SB1250_DUART_CONSOLE=y
658 688
659# 689#
660# Serial drivers 690# Serial drivers
@@ -664,37 +694,22 @@ CONFIG_SERIAL_SB1250_DUART_CONSOLE=y
664# 694#
665# Non-8250 serial port support 695# Non-8250 serial port support
666# 696#
697CONFIG_SERIAL_SB1250_DUART=y
698CONFIG_SERIAL_SB1250_DUART_CONSOLE=y
699CONFIG_SERIAL_CORE=y
700CONFIG_SERIAL_CORE_CONSOLE=y
667# CONFIG_SERIAL_JSM is not set 701# CONFIG_SERIAL_JSM is not set
668CONFIG_UNIX98_PTYS=y 702CONFIG_UNIX98_PTYS=y
669CONFIG_LEGACY_PTYS=y 703CONFIG_LEGACY_PTYS=y
670CONFIG_LEGACY_PTY_COUNT=256 704CONFIG_LEGACY_PTY_COUNT=256
671
672#
673# IPMI
674#
675# CONFIG_IPMI_HANDLER is not set 705# CONFIG_IPMI_HANDLER is not set
676
677#
678# Watchdog Cards
679#
680# CONFIG_WATCHDOG is not set
681# CONFIG_HW_RANDOM is not set 706# CONFIG_HW_RANDOM is not set
682# CONFIG_RTC is not set 707# CONFIG_RTC is not set
683# CONFIG_GEN_RTC is not set
684# CONFIG_DTLK is not set
685# CONFIG_R3964 is not set 708# CONFIG_R3964 is not set
686# CONFIG_APPLICOM is not set 709# CONFIG_APPLICOM is not set
687# CONFIG_DRM is not set
688# CONFIG_RAW_DRIVER is not set 710# CONFIG_RAW_DRIVER is not set
689
690#
691# TPM devices
692#
693# CONFIG_TCG_TPM is not set 711# CONFIG_TCG_TPM is not set
694 712CONFIG_DEVPORT=y
695#
696# I2C support
697#
698# CONFIG_I2C is not set 713# CONFIG_I2C is not set
699 714
700# 715#
@@ -702,109 +717,139 @@ CONFIG_LEGACY_PTY_COUNT=256
702# 717#
703# CONFIG_SPI is not set 718# CONFIG_SPI is not set
704# CONFIG_SPI_MASTER is not set 719# CONFIG_SPI_MASTER is not set
720# CONFIG_W1 is not set
721# CONFIG_POWER_SUPPLY is not set
722# CONFIG_HWMON is not set
723# CONFIG_THERMAL is not set
724# CONFIG_WATCHDOG is not set
705 725
706# 726#
707# Dallas's 1-wire bus 727# Sonics Silicon Backplane
708# 728#
709# CONFIG_W1 is not set 729CONFIG_SSB_POSSIBLE=y
730# CONFIG_SSB is not set
710 731
711# 732#
712# Hardware Monitoring support 733# Multifunction device drivers
713# 734#
714# CONFIG_HWMON is not set 735# CONFIG_MFD_SM501 is not set
715# CONFIG_HWMON_VID is not set
716 736
717# 737#
718# Multimedia devices 738# Multimedia devices
719# 739#
720# CONFIG_VIDEO_DEV is not set 740# CONFIG_VIDEO_DEV is not set
721 741# CONFIG_DVB_CORE is not set
722# 742# CONFIG_DAB is not set
723# Digital Video Broadcasting Devices
724#
725# CONFIG_DVB is not set
726 743
727# 744#
728# Graphics support 745# Graphics support
729# 746#
730# CONFIG_FIRMWARE_EDID is not set 747# CONFIG_DRM is not set
748# CONFIG_VGASTATE is not set
749# CONFIG_VIDEO_OUTPUT_CONTROL is not set
731# CONFIG_FB is not set 750# CONFIG_FB is not set
732# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 751# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
733 752
734# 753#
735# Sound 754# Display device support
736# 755#
737# CONFIG_SOUND is not set 756# CONFIG_DISPLAY_SUPPORT is not set
738 757
739# 758#
740# USB support 759# Sound
741# 760#
761# CONFIG_SOUND is not set
762CONFIG_USB_SUPPORT=y
742CONFIG_USB_ARCH_HAS_HCD=y 763CONFIG_USB_ARCH_HAS_HCD=y
743CONFIG_USB_ARCH_HAS_OHCI=y 764CONFIG_USB_ARCH_HAS_OHCI=y
744CONFIG_USB_ARCH_HAS_EHCI=y 765CONFIG_USB_ARCH_HAS_EHCI=y
745# CONFIG_USB is not set 766CONFIG_USB=y
746 767# CONFIG_USB_DEBUG is not set
747# 768# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
748# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
749#
750 769
751# 770#
752# USB Gadget Support 771# Miscellaneous USB options
753# 772#
754# CONFIG_USB_GADGET is not set 773CONFIG_USB_DEVICEFS=y
774CONFIG_USB_DEVICE_CLASS=y
775# CONFIG_USB_DYNAMIC_MINORS is not set
776# CONFIG_USB_SUSPEND is not set
777# CONFIG_USB_PERSIST is not set
778# CONFIG_USB_OTG is not set
755 779
756# 780#
757# MMC/SD Card support 781# USB Host Controller Drivers
758# 782#
759# CONFIG_MMC is not set 783# CONFIG_USB_EHCI_HCD is not set
784# CONFIG_USB_ISP116X_HCD is not set
785CONFIG_USB_OHCI_HCD=y
786# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
787# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
788CONFIG_USB_OHCI_LITTLE_ENDIAN=y
789# CONFIG_USB_UHCI_HCD is not set
790# CONFIG_USB_SL811_HCD is not set
791# CONFIG_USB_R8A66597_HCD is not set
760 792
761# 793#
762# LED devices 794# USB Device Class drivers
763# 795#
764# CONFIG_NEW_LEDS is not set 796# CONFIG_USB_ACM is not set
797# CONFIG_USB_PRINTER is not set
765 798
766# 799#
767# LED drivers 800# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
768# 801#
769 802
770# 803#
771# LED Triggers 804# may also be needed; see USB_STORAGE Help for more information
772# 805#
806# CONFIG_USB_LIBUSUAL is not set
773 807
774# 808#
775# InfiniBand support 809# USB Imaging devices
776# 810#
777# CONFIG_INFINIBAND is not set 811# CONFIG_USB_MDC800 is not set
812CONFIG_USB_MON=y
778 813
779# 814#
780# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 815# USB port drivers
781# 816#
817# CONFIG_USB_SERIAL is not set
782 818
783# 819#
784# Real Time Clock 820# USB Miscellaneous drivers
785# 821#
822# CONFIG_USB_EMI62 is not set
823# CONFIG_USB_EMI26 is not set
824# CONFIG_USB_ADUTUX is not set
825# CONFIG_USB_AUERSWALD is not set
826# CONFIG_USB_RIO500 is not set
827# CONFIG_USB_LEGOTOWER is not set
828# CONFIG_USB_LCD is not set
829# CONFIG_USB_BERRY_CHARGE is not set
830# CONFIG_USB_LED is not set
831# CONFIG_USB_CYPRESS_CY7C63 is not set
832# CONFIG_USB_CYTHERM is not set
833# CONFIG_USB_PHIDGET is not set
834# CONFIG_USB_IDMOUSE is not set
835# CONFIG_USB_FTDI_ELAN is not set
836# CONFIG_USB_APPLEDISPLAY is not set
837# CONFIG_USB_LD is not set
838# CONFIG_USB_TRANCEVIBRATOR is not set
839# CONFIG_USB_IOWARRIOR is not set
840# CONFIG_USB_TEST is not set
841# CONFIG_USB_GADGET is not set
842# CONFIG_MMC is not set
843# CONFIG_MEMSTICK is not set
844# CONFIG_NEW_LEDS is not set
845# CONFIG_INFINIBAND is not set
846CONFIG_RTC_LIB=y
786# CONFIG_RTC_CLASS is not set 847# CONFIG_RTC_CLASS is not set
787 848
788# 849#
789# DMA Engine support 850# Userspace I/O
790#
791# CONFIG_DMA_ENGINE is not set
792
793#
794# DMA Clients
795#
796
797#
798# DMA Devices
799#
800
801#
802# Auxiliary Display support
803#
804
805#
806# Virtualization
807# 851#
852# CONFIG_UIO is not set
808 853
809# 854#
810# File systems 855# File systems
@@ -823,15 +868,14 @@ CONFIG_FS_POSIX_ACL=y
823# CONFIG_XFS_FS is not set 868# CONFIG_XFS_FS is not set
824# CONFIG_GFS2_FS is not set 869# CONFIG_GFS2_FS is not set
825# CONFIG_OCFS2_FS is not set 870# CONFIG_OCFS2_FS is not set
826# CONFIG_MINIX_FS is not set 871CONFIG_DNOTIFY=y
827# CONFIG_ROMFS_FS is not set
828CONFIG_INOTIFY=y 872CONFIG_INOTIFY=y
829CONFIG_INOTIFY_USER=y 873CONFIG_INOTIFY_USER=y
830# CONFIG_QUOTA is not set 874# CONFIG_QUOTA is not set
831CONFIG_DNOTIFY=y
832# CONFIG_AUTOFS_FS is not set 875# CONFIG_AUTOFS_FS is not set
833# CONFIG_AUTOFS4_FS is not set 876# CONFIG_AUTOFS4_FS is not set
834CONFIG_FUSE_FS=m 877CONFIG_FUSE_FS=m
878CONFIG_GENERIC_ACL=y
835 879
836# 880#
837# CD-ROM/DVD Filesystems 881# CD-ROM/DVD Filesystems
@@ -853,9 +897,9 @@ CONFIG_PROC_FS=y
853CONFIG_PROC_KCORE=y 897CONFIG_PROC_KCORE=y
854CONFIG_PROC_SYSCTL=y 898CONFIG_PROC_SYSCTL=y
855CONFIG_SYSFS=y 899CONFIG_SYSFS=y
856# CONFIG_TMPFS is not set 900CONFIG_TMPFS=y
901CONFIG_TMPFS_POSIX_ACL=y
857# CONFIG_HUGETLB_PAGE is not set 902# CONFIG_HUGETLB_PAGE is not set
858CONFIG_RAMFS=y
859CONFIG_CONFIGFS_FS=m 903CONFIG_CONFIGFS_FS=m
860 904
861# 905#
@@ -871,14 +915,13 @@ CONFIG_CONFIGFS_FS=m
871# CONFIG_EFS_FS is not set 915# CONFIG_EFS_FS is not set
872# CONFIG_CRAMFS is not set 916# CONFIG_CRAMFS is not set
873# CONFIG_VXFS_FS is not set 917# CONFIG_VXFS_FS is not set
918# CONFIG_MINIX_FS is not set
874# CONFIG_HPFS_FS is not set 919# CONFIG_HPFS_FS is not set
875# CONFIG_QNX4FS_FS is not set 920# CONFIG_QNX4FS_FS is not set
921# CONFIG_ROMFS_FS is not set
876# CONFIG_SYSV_FS is not set 922# CONFIG_SYSV_FS is not set
877# CONFIG_UFS_FS is not set 923# CONFIG_UFS_FS is not set
878 924CONFIG_NETWORK_FILESYSTEMS=y
879#
880# Network File Systems
881#
882CONFIG_NFS_FS=y 925CONFIG_NFS_FS=y
883CONFIG_NFS_V3=y 926CONFIG_NFS_V3=y
884# CONFIG_NFS_V3_ACL is not set 927# CONFIG_NFS_V3_ACL is not set
@@ -890,6 +933,7 @@ CONFIG_LOCKD=y
890CONFIG_LOCKD_V4=y 933CONFIG_LOCKD_V4=y
891CONFIG_NFS_COMMON=y 934CONFIG_NFS_COMMON=y
892CONFIG_SUNRPC=y 935CONFIG_SUNRPC=y
936# CONFIG_SUNRPC_BIND34 is not set
893# CONFIG_RPCSEC_GSS_KRB5 is not set 937# CONFIG_RPCSEC_GSS_KRB5 is not set
894# CONFIG_RPCSEC_GSS_SPKM3 is not set 938# CONFIG_RPCSEC_GSS_SPKM3 is not set
895# CONFIG_SMB_FS is not set 939# CONFIG_SMB_FS is not set
@@ -897,45 +941,29 @@ CONFIG_SUNRPC=y
897# CONFIG_NCP_FS is not set 941# CONFIG_NCP_FS is not set
898# CONFIG_CODA_FS is not set 942# CONFIG_CODA_FS is not set
899# CONFIG_AFS_FS is not set 943# CONFIG_AFS_FS is not set
900# CONFIG_9P_FS is not set
901 944
902# 945#
903# Partition Types 946# Partition Types
904# 947#
905# CONFIG_PARTITION_ADVANCED is not set 948# CONFIG_PARTITION_ADVANCED is not set
906CONFIG_MSDOS_PARTITION=y 949CONFIG_MSDOS_PARTITION=y
907
908#
909# Native Language Support
910#
911# CONFIG_NLS is not set 950# CONFIG_NLS is not set
912
913#
914# Distributed Lock Manager
915#
916CONFIG_DLM=m 951CONFIG_DLM=m
917CONFIG_DLM_TCP=y
918# CONFIG_DLM_SCTP is not set
919# CONFIG_DLM_DEBUG is not set 952# CONFIG_DLM_DEBUG is not set
920 953
921# 954#
922# Profiling support
923#
924# CONFIG_PROFILING is not set
925
926#
927# Kernel hacking 955# Kernel hacking
928# 956#
929CONFIG_TRACE_IRQFLAGS_SUPPORT=y 957CONFIG_TRACE_IRQFLAGS_SUPPORT=y
930# CONFIG_PRINTK_TIME is not set 958# CONFIG_PRINTK_TIME is not set
959CONFIG_ENABLE_WARN_DEPRECATED=y
931CONFIG_ENABLE_MUST_CHECK=y 960CONFIG_ENABLE_MUST_CHECK=y
932# CONFIG_MAGIC_SYSRQ is not set 961# CONFIG_MAGIC_SYSRQ is not set
933# CONFIG_UNUSED_SYMBOLS is not set 962# CONFIG_UNUSED_SYMBOLS is not set
934# CONFIG_DEBUG_FS is not set 963# CONFIG_DEBUG_FS is not set
935# CONFIG_HEADERS_CHECK is not set 964# CONFIG_HEADERS_CHECK is not set
936# CONFIG_DEBUG_KERNEL is not set 965# CONFIG_DEBUG_KERNEL is not set
937CONFIG_LOG_BUF_SHIFT=15 966# CONFIG_SAMPLES is not set
938CONFIG_CROSSCOMPILE=y
939CONFIG_CMDLINE="" 967CONFIG_CMDLINE=""
940CONFIG_SYS_SUPPORTS_KGDB=y 968CONFIG_SYS_SUPPORTS_KGDB=y
941# CONFIG_SB1XXX_CORELIS is not set 969# CONFIG_SB1XXX_CORELIS is not set
@@ -946,13 +974,12 @@ CONFIG_SYS_SUPPORTS_KGDB=y
946CONFIG_KEYS=y 974CONFIG_KEYS=y
947CONFIG_KEYS_DEBUG_PROC_KEYS=y 975CONFIG_KEYS_DEBUG_PROC_KEYS=y
948# CONFIG_SECURITY is not set 976# CONFIG_SECURITY is not set
949 977# CONFIG_SECURITY_FILE_CAPABILITIES is not set
950#
951# Cryptographic options
952#
953CONFIG_CRYPTO=y 978CONFIG_CRYPTO=y
954CONFIG_CRYPTO_ALGAPI=y 979CONFIG_CRYPTO_ALGAPI=y
980CONFIG_CRYPTO_AEAD=m
955CONFIG_CRYPTO_BLKCIPHER=m 981CONFIG_CRYPTO_BLKCIPHER=m
982CONFIG_CRYPTO_SEQIV=m
956CONFIG_CRYPTO_HASH=y 983CONFIG_CRYPTO_HASH=y
957CONFIG_CRYPTO_MANAGER=y 984CONFIG_CRYPTO_MANAGER=y
958CONFIG_CRYPTO_HMAC=y 985CONFIG_CRYPTO_HMAC=y
@@ -970,6 +997,11 @@ CONFIG_CRYPTO_ECB=m
970CONFIG_CRYPTO_CBC=m 997CONFIG_CRYPTO_CBC=m
971CONFIG_CRYPTO_PCBC=m 998CONFIG_CRYPTO_PCBC=m
972CONFIG_CRYPTO_LRW=m 999CONFIG_CRYPTO_LRW=m
1000CONFIG_CRYPTO_XTS=m
1001CONFIG_CRYPTO_CTR=m
1002CONFIG_CRYPTO_GCM=m
1003CONFIG_CRYPTO_CCM=m
1004CONFIG_CRYPTO_CRYPTD=m
973CONFIG_CRYPTO_DES=m 1005CONFIG_CRYPTO_DES=m
974CONFIG_CRYPTO_FCRYPT=m 1006CONFIG_CRYPTO_FCRYPT=m
975CONFIG_CRYPTO_BLOWFISH=m 1007CONFIG_CRYPTO_BLOWFISH=m
@@ -983,15 +1015,16 @@ CONFIG_CRYPTO_TEA=m
983CONFIG_CRYPTO_ARC4=m 1015CONFIG_CRYPTO_ARC4=m
984CONFIG_CRYPTO_KHAZAD=m 1016CONFIG_CRYPTO_KHAZAD=m
985CONFIG_CRYPTO_ANUBIS=m 1017CONFIG_CRYPTO_ANUBIS=m
1018CONFIG_CRYPTO_SEED=m
1019CONFIG_CRYPTO_SALSA20=m
986CONFIG_CRYPTO_DEFLATE=m 1020CONFIG_CRYPTO_DEFLATE=m
987CONFIG_CRYPTO_MICHAEL_MIC=m 1021CONFIG_CRYPTO_MICHAEL_MIC=m
988CONFIG_CRYPTO_CRC32C=m 1022CONFIG_CRYPTO_CRC32C=m
989CONFIG_CRYPTO_CAMELLIA=m 1023CONFIG_CRYPTO_CAMELLIA=m
990# CONFIG_CRYPTO_TEST is not set 1024# CONFIG_CRYPTO_TEST is not set
991 1025CONFIG_CRYPTO_AUTHENC=m
992# 1026CONFIG_CRYPTO_LZO=m
993# Hardware crypto devices 1027# CONFIG_CRYPTO_HW is not set
994#
995 1028
996# 1029#
997# Library routines 1030# Library routines
@@ -999,10 +1032,15 @@ CONFIG_CRYPTO_CAMELLIA=m
999CONFIG_BITREVERSE=y 1032CONFIG_BITREVERSE=y
1000# CONFIG_CRC_CCITT is not set 1033# CONFIG_CRC_CCITT is not set
1001CONFIG_CRC16=m 1034CONFIG_CRC16=m
1035# CONFIG_CRC_ITU_T is not set
1002CONFIG_CRC32=y 1036CONFIG_CRC32=y
1037# CONFIG_CRC7 is not set
1003CONFIG_LIBCRC32C=m 1038CONFIG_LIBCRC32C=m
1004CONFIG_ZLIB_INFLATE=m 1039CONFIG_ZLIB_INFLATE=m
1005CONFIG_ZLIB_DEFLATE=m 1040CONFIG_ZLIB_DEFLATE=m
1041CONFIG_LZO_COMPRESS=m
1042CONFIG_LZO_DECOMPRESS=m
1006CONFIG_PLIST=y 1043CONFIG_PLIST=y
1007CONFIG_HAS_IOMEM=y 1044CONFIG_HAS_IOMEM=y
1008CONFIG_HAS_IOPORT=y 1045CONFIG_HAS_IOPORT=y
1046CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/tb0219_defconfig b/arch/mips/configs/tb0219_defconfig
index af82e1a1823c..8dd3ae39bcad 100644
--- a/arch/mips/configs/tb0219_defconfig
+++ b/arch/mips/configs/tb0219_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc2 3# Linux kernel version: 2.6.26-rc1
4# Wed Aug 8 16:11:47 2007 4# Mon May 12 11:54:51 2008
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -10,9 +10,11 @@ CONFIG_MIPS=y
10# 10#
11# CONFIG_MACH_ALCHEMY is not set 11# CONFIG_MACH_ALCHEMY is not set
12# CONFIG_BASLER_EXCITE is not set 12# CONFIG_BASLER_EXCITE is not set
13# CONFIG_BCM47XX is not set
13# CONFIG_MIPS_COBALT is not set 14# CONFIG_MIPS_COBALT is not set
14# CONFIG_MACH_DECSTATION is not set 15# CONFIG_MACH_DECSTATION is not set
15# CONFIG_MACH_JAZZ is not set 16# CONFIG_MACH_JAZZ is not set
17# CONFIG_LASAT is not set
16# CONFIG_LEMOTE_FULONG is not set 18# CONFIG_LEMOTE_FULONG is not set
17# CONFIG_MIPS_ATLAS is not set 19# CONFIG_MIPS_ATLAS is not set
18# CONFIG_MIPS_MALTA is not set 20# CONFIG_MIPS_MALTA is not set
@@ -26,6 +28,7 @@ CONFIG_MACH_VR41XX=y
26# CONFIG_PMC_YOSEMITE is not set 28# CONFIG_PMC_YOSEMITE is not set
27# CONFIG_SGI_IP22 is not set 29# CONFIG_SGI_IP22 is not set
28# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
31# CONFIG_SGI_IP28 is not set
29# CONFIG_SGI_IP32 is not set 32# CONFIG_SGI_IP32 is not set
30# CONFIG_SIBYTE_CRHINE is not set 33# CONFIG_SIBYTE_CRHINE is not set
31# CONFIG_SIBYTE_CARMEL is not set 34# CONFIG_SIBYTE_CARMEL is not set
@@ -53,12 +56,17 @@ CONFIG_PCI_VR41XX=y
53CONFIG_RWSEM_GENERIC_SPINLOCK=y 56CONFIG_RWSEM_GENERIC_SPINLOCK=y
54# CONFIG_ARCH_HAS_ILOG2_U32 is not set 57# CONFIG_ARCH_HAS_ILOG2_U32 is not set
55# CONFIG_ARCH_HAS_ILOG2_U64 is not set 58# CONFIG_ARCH_HAS_ILOG2_U64 is not set
59CONFIG_ARCH_SUPPORTS_OPROFILE=y
56CONFIG_GENERIC_FIND_NEXT_BIT=y 60CONFIG_GENERIC_FIND_NEXT_BIT=y
57CONFIG_GENERIC_HWEIGHT=y 61CONFIG_GENERIC_HWEIGHT=y
58CONFIG_GENERIC_CALIBRATE_DELAY=y 62CONFIG_GENERIC_CALIBRATE_DELAY=y
63CONFIG_GENERIC_CLOCKEVENTS=y
59CONFIG_GENERIC_TIME=y 64CONFIG_GENERIC_TIME=y
65CONFIG_GENERIC_CMOS_UPDATE=y
60CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 66CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
61CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 67CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
68CONFIG_CEVT_R4K=y
69CONFIG_CSRC_R4K=y
62CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
63CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
64# CONFIG_HOTPLUG_CPU is not set 72# CONFIG_HOTPLUG_CPU is not set
@@ -113,6 +121,7 @@ CONFIG_CPU_HAS_SYNC=y
113CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
114CONFIG_GENERIC_IRQ_PROBE=y 122CONFIG_GENERIC_IRQ_PROBE=y
115CONFIG_ARCH_FLATMEM_ENABLE=y 123CONFIG_ARCH_FLATMEM_ENABLE=y
124CONFIG_ARCH_POPULATES_NODE_MAP=y
116CONFIG_SELECT_MEMORY_MODEL=y 125CONFIG_SELECT_MEMORY_MODEL=y
117CONFIG_FLATMEM_MANUAL=y 126CONFIG_FLATMEM_MANUAL=y
118# CONFIG_DISCONTIGMEM_MANUAL is not set 127# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -120,10 +129,16 @@ CONFIG_FLATMEM_MANUAL=y
120CONFIG_FLATMEM=y 129CONFIG_FLATMEM=y
121CONFIG_FLAT_NODE_MEM_MAP=y 130CONFIG_FLAT_NODE_MEM_MAP=y
122# CONFIG_SPARSEMEM_STATIC is not set 131# CONFIG_SPARSEMEM_STATIC is not set
132# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
133CONFIG_PAGEFLAGS_EXTENDED=y
123CONFIG_SPLIT_PTLOCK_CPUS=4 134CONFIG_SPLIT_PTLOCK_CPUS=4
124# CONFIG_RESOURCES_64BIT is not set 135# CONFIG_RESOURCES_64BIT is not set
125CONFIG_ZONE_DMA_FLAG=0 136CONFIG_ZONE_DMA_FLAG=0
126CONFIG_VIRT_TO_BUS=y 137CONFIG_VIRT_TO_BUS=y
138# CONFIG_TICK_ONESHOT is not set
139# CONFIG_NO_HZ is not set
140# CONFIG_HIGH_RES_TIMERS is not set
141CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
127# CONFIG_HZ_48 is not set 142# CONFIG_HZ_48 is not set
128# CONFIG_HZ_100 is not set 143# CONFIG_HZ_100 is not set
129# CONFIG_HZ_128 is not set 144# CONFIG_HZ_128 is not set
@@ -156,23 +171,29 @@ CONFIG_SYSVIPC_SYSCTL=y
156# CONFIG_POSIX_MQUEUE is not set 171# CONFIG_POSIX_MQUEUE is not set
157# CONFIG_BSD_PROCESS_ACCT is not set 172# CONFIG_BSD_PROCESS_ACCT is not set
158# CONFIG_TASKSTATS is not set 173# CONFIG_TASKSTATS is not set
159# CONFIG_USER_NS is not set
160# CONFIG_AUDIT is not set 174# CONFIG_AUDIT is not set
161# CONFIG_IKCONFIG is not set 175# CONFIG_IKCONFIG is not set
162CONFIG_LOG_BUF_SHIFT=14 176CONFIG_LOG_BUF_SHIFT=14
177# CONFIG_CGROUPS is not set
178# CONFIG_GROUP_SCHED is not set
163CONFIG_SYSFS_DEPRECATED=y 179CONFIG_SYSFS_DEPRECATED=y
180CONFIG_SYSFS_DEPRECATED_V2=y
164# CONFIG_RELAY is not set 181# CONFIG_RELAY is not set
182# CONFIG_NAMESPACES is not set
165# CONFIG_BLK_DEV_INITRD is not set 183# CONFIG_BLK_DEV_INITRD is not set
166# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 184# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
167CONFIG_SYSCTL=y 185CONFIG_SYSCTL=y
168CONFIG_EMBEDDED=y 186CONFIG_EMBEDDED=y
169CONFIG_SYSCTL_SYSCALL=y 187CONFIG_SYSCTL_SYSCALL=y
188CONFIG_SYSCTL_SYSCALL_CHECK=y
170CONFIG_KALLSYMS=y 189CONFIG_KALLSYMS=y
171# CONFIG_KALLSYMS_EXTRA_PASS is not set 190# CONFIG_KALLSYMS_EXTRA_PASS is not set
172CONFIG_HOTPLUG=y 191CONFIG_HOTPLUG=y
173CONFIG_PRINTK=y 192CONFIG_PRINTK=y
174CONFIG_BUG=y 193CONFIG_BUG=y
175CONFIG_ELF_CORE=y 194CONFIG_ELF_CORE=y
195# CONFIG_PCSPKR_PLATFORM is not set
196CONFIG_COMPAT_BRK=y
176CONFIG_BASE_FULL=y 197CONFIG_BASE_FULL=y
177CONFIG_FUTEX=y 198CONFIG_FUTEX=y
178CONFIG_ANON_INODES=y 199CONFIG_ANON_INODES=y
@@ -185,10 +206,19 @@ CONFIG_VM_EVENT_COUNTERS=y
185CONFIG_SLAB=y 206CONFIG_SLAB=y
186# CONFIG_SLUB is not set 207# CONFIG_SLUB is not set
187# CONFIG_SLOB is not set 208# CONFIG_SLOB is not set
209# CONFIG_PROFILING is not set
210# CONFIG_MARKERS is not set
211CONFIG_HAVE_OPROFILE=y
212# CONFIG_HAVE_KPROBES is not set
213# CONFIG_HAVE_KRETPROBES is not set
214# CONFIG_HAVE_DMA_ATTRS is not set
215CONFIG_PROC_PAGE_MONITOR=y
216CONFIG_SLABINFO=y
188CONFIG_RT_MUTEXES=y 217CONFIG_RT_MUTEXES=y
189# CONFIG_TINY_SHMEM is not set 218# CONFIG_TINY_SHMEM is not set
190CONFIG_BASE_SMALL=0 219CONFIG_BASE_SMALL=0
191CONFIG_MODULES=y 220CONFIG_MODULES=y
221# CONFIG_MODULE_FORCE_LOAD is not set
192CONFIG_MODULE_UNLOAD=y 222CONFIG_MODULE_UNLOAD=y
193CONFIG_MODULE_FORCE_UNLOAD=y 223CONFIG_MODULE_FORCE_UNLOAD=y
194CONFIG_MODVERSIONS=y 224CONFIG_MODVERSIONS=y
@@ -212,18 +242,17 @@ CONFIG_DEFAULT_AS=y
212# CONFIG_DEFAULT_CFQ is not set 242# CONFIG_DEFAULT_CFQ is not set
213# CONFIG_DEFAULT_NOOP is not set 243# CONFIG_DEFAULT_NOOP is not set
214CONFIG_DEFAULT_IOSCHED="anticipatory" 244CONFIG_DEFAULT_IOSCHED="anticipatory"
245CONFIG_CLASSIC_RCU=y
215 246
216# 247#
217# Bus options (PCI, PCMCIA, EISA, ISA, TC) 248# Bus options (PCI, PCMCIA, EISA, ISA, TC)
218# 249#
219CONFIG_HW_HAS_PCI=y 250CONFIG_HW_HAS_PCI=y
220CONFIG_PCI=y 251CONFIG_PCI=y
252CONFIG_PCI_DOMAINS=y
221# CONFIG_ARCH_SUPPORTS_MSI is not set 253# CONFIG_ARCH_SUPPORTS_MSI is not set
254CONFIG_PCI_LEGACY=y
222CONFIG_MMU=y 255CONFIG_MMU=y
223
224#
225# PCCARD (PCMCIA/CardBus) support
226#
227# CONFIG_PCCARD is not set 256# CONFIG_PCCARD is not set
228# CONFIG_HOTPLUG_PCI is not set 257# CONFIG_HOTPLUG_PCI is not set
229 258
@@ -237,6 +266,7 @@ CONFIG_TRAD_SIGNALS=y
237# 266#
238# Power management options 267# Power management options
239# 268#
269CONFIG_ARCH_SUSPEND_POSSIBLE=y
240# CONFIG_PM is not set 270# CONFIG_PM is not set
241 271
242# 272#
@@ -278,6 +308,7 @@ CONFIG_INET_TUNNEL=m
278# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 308# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
279# CONFIG_INET_XFRM_MODE_TUNNEL is not set 309# CONFIG_INET_XFRM_MODE_TUNNEL is not set
280# CONFIG_INET_XFRM_MODE_BEET is not set 310# CONFIG_INET_XFRM_MODE_BEET is not set
311# CONFIG_INET_LRO is not set
281CONFIG_INET_DIAG=y 312CONFIG_INET_DIAG=y
282CONFIG_INET_TCP_DIAG=y 313CONFIG_INET_TCP_DIAG=y
283# CONFIG_TCP_CONG_ADVANCED is not set 314# CONFIG_TCP_CONG_ADVANCED is not set
@@ -285,15 +316,10 @@ CONFIG_TCP_CONG_CUBIC=y
285CONFIG_DEFAULT_TCP_CONG="cubic" 316CONFIG_DEFAULT_TCP_CONG="cubic"
286# CONFIG_TCP_MD5SIG is not set 317# CONFIG_TCP_MD5SIG is not set
287# CONFIG_IPV6 is not set 318# CONFIG_IPV6 is not set
288# CONFIG_INET6_XFRM_TUNNEL is not set
289# CONFIG_INET6_TUNNEL is not set
290CONFIG_NETWORK_SECMARK=y 319CONFIG_NETWORK_SECMARK=y
291# CONFIG_NETFILTER is not set 320# CONFIG_NETFILTER is not set
292# CONFIG_IP_DCCP is not set 321# CONFIG_IP_DCCP is not set
293# CONFIG_IP_SCTP is not set 322# CONFIG_IP_SCTP is not set
294# CONFIG_SCTP_HMAC_NONE is not set
295# CONFIG_SCTP_HMAC_SHA1 is not set
296# CONFIG_SCTP_HMAC_MD5 is not set
297# CONFIG_TIPC is not set 323# CONFIG_TIPC is not set
298# CONFIG_ATM is not set 324# CONFIG_ATM is not set
299# CONFIG_BRIDGE is not set 325# CONFIG_BRIDGE is not set
@@ -306,10 +332,6 @@ CONFIG_NETWORK_SECMARK=y
306# CONFIG_LAPB is not set 332# CONFIG_LAPB is not set
307# CONFIG_ECONET is not set 333# CONFIG_ECONET is not set
308# CONFIG_WAN_ROUTER is not set 334# CONFIG_WAN_ROUTER is not set
309
310#
311# QoS and/or fair queueing
312#
313# CONFIG_NET_SCHED is not set 335# CONFIG_NET_SCHED is not set
314 336
315# 337#
@@ -317,6 +339,7 @@ CONFIG_NETWORK_SECMARK=y
317# 339#
318# CONFIG_NET_PKTGEN is not set 340# CONFIG_NET_PKTGEN is not set
319# CONFIG_HAMRADIO is not set 341# CONFIG_HAMRADIO is not set
342# CONFIG_CAN is not set
320# CONFIG_IRDA is not set 343# CONFIG_IRDA is not set
321# CONFIG_BT is not set 344# CONFIG_BT is not set
322# CONFIG_AF_RXRPC is not set 345# CONFIG_AF_RXRPC is not set
@@ -339,6 +362,7 @@ CONFIG_FIB_RULES=y
339# 362#
340# Generic Driver Options 363# Generic Driver Options
341# 364#
365CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
342CONFIG_STANDALONE=y 366CONFIG_STANDALONE=y
343CONFIG_PREVENT_FIRMWARE_BUILD=y 367CONFIG_PREVENT_FIRMWARE_BUILD=y
344CONFIG_FW_LOADER=m 368CONFIG_FW_LOADER=m
@@ -360,10 +384,11 @@ CONFIG_BLK_DEV_NBD=m
360CONFIG_BLK_DEV_RAM=y 384CONFIG_BLK_DEV_RAM=y
361CONFIG_BLK_DEV_RAM_COUNT=16 385CONFIG_BLK_DEV_RAM_COUNT=16
362CONFIG_BLK_DEV_RAM_SIZE=4096 386CONFIG_BLK_DEV_RAM_SIZE=4096
363CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 387CONFIG_BLK_DEV_XIP=y
364# CONFIG_CDROM_PKTCDVD is not set 388# CONFIG_CDROM_PKTCDVD is not set
365# CONFIG_ATA_OVER_ETH is not set 389# CONFIG_ATA_OVER_ETH is not set
366# CONFIG_MISC_DEVICES is not set 390# CONFIG_MISC_DEVICES is not set
391CONFIG_HAVE_IDE=y
367# CONFIG_IDE is not set 392# CONFIG_IDE is not set
368 393
369# 394#
@@ -375,10 +400,6 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
375# CONFIG_SCSI_NETLINK is not set 400# CONFIG_SCSI_NETLINK is not set
376# CONFIG_ATA is not set 401# CONFIG_ATA is not set
377# CONFIG_MD is not set 402# CONFIG_MD is not set
378
379#
380# Fusion MPT device support
381#
382# CONFIG_FUSION is not set 403# CONFIG_FUSION is not set
383 404
384# 405#
@@ -394,6 +415,7 @@ CONFIG_NETDEVICES=y
394# CONFIG_MACVLAN is not set 415# CONFIG_MACVLAN is not set
395# CONFIG_EQUALIZER is not set 416# CONFIG_EQUALIZER is not set
396# CONFIG_TUN is not set 417# CONFIG_TUN is not set
418# CONFIG_VETH is not set
397# CONFIG_ARCNET is not set 419# CONFIG_ARCNET is not set
398CONFIG_PHYLIB=m 420CONFIG_PHYLIB=m
399 421
@@ -409,7 +431,8 @@ CONFIG_VITESSE_PHY=m
409CONFIG_SMSC_PHY=m 431CONFIG_SMSC_PHY=m
410# CONFIG_BROADCOM_PHY is not set 432# CONFIG_BROADCOM_PHY is not set
411# CONFIG_ICPLUS_PHY is not set 433# CONFIG_ICPLUS_PHY is not set
412# CONFIG_FIXED_PHY is not set 434# CONFIG_REALTEK_PHY is not set
435# CONFIG_MDIO_BITBANG is not set
413CONFIG_NET_ETHERNET=y 436CONFIG_NET_ETHERNET=y
414CONFIG_MII=y 437CONFIG_MII=y
415# CONFIG_AX88796 is not set 438# CONFIG_AX88796 is not set
@@ -420,6 +443,10 @@ CONFIG_MII=y
420# CONFIG_DM9000 is not set 443# CONFIG_DM9000 is not set
421# CONFIG_NET_TULIP is not set 444# CONFIG_NET_TULIP is not set
422# CONFIG_HP100 is not set 445# CONFIG_HP100 is not set
446# CONFIG_IBM_NEW_EMAC_ZMII is not set
447# CONFIG_IBM_NEW_EMAC_RGMII is not set
448# CONFIG_IBM_NEW_EMAC_TAH is not set
449# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
423CONFIG_NET_PCI=y 450CONFIG_NET_PCI=y
424# CONFIG_PCNET32 is not set 451# CONFIG_PCNET32 is not set
425# CONFIG_AMD8111_ETH is not set 452# CONFIG_AMD8111_ETH is not set
@@ -427,7 +454,6 @@ CONFIG_NET_PCI=y
427# CONFIG_B44 is not set 454# CONFIG_B44 is not set
428# CONFIG_FORCEDETH is not set 455# CONFIG_FORCEDETH is not set
429# CONFIG_TC35815 is not set 456# CONFIG_TC35815 is not set
430# CONFIG_DGRS is not set
431# CONFIG_EEPRO100 is not set 457# CONFIG_EEPRO100 is not set
432# CONFIG_E100 is not set 458# CONFIG_E100 is not set
433# CONFIG_FEALNX is not set 459# CONFIG_FEALNX is not set
@@ -439,6 +465,7 @@ CONFIG_8139TOO_PIO=y
439# CONFIG_8139TOO_TUNE_TWISTER is not set 465# CONFIG_8139TOO_TUNE_TWISTER is not set
440# CONFIG_8139TOO_8129 is not set 466# CONFIG_8139TOO_8129 is not set
441# CONFIG_8139_OLD_RX_RESET is not set 467# CONFIG_8139_OLD_RX_RESET is not set
468# CONFIG_R6040 is not set
442# CONFIG_SIS900 is not set 469# CONFIG_SIS900 is not set
443# CONFIG_EPIC100 is not set 470# CONFIG_EPIC100 is not set
444# CONFIG_SUNDANCE is not set 471# CONFIG_SUNDANCE is not set
@@ -451,6 +478,10 @@ CONFIG_NETDEV_1000=y
451# CONFIG_ACENIC is not set 478# CONFIG_ACENIC is not set
452# CONFIG_DL2K is not set 479# CONFIG_DL2K is not set
453# CONFIG_E1000 is not set 480# CONFIG_E1000 is not set
481# CONFIG_E1000E is not set
482# CONFIG_E1000E_ENABLED is not set
483# CONFIG_IP1000 is not set
484# CONFIG_IGB is not set
454# CONFIG_NS83820 is not set 485# CONFIG_NS83820 is not set
455# CONFIG_HAMACHI is not set 486# CONFIG_HAMACHI is not set
456# CONFIG_YELLOWFIN is not set 487# CONFIG_YELLOWFIN is not set
@@ -472,6 +503,7 @@ CONFIG_VIA_VELOCITY=y
472# 503#
473# CONFIG_WLAN_PRE80211 is not set 504# CONFIG_WLAN_PRE80211 is not set
474# CONFIG_WLAN_80211 is not set 505# CONFIG_WLAN_80211 is not set
506# CONFIG_IWLWIFI_LEDS is not set
475 507
476# 508#
477# USB Network Adapters 509# USB Network Adapters
@@ -480,14 +512,12 @@ CONFIG_VIA_VELOCITY=y
480# CONFIG_USB_KAWETH is not set 512# CONFIG_USB_KAWETH is not set
481# CONFIG_USB_PEGASUS is not set 513# CONFIG_USB_PEGASUS is not set
482# CONFIG_USB_RTL8150 is not set 514# CONFIG_USB_RTL8150 is not set
483# CONFIG_USB_USBNET_MII is not set
484# CONFIG_USB_USBNET is not set 515# CONFIG_USB_USBNET is not set
485# CONFIG_WAN is not set 516# CONFIG_WAN is not set
486# CONFIG_FDDI is not set 517# CONFIG_FDDI is not set
487# CONFIG_HIPPI is not set 518# CONFIG_HIPPI is not set
488# CONFIG_PPP is not set 519# CONFIG_PPP is not set
489# CONFIG_SLIP is not set 520# CONFIG_SLIP is not set
490# CONFIG_SHAPER is not set
491# CONFIG_NETCONSOLE is not set 521# CONFIG_NETCONSOLE is not set
492# CONFIG_NETPOLL is not set 522# CONFIG_NETPOLL is not set
493# CONFIG_NET_POLL_CONTROLLER is not set 523# CONFIG_NET_POLL_CONTROLLER is not set
@@ -506,7 +536,6 @@ CONFIG_INPUT=y
506# 536#
507# CONFIG_INPUT_MOUSEDEV is not set 537# CONFIG_INPUT_MOUSEDEV is not set
508# CONFIG_INPUT_JOYDEV is not set 538# CONFIG_INPUT_JOYDEV is not set
509# CONFIG_INPUT_TSDEV is not set
510# CONFIG_INPUT_EVDEV is not set 539# CONFIG_INPUT_EVDEV is not set
511# CONFIG_INPUT_EVBUG is not set 540# CONFIG_INPUT_EVBUG is not set
512 541
@@ -533,7 +562,9 @@ CONFIG_VT=y
533CONFIG_VT_CONSOLE=y 562CONFIG_VT_CONSOLE=y
534CONFIG_HW_CONSOLE=y 563CONFIG_HW_CONSOLE=y
535CONFIG_VT_HW_CONSOLE_BINDING=y 564CONFIG_VT_HW_CONSOLE_BINDING=y
565# CONFIG_DEVKMEM is not set
536# CONFIG_SERIAL_NONSTANDARD is not set 566# CONFIG_SERIAL_NONSTANDARD is not set
567# CONFIG_NOZOMI is not set
537 568
538# 569#
539# Serial drivers 570# Serial drivers
@@ -552,52 +583,62 @@ CONFIG_UNIX98_PTYS=y
552CONFIG_LEGACY_PTYS=y 583CONFIG_LEGACY_PTYS=y
553CONFIG_LEGACY_PTY_COUNT=256 584CONFIG_LEGACY_PTY_COUNT=256
554# CONFIG_IPMI_HANDLER is not set 585# CONFIG_IPMI_HANDLER is not set
555# CONFIG_WATCHDOG is not set
556# CONFIG_HW_RANDOM is not set 586# CONFIG_HW_RANDOM is not set
557# CONFIG_RTC is not set
558# CONFIG_R3964 is not set 587# CONFIG_R3964 is not set
559# CONFIG_APPLICOM is not set 588# CONFIG_APPLICOM is not set
560CONFIG_GPIO_TB0219=y 589CONFIG_GPIO_TB0219=y
561# CONFIG_DRM is not set
562CONFIG_GPIO_VR41XX=y 590CONFIG_GPIO_VR41XX=y
563# CONFIG_RAW_DRIVER is not set 591# CONFIG_RAW_DRIVER is not set
564# CONFIG_TCG_TPM is not set 592# CONFIG_TCG_TPM is not set
565CONFIG_DEVPORT=y 593CONFIG_DEVPORT=y
566# CONFIG_I2C is not set 594# CONFIG_I2C is not set
567
568#
569# SPI support
570#
571# CONFIG_SPI is not set 595# CONFIG_SPI is not set
572# CONFIG_SPI_MASTER is not set
573# CONFIG_W1 is not set 596# CONFIG_W1 is not set
574# CONFIG_POWER_SUPPLY is not set 597# CONFIG_POWER_SUPPLY is not set
575# CONFIG_HWMON is not set 598# CONFIG_HWMON is not set
599# CONFIG_THERMAL is not set
600# CONFIG_WATCHDOG is not set
601
602#
603# Sonics Silicon Backplane
604#
605CONFIG_SSB_POSSIBLE=y
606# CONFIG_SSB is not set
576 607
577# 608#
578# Multifunction device drivers 609# Multifunction device drivers
579# 610#
580# CONFIG_MFD_SM501 is not set 611# CONFIG_MFD_SM501 is not set
612# CONFIG_HTC_PASIC3 is not set
581 613
582# 614#
583# Multimedia devices 615# Multimedia devices
584# 616#
617
618#
619# Multimedia core support
620#
585# CONFIG_VIDEO_DEV is not set 621# CONFIG_VIDEO_DEV is not set
586# CONFIG_DVB_CORE is not set 622# CONFIG_DVB_CORE is not set
623
624#
625# Multimedia drivers
626#
587# CONFIG_DAB is not set 627# CONFIG_DAB is not set
588 628
589# 629#
590# Graphics support 630# Graphics support
591# 631#
632# CONFIG_DRM is not set
633# CONFIG_VGASTATE is not set
634# CONFIG_VIDEO_OUTPUT_CONTROL is not set
635# CONFIG_FB is not set
592# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 636# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
593 637
594# 638#
595# Display device support 639# Display device support
596# 640#
597# CONFIG_DISPLAY_SUPPORT is not set 641# CONFIG_DISPLAY_SUPPORT is not set
598# CONFIG_VGASTATE is not set
599# CONFIG_VIDEO_OUTPUT_CONTROL is not set
600# CONFIG_FB is not set
601 642
602# 643#
603# Console display driver support 644# Console display driver support
@@ -616,6 +657,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
616CONFIG_USB_ARCH_HAS_EHCI=y 657CONFIG_USB_ARCH_HAS_EHCI=y
617CONFIG_USB=m 658CONFIG_USB=m
618# CONFIG_USB_DEBUG is not set 659# CONFIG_USB_DEBUG is not set
660# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
619 661
620# 662#
621# Miscellaneous USB options 663# Miscellaneous USB options
@@ -624,15 +666,18 @@ CONFIG_USB_DEVICEFS=y
624CONFIG_USB_DEVICE_CLASS=y 666CONFIG_USB_DEVICE_CLASS=y
625# CONFIG_USB_DYNAMIC_MINORS is not set 667# CONFIG_USB_DYNAMIC_MINORS is not set
626# CONFIG_USB_OTG is not set 668# CONFIG_USB_OTG is not set
669# CONFIG_USB_OTG_WHITELIST is not set
670# CONFIG_USB_OTG_BLACKLIST_HUB is not set
627 671
628# 672#
629# USB Host Controller Drivers 673# USB Host Controller Drivers
630# 674#
675# CONFIG_USB_C67X00_HCD is not set
631CONFIG_USB_EHCI_HCD=m 676CONFIG_USB_EHCI_HCD=m
632# CONFIG_USB_EHCI_SPLIT_ISO is not set
633# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 677# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
634# CONFIG_USB_EHCI_TT_NEWSCHED is not set 678# CONFIG_USB_EHCI_TT_NEWSCHED is not set
635# CONFIG_USB_ISP116X_HCD is not set 679# CONFIG_USB_ISP116X_HCD is not set
680# CONFIG_USB_ISP1760_HCD is not set
636CONFIG_USB_OHCI_HCD=m 681CONFIG_USB_OHCI_HCD=m
637# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 682# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
638# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 683# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -665,10 +710,6 @@ CONFIG_USB_MON=y
665# 710#
666# USB port drivers 711# USB port drivers
667# 712#
668
669#
670# USB Serial Converter support
671#
672# CONFIG_USB_SERIAL is not set 713# CONFIG_USB_SERIAL is not set
673 714
674# 715#
@@ -694,17 +735,11 @@ CONFIG_USB_MON=y
694# CONFIG_USB_TRANCEVIBRATOR is not set 735# CONFIG_USB_TRANCEVIBRATOR is not set
695# CONFIG_USB_IOWARRIOR is not set 736# CONFIG_USB_IOWARRIOR is not set
696# CONFIG_USB_TEST is not set 737# CONFIG_USB_TEST is not set
697
698#
699# USB DSL modem support
700#
701
702#
703# USB Gadget Support
704#
705# CONFIG_USB_GADGET is not set 738# CONFIG_USB_GADGET is not set
706# CONFIG_MMC is not set 739# CONFIG_MMC is not set
740# CONFIG_MEMSTICK is not set
707# CONFIG_NEW_LEDS is not set 741# CONFIG_NEW_LEDS is not set
742# CONFIG_ACCESSIBILITY is not set
708# CONFIG_INFINIBAND is not set 743# CONFIG_INFINIBAND is not set
709CONFIG_RTC_LIB=y 744CONFIG_RTC_LIB=y
710CONFIG_RTC_CLASS=y 745CONFIG_RTC_CLASS=y
@@ -729,9 +764,10 @@ CONFIG_RTC_INTF_DEV=y
729# Platform RTC drivers 764# Platform RTC drivers
730# 765#
731# CONFIG_RTC_DRV_CMOS is not set 766# CONFIG_RTC_DRV_CMOS is not set
767# CONFIG_RTC_DRV_DS1511 is not set
732# CONFIG_RTC_DRV_DS1553 is not set 768# CONFIG_RTC_DRV_DS1553 is not set
733# CONFIG_RTC_DRV_STK17TA8 is not set
734# CONFIG_RTC_DRV_DS1742 is not set 769# CONFIG_RTC_DRV_DS1742 is not set
770# CONFIG_RTC_DRV_STK17TA8 is not set
735# CONFIG_RTC_DRV_M48T86 is not set 771# CONFIG_RTC_DRV_M48T86 is not set
736# CONFIG_RTC_DRV_M48T59 is not set 772# CONFIG_RTC_DRV_M48T59 is not set
737# CONFIG_RTC_DRV_V3020 is not set 773# CONFIG_RTC_DRV_V3020 is not set
@@ -740,23 +776,6 @@ CONFIG_RTC_INTF_DEV=y
740# on-CPU RTC drivers 776# on-CPU RTC drivers
741# 777#
742CONFIG_RTC_DRV_VR41XX=y 778CONFIG_RTC_DRV_VR41XX=y
743
744#
745# DMA Engine support
746#
747# CONFIG_DMA_ENGINE is not set
748
749#
750# DMA Clients
751#
752
753#
754# DMA Devices
755#
756
757#
758# Userspace I/O
759#
760# CONFIG_UIO is not set 779# CONFIG_UIO is not set
761 780
762# 781#
@@ -771,20 +790,16 @@ CONFIG_EXT3_FS_XATTR=y
771# CONFIG_EXT3_FS_SECURITY is not set 790# CONFIG_EXT3_FS_SECURITY is not set
772# CONFIG_EXT4DEV_FS is not set 791# CONFIG_EXT4DEV_FS is not set
773CONFIG_JBD=y 792CONFIG_JBD=y
774# CONFIG_JBD_DEBUG is not set
775CONFIG_FS_MBCACHE=y 793CONFIG_FS_MBCACHE=y
776# CONFIG_REISERFS_FS is not set 794# CONFIG_REISERFS_FS is not set
777# CONFIG_JFS_FS is not set 795# CONFIG_JFS_FS is not set
778CONFIG_FS_POSIX_ACL=y 796CONFIG_FS_POSIX_ACL=y
779# CONFIG_XFS_FS is not set 797# CONFIG_XFS_FS is not set
780# CONFIG_GFS2_FS is not set
781# CONFIG_OCFS2_FS is not set 798# CONFIG_OCFS2_FS is not set
782# CONFIG_MINIX_FS is not set 799CONFIG_DNOTIFY=y
783CONFIG_ROMFS_FS=m
784CONFIG_INOTIFY=y 800CONFIG_INOTIFY=y
785CONFIG_INOTIFY_USER=y 801CONFIG_INOTIFY_USER=y
786# CONFIG_QUOTA is not set 802# CONFIG_QUOTA is not set
787CONFIG_DNOTIFY=y
788# CONFIG_AUTOFS_FS is not set 803# CONFIG_AUTOFS_FS is not set
789CONFIG_AUTOFS4_FS=y 804CONFIG_AUTOFS4_FS=y
790# CONFIG_FUSE_FS is not set 805# CONFIG_FUSE_FS is not set
@@ -813,7 +828,6 @@ CONFIG_SYSFS=y
813CONFIG_TMPFS=y 828CONFIG_TMPFS=y
814CONFIG_TMPFS_POSIX_ACL=y 829CONFIG_TMPFS_POSIX_ACL=y
815# CONFIG_HUGETLB_PAGE is not set 830# CONFIG_HUGETLB_PAGE is not set
816CONFIG_RAMFS=y
817# CONFIG_CONFIGFS_FS is not set 831# CONFIG_CONFIGFS_FS is not set
818 832
819# 833#
@@ -828,24 +842,21 @@ CONFIG_RAMFS=y
828# CONFIG_EFS_FS is not set 842# CONFIG_EFS_FS is not set
829CONFIG_CRAMFS=m 843CONFIG_CRAMFS=m
830# CONFIG_VXFS_FS is not set 844# CONFIG_VXFS_FS is not set
845# CONFIG_MINIX_FS is not set
831# CONFIG_HPFS_FS is not set 846# CONFIG_HPFS_FS is not set
832# CONFIG_QNX4FS_FS is not set 847# CONFIG_QNX4FS_FS is not set
848CONFIG_ROMFS_FS=m
833# CONFIG_SYSV_FS is not set 849# CONFIG_SYSV_FS is not set
834# CONFIG_UFS_FS is not set 850# CONFIG_UFS_FS is not set
835 851CONFIG_NETWORK_FILESYSTEMS=y
836#
837# Network File Systems
838#
839CONFIG_NFS_FS=y 852CONFIG_NFS_FS=y
840CONFIG_NFS_V3=y 853CONFIG_NFS_V3=y
841# CONFIG_NFS_V3_ACL is not set 854# CONFIG_NFS_V3_ACL is not set
842# CONFIG_NFS_V4 is not set 855# CONFIG_NFS_V4 is not set
843# CONFIG_NFS_DIRECTIO is not set
844CONFIG_NFSD=y 856CONFIG_NFSD=y
845CONFIG_NFSD_V3=y 857CONFIG_NFSD_V3=y
846# CONFIG_NFSD_V3_ACL is not set 858# CONFIG_NFSD_V3_ACL is not set
847# CONFIG_NFSD_V4 is not set 859# CONFIG_NFSD_V4 is not set
848CONFIG_NFSD_TCP=y
849CONFIG_ROOT_NFS=y 860CONFIG_ROOT_NFS=y
850CONFIG_LOCKD=y 861CONFIG_LOCKD=y
851CONFIG_LOCKD_V4=y 862CONFIG_LOCKD_V4=y
@@ -866,47 +877,38 @@ CONFIG_SUNRPC=y
866# 877#
867# CONFIG_PARTITION_ADVANCED is not set 878# CONFIG_PARTITION_ADVANCED is not set
868CONFIG_MSDOS_PARTITION=y 879CONFIG_MSDOS_PARTITION=y
869
870#
871# Native Language Support
872#
873# CONFIG_NLS is not set 880# CONFIG_NLS is not set
874
875#
876# Distributed Lock Manager
877#
878# CONFIG_DLM is not set 881# CONFIG_DLM is not set
879 882
880# 883#
881# Profiling support
882#
883# CONFIG_PROFILING is not set
884
885#
886# Kernel hacking 884# Kernel hacking
887# 885#
888CONFIG_TRACE_IRQFLAGS_SUPPORT=y 886CONFIG_TRACE_IRQFLAGS_SUPPORT=y
889# CONFIG_PRINTK_TIME is not set 887# CONFIG_PRINTK_TIME is not set
888CONFIG_ENABLE_WARN_DEPRECATED=y
890CONFIG_ENABLE_MUST_CHECK=y 889CONFIG_ENABLE_MUST_CHECK=y
890CONFIG_FRAME_WARN=1024
891# CONFIG_MAGIC_SYSRQ is not set 891# CONFIG_MAGIC_SYSRQ is not set
892# CONFIG_UNUSED_SYMBOLS is not set 892# CONFIG_UNUSED_SYMBOLS is not set
893# CONFIG_DEBUG_FS is not set 893# CONFIG_DEBUG_FS is not set
894# CONFIG_HEADERS_CHECK is not set 894# CONFIG_HEADERS_CHECK is not set
895# CONFIG_DEBUG_KERNEL is not set 895# CONFIG_DEBUG_KERNEL is not set
896CONFIG_CROSSCOMPILE=y 896# CONFIG_SAMPLES is not set
897CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs" 897CONFIG_CMDLINE="cca=3 mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
898 898
899# 899#
900# Security options 900# Security options
901# 901#
902# CONFIG_KEYS is not set 902# CONFIG_KEYS is not set
903# CONFIG_SECURITY is not set 903# CONFIG_SECURITY is not set
904# CONFIG_SECURITY_FILE_CAPABILITIES is not set
904# CONFIG_CRYPTO is not set 905# CONFIG_CRYPTO is not set
905 906
906# 907#
907# Library routines 908# Library routines
908# 909#
909CONFIG_BITREVERSE=y 910CONFIG_BITREVERSE=y
911# CONFIG_GENERIC_FIND_FIRST_BIT is not set
910CONFIG_CRC_CCITT=y 912CONFIG_CRC_CCITT=y
911# CONFIG_CRC16 is not set 913# CONFIG_CRC16 is not set
912# CONFIG_CRC_ITU_T is not set 914# CONFIG_CRC_ITU_T is not set
diff --git a/arch/mips/configs/tb0226_defconfig b/arch/mips/configs/tb0226_defconfig
index a95385b24546..2ba240e897c6 100644
--- a/arch/mips/configs/tb0226_defconfig
+++ b/arch/mips/configs/tb0226_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc2 3# Linux kernel version: 2.6.26-rc1
4# Thu Aug 9 11:16:55 2007 4# Mon May 12 11:53:54 2008
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -10,9 +10,11 @@ CONFIG_MIPS=y
10# 10#
11# CONFIG_MACH_ALCHEMY is not set 11# CONFIG_MACH_ALCHEMY is not set
12# CONFIG_BASLER_EXCITE is not set 12# CONFIG_BASLER_EXCITE is not set
13# CONFIG_BCM47XX is not set
13# CONFIG_MIPS_COBALT is not set 14# CONFIG_MIPS_COBALT is not set
14# CONFIG_MACH_DECSTATION is not set 15# CONFIG_MACH_DECSTATION is not set
15# CONFIG_MACH_JAZZ is not set 16# CONFIG_MACH_JAZZ is not set
17# CONFIG_LASAT is not set
16# CONFIG_LEMOTE_FULONG is not set 18# CONFIG_LEMOTE_FULONG is not set
17# CONFIG_MIPS_ATLAS is not set 19# CONFIG_MIPS_ATLAS is not set
18# CONFIG_MIPS_MALTA is not set 20# CONFIG_MIPS_MALTA is not set
@@ -26,6 +28,7 @@ CONFIG_MACH_VR41XX=y
26# CONFIG_PMC_YOSEMITE is not set 28# CONFIG_PMC_YOSEMITE is not set
27# CONFIG_SGI_IP22 is not set 29# CONFIG_SGI_IP22 is not set
28# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
31# CONFIG_SGI_IP28 is not set
29# CONFIG_SGI_IP32 is not set 32# CONFIG_SGI_IP32 is not set
30# CONFIG_SIBYTE_CRHINE is not set 33# CONFIG_SIBYTE_CRHINE is not set
31# CONFIG_SIBYTE_CARMEL is not set 34# CONFIG_SIBYTE_CARMEL is not set
@@ -53,12 +56,17 @@ CONFIG_PCI_VR41XX=y
53CONFIG_RWSEM_GENERIC_SPINLOCK=y 56CONFIG_RWSEM_GENERIC_SPINLOCK=y
54# CONFIG_ARCH_HAS_ILOG2_U32 is not set 57# CONFIG_ARCH_HAS_ILOG2_U32 is not set
55# CONFIG_ARCH_HAS_ILOG2_U64 is not set 58# CONFIG_ARCH_HAS_ILOG2_U64 is not set
59CONFIG_ARCH_SUPPORTS_OPROFILE=y
56CONFIG_GENERIC_FIND_NEXT_BIT=y 60CONFIG_GENERIC_FIND_NEXT_BIT=y
57CONFIG_GENERIC_HWEIGHT=y 61CONFIG_GENERIC_HWEIGHT=y
58CONFIG_GENERIC_CALIBRATE_DELAY=y 62CONFIG_GENERIC_CALIBRATE_DELAY=y
63CONFIG_GENERIC_CLOCKEVENTS=y
59CONFIG_GENERIC_TIME=y 64CONFIG_GENERIC_TIME=y
65CONFIG_GENERIC_CMOS_UPDATE=y
60CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 66CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
61CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 67CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
68CONFIG_CEVT_R4K=y
69CONFIG_CSRC_R4K=y
62CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
63CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
64# CONFIG_HOTPLUG_CPU is not set 72# CONFIG_HOTPLUG_CPU is not set
@@ -113,6 +121,7 @@ CONFIG_CPU_HAS_SYNC=y
113CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
114CONFIG_GENERIC_IRQ_PROBE=y 122CONFIG_GENERIC_IRQ_PROBE=y
115CONFIG_ARCH_FLATMEM_ENABLE=y 123CONFIG_ARCH_FLATMEM_ENABLE=y
124CONFIG_ARCH_POPULATES_NODE_MAP=y
116CONFIG_SELECT_MEMORY_MODEL=y 125CONFIG_SELECT_MEMORY_MODEL=y
117CONFIG_FLATMEM_MANUAL=y 126CONFIG_FLATMEM_MANUAL=y
118# CONFIG_DISCONTIGMEM_MANUAL is not set 127# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -120,10 +129,16 @@ CONFIG_FLATMEM_MANUAL=y
120CONFIG_FLATMEM=y 129CONFIG_FLATMEM=y
121CONFIG_FLAT_NODE_MEM_MAP=y 130CONFIG_FLAT_NODE_MEM_MAP=y
122# CONFIG_SPARSEMEM_STATIC is not set 131# CONFIG_SPARSEMEM_STATIC is not set
132# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
133CONFIG_PAGEFLAGS_EXTENDED=y
123CONFIG_SPLIT_PTLOCK_CPUS=4 134CONFIG_SPLIT_PTLOCK_CPUS=4
124# CONFIG_RESOURCES_64BIT is not set 135# CONFIG_RESOURCES_64BIT is not set
125CONFIG_ZONE_DMA_FLAG=0 136CONFIG_ZONE_DMA_FLAG=0
126CONFIG_VIRT_TO_BUS=y 137CONFIG_VIRT_TO_BUS=y
138# CONFIG_TICK_ONESHOT is not set
139# CONFIG_NO_HZ is not set
140# CONFIG_HIGH_RES_TIMERS is not set
141CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
127# CONFIG_HZ_48 is not set 142# CONFIG_HZ_48 is not set
128# CONFIG_HZ_100 is not set 143# CONFIG_HZ_100 is not set
129# CONFIG_HZ_128 is not set 144# CONFIG_HZ_128 is not set
@@ -156,23 +171,29 @@ CONFIG_SYSVIPC_SYSCTL=y
156# CONFIG_POSIX_MQUEUE is not set 171# CONFIG_POSIX_MQUEUE is not set
157# CONFIG_BSD_PROCESS_ACCT is not set 172# CONFIG_BSD_PROCESS_ACCT is not set
158# CONFIG_TASKSTATS is not set 173# CONFIG_TASKSTATS is not set
159# CONFIG_USER_NS is not set
160# CONFIG_AUDIT is not set 174# CONFIG_AUDIT is not set
161# CONFIG_IKCONFIG is not set 175# CONFIG_IKCONFIG is not set
162CONFIG_LOG_BUF_SHIFT=14 176CONFIG_LOG_BUF_SHIFT=14
177# CONFIG_CGROUPS is not set
178# CONFIG_GROUP_SCHED is not set
163CONFIG_SYSFS_DEPRECATED=y 179CONFIG_SYSFS_DEPRECATED=y
180CONFIG_SYSFS_DEPRECATED_V2=y
164# CONFIG_RELAY is not set 181# CONFIG_RELAY is not set
182# CONFIG_NAMESPACES is not set
165# CONFIG_BLK_DEV_INITRD is not set 183# CONFIG_BLK_DEV_INITRD is not set
166# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 184# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
167CONFIG_SYSCTL=y 185CONFIG_SYSCTL=y
168CONFIG_EMBEDDED=y 186CONFIG_EMBEDDED=y
169CONFIG_SYSCTL_SYSCALL=y 187CONFIG_SYSCTL_SYSCALL=y
188CONFIG_SYSCTL_SYSCALL_CHECK=y
170CONFIG_KALLSYMS=y 189CONFIG_KALLSYMS=y
171# CONFIG_KALLSYMS_EXTRA_PASS is not set 190# CONFIG_KALLSYMS_EXTRA_PASS is not set
172CONFIG_HOTPLUG=y 191CONFIG_HOTPLUG=y
173CONFIG_PRINTK=y 192CONFIG_PRINTK=y
174CONFIG_BUG=y 193CONFIG_BUG=y
175CONFIG_ELF_CORE=y 194CONFIG_ELF_CORE=y
195# CONFIG_PCSPKR_PLATFORM is not set
196CONFIG_COMPAT_BRK=y
176CONFIG_BASE_FULL=y 197CONFIG_BASE_FULL=y
177CONFIG_FUTEX=y 198CONFIG_FUTEX=y
178CONFIG_ANON_INODES=y 199CONFIG_ANON_INODES=y
@@ -185,10 +206,19 @@ CONFIG_VM_EVENT_COUNTERS=y
185CONFIG_SLAB=y 206CONFIG_SLAB=y
186# CONFIG_SLUB is not set 207# CONFIG_SLUB is not set
187# CONFIG_SLOB is not set 208# CONFIG_SLOB is not set
209# CONFIG_PROFILING is not set
210# CONFIG_MARKERS is not set
211CONFIG_HAVE_OPROFILE=y
212# CONFIG_HAVE_KPROBES is not set
213# CONFIG_HAVE_KRETPROBES is not set
214# CONFIG_HAVE_DMA_ATTRS is not set
215CONFIG_PROC_PAGE_MONITOR=y
216CONFIG_SLABINFO=y
188CONFIG_RT_MUTEXES=y 217CONFIG_RT_MUTEXES=y
189# CONFIG_TINY_SHMEM is not set 218# CONFIG_TINY_SHMEM is not set
190CONFIG_BASE_SMALL=0 219CONFIG_BASE_SMALL=0
191CONFIG_MODULES=y 220CONFIG_MODULES=y
221# CONFIG_MODULE_FORCE_LOAD is not set
192CONFIG_MODULE_UNLOAD=y 222CONFIG_MODULE_UNLOAD=y
193CONFIG_MODULE_FORCE_UNLOAD=y 223CONFIG_MODULE_FORCE_UNLOAD=y
194CONFIG_MODVERSIONS=y 224CONFIG_MODVERSIONS=y
@@ -212,18 +242,17 @@ CONFIG_DEFAULT_AS=y
212# CONFIG_DEFAULT_CFQ is not set 242# CONFIG_DEFAULT_CFQ is not set
213# CONFIG_DEFAULT_NOOP is not set 243# CONFIG_DEFAULT_NOOP is not set
214CONFIG_DEFAULT_IOSCHED="anticipatory" 244CONFIG_DEFAULT_IOSCHED="anticipatory"
245CONFIG_CLASSIC_RCU=y
215 246
216# 247#
217# Bus options (PCI, PCMCIA, EISA, ISA, TC) 248# Bus options (PCI, PCMCIA, EISA, ISA, TC)
218# 249#
219CONFIG_HW_HAS_PCI=y 250CONFIG_HW_HAS_PCI=y
220CONFIG_PCI=y 251CONFIG_PCI=y
252CONFIG_PCI_DOMAINS=y
221# CONFIG_ARCH_SUPPORTS_MSI is not set 253# CONFIG_ARCH_SUPPORTS_MSI is not set
254CONFIG_PCI_LEGACY=y
222CONFIG_MMU=y 255CONFIG_MMU=y
223
224#
225# PCCARD (PCMCIA/CardBus) support
226#
227# CONFIG_PCCARD is not set 256# CONFIG_PCCARD is not set
228# CONFIG_HOTPLUG_PCI is not set 257# CONFIG_HOTPLUG_PCI is not set
229 258
@@ -237,6 +266,7 @@ CONFIG_TRAD_SIGNALS=y
237# 266#
238# Power management options 267# Power management options
239# 268#
269CONFIG_ARCH_SUSPEND_POSSIBLE=y
240# CONFIG_PM is not set 270# CONFIG_PM is not set
241 271
242# 272#
@@ -277,6 +307,7 @@ CONFIG_SYN_COOKIES=y
277# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 307# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
278# CONFIG_INET_XFRM_MODE_TUNNEL is not set 308# CONFIG_INET_XFRM_MODE_TUNNEL is not set
279# CONFIG_INET_XFRM_MODE_BEET is not set 309# CONFIG_INET_XFRM_MODE_BEET is not set
310# CONFIG_INET_LRO is not set
280CONFIG_INET_DIAG=y 311CONFIG_INET_DIAG=y
281CONFIG_INET_TCP_DIAG=y 312CONFIG_INET_TCP_DIAG=y
282# CONFIG_TCP_CONG_ADVANCED is not set 313# CONFIG_TCP_CONG_ADVANCED is not set
@@ -284,15 +315,10 @@ CONFIG_TCP_CONG_CUBIC=y
284CONFIG_DEFAULT_TCP_CONG="cubic" 315CONFIG_DEFAULT_TCP_CONG="cubic"
285# CONFIG_TCP_MD5SIG is not set 316# CONFIG_TCP_MD5SIG is not set
286# CONFIG_IPV6 is not set 317# CONFIG_IPV6 is not set
287# CONFIG_INET6_XFRM_TUNNEL is not set
288# CONFIG_INET6_TUNNEL is not set
289CONFIG_NETWORK_SECMARK=y 318CONFIG_NETWORK_SECMARK=y
290# CONFIG_NETFILTER is not set 319# CONFIG_NETFILTER is not set
291# CONFIG_IP_DCCP is not set 320# CONFIG_IP_DCCP is not set
292# CONFIG_IP_SCTP is not set 321# CONFIG_IP_SCTP is not set
293# CONFIG_SCTP_HMAC_NONE is not set
294# CONFIG_SCTP_HMAC_SHA1 is not set
295# CONFIG_SCTP_HMAC_MD5 is not set
296# CONFIG_TIPC is not set 322# CONFIG_TIPC is not set
297# CONFIG_ATM is not set 323# CONFIG_ATM is not set
298# CONFIG_BRIDGE is not set 324# CONFIG_BRIDGE is not set
@@ -305,10 +331,6 @@ CONFIG_NETWORK_SECMARK=y
305# CONFIG_LAPB is not set 331# CONFIG_LAPB is not set
306# CONFIG_ECONET is not set 332# CONFIG_ECONET is not set
307# CONFIG_WAN_ROUTER is not set 333# CONFIG_WAN_ROUTER is not set
308
309#
310# QoS and/or fair queueing
311#
312# CONFIG_NET_SCHED is not set 334# CONFIG_NET_SCHED is not set
313 335
314# 336#
@@ -316,6 +338,7 @@ CONFIG_NETWORK_SECMARK=y
316# 338#
317# CONFIG_NET_PKTGEN is not set 339# CONFIG_NET_PKTGEN is not set
318# CONFIG_HAMRADIO is not set 340# CONFIG_HAMRADIO is not set
341# CONFIG_CAN is not set
319# CONFIG_IRDA is not set 342# CONFIG_IRDA is not set
320# CONFIG_BT is not set 343# CONFIG_BT is not set
321# CONFIG_AF_RXRPC is not set 344# CONFIG_AF_RXRPC is not set
@@ -338,6 +361,7 @@ CONFIG_FIB_RULES=y
338# 361#
339# Generic Driver Options 362# Generic Driver Options
340# 363#
364CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
341CONFIG_STANDALONE=y 365CONFIG_STANDALONE=y
342CONFIG_PREVENT_FIRMWARE_BUILD=y 366CONFIG_PREVENT_FIRMWARE_BUILD=y
343CONFIG_FW_LOADER=y 367CONFIG_FW_LOADER=y
@@ -359,10 +383,11 @@ CONFIG_BLK_DEV_NBD=m
359CONFIG_BLK_DEV_RAM=y 383CONFIG_BLK_DEV_RAM=y
360CONFIG_BLK_DEV_RAM_COUNT=16 384CONFIG_BLK_DEV_RAM_COUNT=16
361CONFIG_BLK_DEV_RAM_SIZE=4096 385CONFIG_BLK_DEV_RAM_SIZE=4096
362CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 386CONFIG_BLK_DEV_XIP=y
363# CONFIG_CDROM_PKTCDVD is not set 387# CONFIG_CDROM_PKTCDVD is not set
364# CONFIG_ATA_OVER_ETH is not set 388# CONFIG_ATA_OVER_ETH is not set
365# CONFIG_MISC_DEVICES is not set 389# CONFIG_MISC_DEVICES is not set
390CONFIG_HAVE_IDE=y
366# CONFIG_IDE is not set 391# CONFIG_IDE is not set
367 392
368# 393#
@@ -402,18 +427,13 @@ CONFIG_SCSI_WAIT_SCAN=m
402# CONFIG_SCSI_ISCSI_ATTRS is not set 427# CONFIG_SCSI_ISCSI_ATTRS is not set
403CONFIG_SCSI_SAS_ATTRS=m 428CONFIG_SCSI_SAS_ATTRS=m
404CONFIG_SCSI_SAS_LIBSAS=m 429CONFIG_SCSI_SAS_LIBSAS=m
430CONFIG_SCSI_SAS_HOST_SMP=y
405# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set 431# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
432# CONFIG_SCSI_SRP_ATTRS is not set
406# CONFIG_SCSI_LOWLEVEL is not set 433# CONFIG_SCSI_LOWLEVEL is not set
407# CONFIG_ATA is not set 434# CONFIG_ATA is not set
408# CONFIG_MD is not set 435# CONFIG_MD is not set
409
410#
411# Fusion MPT device support
412#
413# CONFIG_FUSION is not set 436# CONFIG_FUSION is not set
414# CONFIG_FUSION_SPI is not set
415# CONFIG_FUSION_FC is not set
416# CONFIG_FUSION_SAS is not set
417 437
418# 438#
419# IEEE 1394 (FireWire) support 439# IEEE 1394 (FireWire) support
@@ -428,6 +448,7 @@ CONFIG_NETDEVICES=y
428# CONFIG_MACVLAN is not set 448# CONFIG_MACVLAN is not set
429# CONFIG_EQUALIZER is not set 449# CONFIG_EQUALIZER is not set
430# CONFIG_TUN is not set 450# CONFIG_TUN is not set
451# CONFIG_VETH is not set
431# CONFIG_ARCNET is not set 452# CONFIG_ARCNET is not set
432# CONFIG_PHYLIB is not set 453# CONFIG_PHYLIB is not set
433CONFIG_NET_ETHERNET=y 454CONFIG_NET_ETHERNET=y
@@ -440,6 +461,10 @@ CONFIG_MII=y
440# CONFIG_DM9000 is not set 461# CONFIG_DM9000 is not set
441# CONFIG_NET_TULIP is not set 462# CONFIG_NET_TULIP is not set
442# CONFIG_HP100 is not set 463# CONFIG_HP100 is not set
464# CONFIG_IBM_NEW_EMAC_ZMII is not set
465# CONFIG_IBM_NEW_EMAC_RGMII is not set
466# CONFIG_IBM_NEW_EMAC_TAH is not set
467# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
443CONFIG_NET_PCI=y 468CONFIG_NET_PCI=y
444# CONFIG_PCNET32 is not set 469# CONFIG_PCNET32 is not set
445# CONFIG_AMD8111_ETH is not set 470# CONFIG_AMD8111_ETH is not set
@@ -447,7 +472,6 @@ CONFIG_NET_PCI=y
447# CONFIG_B44 is not set 472# CONFIG_B44 is not set
448# CONFIG_FORCEDETH is not set 473# CONFIG_FORCEDETH is not set
449# CONFIG_TC35815 is not set 474# CONFIG_TC35815 is not set
450# CONFIG_DGRS is not set
451# CONFIG_EEPRO100 is not set 475# CONFIG_EEPRO100 is not set
452CONFIG_E100=y 476CONFIG_E100=y
453# CONFIG_FEALNX is not set 477# CONFIG_FEALNX is not set
@@ -455,6 +479,7 @@ CONFIG_E100=y
455# CONFIG_NE2K_PCI is not set 479# CONFIG_NE2K_PCI is not set
456# CONFIG_8139CP is not set 480# CONFIG_8139CP is not set
457# CONFIG_8139TOO is not set 481# CONFIG_8139TOO is not set
482# CONFIG_R6040 is not set
458# CONFIG_SIS900 is not set 483# CONFIG_SIS900 is not set
459# CONFIG_EPIC100 is not set 484# CONFIG_EPIC100 is not set
460# CONFIG_SUNDANCE is not set 485# CONFIG_SUNDANCE is not set
@@ -470,6 +495,7 @@ CONFIG_E100=y
470# 495#
471# CONFIG_WLAN_PRE80211 is not set 496# CONFIG_WLAN_PRE80211 is not set
472# CONFIG_WLAN_80211 is not set 497# CONFIG_WLAN_80211 is not set
498# CONFIG_IWLWIFI_LEDS is not set
473 499
474# 500#
475# USB Network Adapters 501# USB Network Adapters
@@ -478,7 +504,6 @@ CONFIG_USB_CATC=m
478CONFIG_USB_KAWETH=m 504CONFIG_USB_KAWETH=m
479CONFIG_USB_PEGASUS=m 505CONFIG_USB_PEGASUS=m
480CONFIG_USB_RTL8150=m 506CONFIG_USB_RTL8150=m
481# CONFIG_USB_USBNET_MII is not set
482# CONFIG_USB_USBNET is not set 507# CONFIG_USB_USBNET is not set
483# CONFIG_WAN is not set 508# CONFIG_WAN is not set
484# CONFIG_FDDI is not set 509# CONFIG_FDDI is not set
@@ -486,7 +511,6 @@ CONFIG_USB_RTL8150=m
486# CONFIG_PPP is not set 511# CONFIG_PPP is not set
487# CONFIG_SLIP is not set 512# CONFIG_SLIP is not set
488# CONFIG_NET_FC is not set 513# CONFIG_NET_FC is not set
489# CONFIG_SHAPER is not set
490# CONFIG_NETCONSOLE is not set 514# CONFIG_NETCONSOLE is not set
491# CONFIG_NETPOLL is not set 515# CONFIG_NETPOLL is not set
492# CONFIG_NET_POLL_CONTROLLER is not set 516# CONFIG_NET_POLL_CONTROLLER is not set
@@ -505,7 +529,6 @@ CONFIG_INPUT=y
505# 529#
506# CONFIG_INPUT_MOUSEDEV is not set 530# CONFIG_INPUT_MOUSEDEV is not set
507# CONFIG_INPUT_JOYDEV is not set 531# CONFIG_INPUT_JOYDEV is not set
508# CONFIG_INPUT_TSDEV is not set
509# CONFIG_INPUT_EVDEV is not set 532# CONFIG_INPUT_EVDEV is not set
510# CONFIG_INPUT_EVBUG is not set 533# CONFIG_INPUT_EVBUG is not set
511 534
@@ -532,7 +555,9 @@ CONFIG_VT=y
532CONFIG_VT_CONSOLE=y 555CONFIG_VT_CONSOLE=y
533CONFIG_HW_CONSOLE=y 556CONFIG_HW_CONSOLE=y
534CONFIG_VT_HW_CONSOLE_BINDING=y 557CONFIG_VT_HW_CONSOLE_BINDING=y
558# CONFIG_DEVKMEM is not set
535# CONFIG_SERIAL_NONSTANDARD is not set 559# CONFIG_SERIAL_NONSTANDARD is not set
560# CONFIG_NOZOMI is not set
536 561
537# 562#
538# Serial drivers 563# Serial drivers
@@ -551,52 +576,62 @@ CONFIG_UNIX98_PTYS=y
551CONFIG_LEGACY_PTYS=y 576CONFIG_LEGACY_PTYS=y
552CONFIG_LEGACY_PTY_COUNT=256 577CONFIG_LEGACY_PTY_COUNT=256
553# CONFIG_IPMI_HANDLER is not set 578# CONFIG_IPMI_HANDLER is not set
554# CONFIG_WATCHDOG is not set
555# CONFIG_HW_RANDOM is not set 579# CONFIG_HW_RANDOM is not set
556# CONFIG_RTC is not set
557# CONFIG_R3964 is not set 580# CONFIG_R3964 is not set
558# CONFIG_APPLICOM is not set 581# CONFIG_APPLICOM is not set
559# CONFIG_GPIO_TB0219 is not set 582# CONFIG_GPIO_TB0219 is not set
560# CONFIG_DRM is not set
561CONFIG_GPIO_VR41XX=y 583CONFIG_GPIO_VR41XX=y
562# CONFIG_RAW_DRIVER is not set 584# CONFIG_RAW_DRIVER is not set
563# CONFIG_TCG_TPM is not set 585# CONFIG_TCG_TPM is not set
564CONFIG_DEVPORT=y 586CONFIG_DEVPORT=y
565# CONFIG_I2C is not set 587# CONFIG_I2C is not set
566
567#
568# SPI support
569#
570# CONFIG_SPI is not set 588# CONFIG_SPI is not set
571# CONFIG_SPI_MASTER is not set
572# CONFIG_W1 is not set 589# CONFIG_W1 is not set
573# CONFIG_POWER_SUPPLY is not set 590# CONFIG_POWER_SUPPLY is not set
574# CONFIG_HWMON is not set 591# CONFIG_HWMON is not set
592# CONFIG_THERMAL is not set
593# CONFIG_WATCHDOG is not set
594
595#
596# Sonics Silicon Backplane
597#
598CONFIG_SSB_POSSIBLE=y
599# CONFIG_SSB is not set
575 600
576# 601#
577# Multifunction device drivers 602# Multifunction device drivers
578# 603#
579# CONFIG_MFD_SM501 is not set 604# CONFIG_MFD_SM501 is not set
605# CONFIG_HTC_PASIC3 is not set
580 606
581# 607#
582# Multimedia devices 608# Multimedia devices
583# 609#
610
611#
612# Multimedia core support
613#
584# CONFIG_VIDEO_DEV is not set 614# CONFIG_VIDEO_DEV is not set
585# CONFIG_DVB_CORE is not set 615# CONFIG_DVB_CORE is not set
616
617#
618# Multimedia drivers
619#
586# CONFIG_DAB is not set 620# CONFIG_DAB is not set
587 621
588# 622#
589# Graphics support 623# Graphics support
590# 624#
625# CONFIG_DRM is not set
626# CONFIG_VGASTATE is not set
627# CONFIG_VIDEO_OUTPUT_CONTROL is not set
628# CONFIG_FB is not set
591# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 629# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
592 630
593# 631#
594# Display device support 632# Display device support
595# 633#
596# CONFIG_DISPLAY_SUPPORT is not set 634# CONFIG_DISPLAY_SUPPORT is not set
597# CONFIG_VGASTATE is not set
598# CONFIG_VIDEO_OUTPUT_CONTROL is not set
599# CONFIG_FB is not set
600 635
601# 636#
602# Console display driver support 637# Console display driver support
@@ -615,6 +650,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
615CONFIG_USB_ARCH_HAS_EHCI=y 650CONFIG_USB_ARCH_HAS_EHCI=y
616CONFIG_USB=y 651CONFIG_USB=y
617# CONFIG_USB_DEBUG is not set 652# CONFIG_USB_DEBUG is not set
653# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
618 654
619# 655#
620# Miscellaneous USB options 656# Miscellaneous USB options
@@ -623,15 +659,18 @@ CONFIG_USB_DEVICEFS=y
623CONFIG_USB_DEVICE_CLASS=y 659CONFIG_USB_DEVICE_CLASS=y
624# CONFIG_USB_DYNAMIC_MINORS is not set 660# CONFIG_USB_DYNAMIC_MINORS is not set
625# CONFIG_USB_OTG is not set 661# CONFIG_USB_OTG is not set
662# CONFIG_USB_OTG_WHITELIST is not set
663# CONFIG_USB_OTG_BLACKLIST_HUB is not set
626 664
627# 665#
628# USB Host Controller Drivers 666# USB Host Controller Drivers
629# 667#
668# CONFIG_USB_C67X00_HCD is not set
630CONFIG_USB_EHCI_HCD=y 669CONFIG_USB_EHCI_HCD=y
631# CONFIG_USB_EHCI_SPLIT_ISO is not set
632# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 670# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
633# CONFIG_USB_EHCI_TT_NEWSCHED is not set 671# CONFIG_USB_EHCI_TT_NEWSCHED is not set
634# CONFIG_USB_ISP116X_HCD is not set 672# CONFIG_USB_ISP116X_HCD is not set
673# CONFIG_USB_ISP1760_HCD is not set
635CONFIG_USB_OHCI_HCD=y 674CONFIG_USB_OHCI_HCD=y
636# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 675# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
637# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 676# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -657,13 +696,16 @@ CONFIG_USB_STORAGE=y
657# CONFIG_USB_STORAGE_DEBUG is not set 696# CONFIG_USB_STORAGE_DEBUG is not set
658# CONFIG_USB_STORAGE_DATAFAB is not set 697# CONFIG_USB_STORAGE_DATAFAB is not set
659# CONFIG_USB_STORAGE_FREECOM is not set 698# CONFIG_USB_STORAGE_FREECOM is not set
699# CONFIG_USB_STORAGE_ISD200 is not set
660# CONFIG_USB_STORAGE_DPCM is not set 700# CONFIG_USB_STORAGE_DPCM is not set
661# CONFIG_USB_STORAGE_USBAT is not set 701# CONFIG_USB_STORAGE_USBAT is not set
662# CONFIG_USB_STORAGE_SDDR09 is not set 702# CONFIG_USB_STORAGE_SDDR09 is not set
663# CONFIG_USB_STORAGE_SDDR55 is not set 703# CONFIG_USB_STORAGE_SDDR55 is not set
664# CONFIG_USB_STORAGE_JUMPSHOT is not set 704# CONFIG_USB_STORAGE_JUMPSHOT is not set
665# CONFIG_USB_STORAGE_ALAUDA is not set 705# CONFIG_USB_STORAGE_ALAUDA is not set
706# CONFIG_USB_STORAGE_ONETOUCH is not set
666# CONFIG_USB_STORAGE_KARMA is not set 707# CONFIG_USB_STORAGE_KARMA is not set
708# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
667# CONFIG_USB_LIBUSUAL is not set 709# CONFIG_USB_LIBUSUAL is not set
668 710
669# 711#
@@ -676,10 +718,6 @@ CONFIG_USB_STORAGE=y
676# 718#
677# USB port drivers 719# USB port drivers
678# 720#
679
680#
681# USB Serial Converter support
682#
683# CONFIG_USB_SERIAL is not set 721# CONFIG_USB_SERIAL is not set
684 722
685# 723#
@@ -705,17 +743,11 @@ CONFIG_USB_STORAGE=y
705# CONFIG_USB_TRANCEVIBRATOR is not set 743# CONFIG_USB_TRANCEVIBRATOR is not set
706# CONFIG_USB_IOWARRIOR is not set 744# CONFIG_USB_IOWARRIOR is not set
707# CONFIG_USB_TEST is not set 745# CONFIG_USB_TEST is not set
708
709#
710# USB DSL modem support
711#
712
713#
714# USB Gadget Support
715#
716# CONFIG_USB_GADGET is not set 746# CONFIG_USB_GADGET is not set
717# CONFIG_MMC is not set 747# CONFIG_MMC is not set
748# CONFIG_MEMSTICK is not set
718# CONFIG_NEW_LEDS is not set 749# CONFIG_NEW_LEDS is not set
750# CONFIG_ACCESSIBILITY is not set
719# CONFIG_INFINIBAND is not set 751# CONFIG_INFINIBAND is not set
720CONFIG_RTC_LIB=y 752CONFIG_RTC_LIB=y
721CONFIG_RTC_CLASS=y 753CONFIG_RTC_CLASS=y
@@ -740,9 +772,10 @@ CONFIG_RTC_INTF_DEV=y
740# Platform RTC drivers 772# Platform RTC drivers
741# 773#
742# CONFIG_RTC_DRV_CMOS is not set 774# CONFIG_RTC_DRV_CMOS is not set
775# CONFIG_RTC_DRV_DS1511 is not set
743# CONFIG_RTC_DRV_DS1553 is not set 776# CONFIG_RTC_DRV_DS1553 is not set
744# CONFIG_RTC_DRV_STK17TA8 is not set
745# CONFIG_RTC_DRV_DS1742 is not set 777# CONFIG_RTC_DRV_DS1742 is not set
778# CONFIG_RTC_DRV_STK17TA8 is not set
746# CONFIG_RTC_DRV_M48T86 is not set 779# CONFIG_RTC_DRV_M48T86 is not set
747# CONFIG_RTC_DRV_M48T59 is not set 780# CONFIG_RTC_DRV_M48T59 is not set
748# CONFIG_RTC_DRV_V3020 is not set 781# CONFIG_RTC_DRV_V3020 is not set
@@ -751,23 +784,6 @@ CONFIG_RTC_INTF_DEV=y
751# on-CPU RTC drivers 784# on-CPU RTC drivers
752# 785#
753CONFIG_RTC_DRV_VR41XX=y 786CONFIG_RTC_DRV_VR41XX=y
754
755#
756# DMA Engine support
757#
758# CONFIG_DMA_ENGINE is not set
759
760#
761# DMA Clients
762#
763
764#
765# DMA Devices
766#
767
768#
769# Userspace I/O
770#
771# CONFIG_UIO is not set 787# CONFIG_UIO is not set
772 788
773# 789#
@@ -782,14 +798,11 @@ CONFIG_EXT2_FS=y
782# CONFIG_JFS_FS is not set 798# CONFIG_JFS_FS is not set
783CONFIG_FS_POSIX_ACL=y 799CONFIG_FS_POSIX_ACL=y
784# CONFIG_XFS_FS is not set 800# CONFIG_XFS_FS is not set
785# CONFIG_GFS2_FS is not set
786# CONFIG_OCFS2_FS is not set 801# CONFIG_OCFS2_FS is not set
787# CONFIG_MINIX_FS is not set 802CONFIG_DNOTIFY=y
788CONFIG_ROMFS_FS=m
789CONFIG_INOTIFY=y 803CONFIG_INOTIFY=y
790CONFIG_INOTIFY_USER=y 804CONFIG_INOTIFY_USER=y
791# CONFIG_QUOTA is not set 805# CONFIG_QUOTA is not set
792CONFIG_DNOTIFY=y
793# CONFIG_AUTOFS_FS is not set 806# CONFIG_AUTOFS_FS is not set
794CONFIG_AUTOFS4_FS=y 807CONFIG_AUTOFS4_FS=y
795# CONFIG_FUSE_FS is not set 808# CONFIG_FUSE_FS is not set
@@ -818,7 +831,6 @@ CONFIG_SYSFS=y
818CONFIG_TMPFS=y 831CONFIG_TMPFS=y
819CONFIG_TMPFS_POSIX_ACL=y 832CONFIG_TMPFS_POSIX_ACL=y
820# CONFIG_HUGETLB_PAGE is not set 833# CONFIG_HUGETLB_PAGE is not set
821CONFIG_RAMFS=y
822# CONFIG_CONFIGFS_FS is not set 834# CONFIG_CONFIGFS_FS is not set
823 835
824# 836#
@@ -833,24 +845,21 @@ CONFIG_RAMFS=y
833# CONFIG_EFS_FS is not set 845# CONFIG_EFS_FS is not set
834CONFIG_CRAMFS=m 846CONFIG_CRAMFS=m
835# CONFIG_VXFS_FS is not set 847# CONFIG_VXFS_FS is not set
848# CONFIG_MINIX_FS is not set
836# CONFIG_HPFS_FS is not set 849# CONFIG_HPFS_FS is not set
837# CONFIG_QNX4FS_FS is not set 850# CONFIG_QNX4FS_FS is not set
851CONFIG_ROMFS_FS=m
838# CONFIG_SYSV_FS is not set 852# CONFIG_SYSV_FS is not set
839# CONFIG_UFS_FS is not set 853# CONFIG_UFS_FS is not set
840 854CONFIG_NETWORK_FILESYSTEMS=y
841#
842# Network File Systems
843#
844CONFIG_NFS_FS=y 855CONFIG_NFS_FS=y
845CONFIG_NFS_V3=y 856CONFIG_NFS_V3=y
846# CONFIG_NFS_V3_ACL is not set 857# CONFIG_NFS_V3_ACL is not set
847# CONFIG_NFS_V4 is not set 858# CONFIG_NFS_V4 is not set
848# CONFIG_NFS_DIRECTIO is not set
849CONFIG_NFSD=m 859CONFIG_NFSD=m
850CONFIG_NFSD_V3=y 860CONFIG_NFSD_V3=y
851# CONFIG_NFSD_V3_ACL is not set 861# CONFIG_NFSD_V3_ACL is not set
852# CONFIG_NFSD_V4 is not set 862# CONFIG_NFSD_V4 is not set
853# CONFIG_NFSD_TCP is not set
854CONFIG_ROOT_NFS=y 863CONFIG_ROOT_NFS=y
855CONFIG_LOCKD=y 864CONFIG_LOCKD=y
856CONFIG_LOCKD_V4=y 865CONFIG_LOCKD_V4=y
@@ -871,47 +880,38 @@ CONFIG_SUNRPC=y
871# 880#
872# CONFIG_PARTITION_ADVANCED is not set 881# CONFIG_PARTITION_ADVANCED is not set
873CONFIG_MSDOS_PARTITION=y 882CONFIG_MSDOS_PARTITION=y
874
875#
876# Native Language Support
877#
878# CONFIG_NLS is not set 883# CONFIG_NLS is not set
879
880#
881# Distributed Lock Manager
882#
883# CONFIG_DLM is not set 884# CONFIG_DLM is not set
884 885
885# 886#
886# Profiling support
887#
888# CONFIG_PROFILING is not set
889
890#
891# Kernel hacking 887# Kernel hacking
892# 888#
893CONFIG_TRACE_IRQFLAGS_SUPPORT=y 889CONFIG_TRACE_IRQFLAGS_SUPPORT=y
894# CONFIG_PRINTK_TIME is not set 890# CONFIG_PRINTK_TIME is not set
891CONFIG_ENABLE_WARN_DEPRECATED=y
895CONFIG_ENABLE_MUST_CHECK=y 892CONFIG_ENABLE_MUST_CHECK=y
893CONFIG_FRAME_WARN=1024
896# CONFIG_MAGIC_SYSRQ is not set 894# CONFIG_MAGIC_SYSRQ is not set
897# CONFIG_UNUSED_SYMBOLS is not set 895# CONFIG_UNUSED_SYMBOLS is not set
898# CONFIG_DEBUG_FS is not set 896# CONFIG_DEBUG_FS is not set
899# CONFIG_HEADERS_CHECK is not set 897# CONFIG_HEADERS_CHECK is not set
900# CONFIG_DEBUG_KERNEL is not set 898# CONFIG_DEBUG_KERNEL is not set
901CONFIG_CROSSCOMPILE=y 899# CONFIG_SAMPLES is not set
902CONFIG_CMDLINE="mem=32M console=ttyVR0,115200" 900CONFIG_CMDLINE="cca=3 mem=32M console=ttyVR0,115200"
903 901
904# 902#
905# Security options 903# Security options
906# 904#
907# CONFIG_KEYS is not set 905# CONFIG_KEYS is not set
908# CONFIG_SECURITY is not set 906# CONFIG_SECURITY is not set
907# CONFIG_SECURITY_FILE_CAPABILITIES is not set
909# CONFIG_CRYPTO is not set 908# CONFIG_CRYPTO is not set
910 909
911# 910#
912# Library routines 911# Library routines
913# 912#
914CONFIG_BITREVERSE=m 913CONFIG_BITREVERSE=m
914# CONFIG_GENERIC_FIND_FIRST_BIT is not set
915# CONFIG_CRC_CCITT is not set 915# CONFIG_CRC_CCITT is not set
916# CONFIG_CRC16 is not set 916# CONFIG_CRC16 is not set
917# CONFIG_CRC_ITU_T is not set 917# CONFIG_CRC_ITU_T is not set
diff --git a/arch/mips/configs/tb0287_defconfig b/arch/mips/configs/tb0287_defconfig
index 40d4a40a970e..a5d0f3c55ed1 100644
--- a/arch/mips/configs/tb0287_defconfig
+++ b/arch/mips/configs/tb0287_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc2 3# Linux kernel version: 2.6.26-rc1
4# Thu Aug 9 14:03:54 2007 4# Mon May 12 11:55:55 2008
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -10,9 +10,11 @@ CONFIG_MIPS=y
10# 10#
11# CONFIG_MACH_ALCHEMY is not set 11# CONFIG_MACH_ALCHEMY is not set
12# CONFIG_BASLER_EXCITE is not set 12# CONFIG_BASLER_EXCITE is not set
13# CONFIG_BCM47XX is not set
13# CONFIG_MIPS_COBALT is not set 14# CONFIG_MIPS_COBALT is not set
14# CONFIG_MACH_DECSTATION is not set 15# CONFIG_MACH_DECSTATION is not set
15# CONFIG_MACH_JAZZ is not set 16# CONFIG_MACH_JAZZ is not set
17# CONFIG_LASAT is not set
16# CONFIG_LEMOTE_FULONG is not set 18# CONFIG_LEMOTE_FULONG is not set
17# CONFIG_MIPS_ATLAS is not set 19# CONFIG_MIPS_ATLAS is not set
18# CONFIG_MIPS_MALTA is not set 20# CONFIG_MIPS_MALTA is not set
@@ -26,6 +28,7 @@ CONFIG_MACH_VR41XX=y
26# CONFIG_PMC_YOSEMITE is not set 28# CONFIG_PMC_YOSEMITE is not set
27# CONFIG_SGI_IP22 is not set 29# CONFIG_SGI_IP22 is not set
28# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
31# CONFIG_SGI_IP28 is not set
29# CONFIG_SGI_IP32 is not set 32# CONFIG_SGI_IP32 is not set
30# CONFIG_SIBYTE_CRHINE is not set 33# CONFIG_SIBYTE_CRHINE is not set
31# CONFIG_SIBYTE_CARMEL is not set 34# CONFIG_SIBYTE_CARMEL is not set
@@ -53,12 +56,17 @@ CONFIG_PCI_VR41XX=y
53CONFIG_RWSEM_GENERIC_SPINLOCK=y 56CONFIG_RWSEM_GENERIC_SPINLOCK=y
54# CONFIG_ARCH_HAS_ILOG2_U32 is not set 57# CONFIG_ARCH_HAS_ILOG2_U32 is not set
55# CONFIG_ARCH_HAS_ILOG2_U64 is not set 58# CONFIG_ARCH_HAS_ILOG2_U64 is not set
59CONFIG_ARCH_SUPPORTS_OPROFILE=y
56CONFIG_GENERIC_FIND_NEXT_BIT=y 60CONFIG_GENERIC_FIND_NEXT_BIT=y
57CONFIG_GENERIC_HWEIGHT=y 61CONFIG_GENERIC_HWEIGHT=y
58CONFIG_GENERIC_CALIBRATE_DELAY=y 62CONFIG_GENERIC_CALIBRATE_DELAY=y
63CONFIG_GENERIC_CLOCKEVENTS=y
59CONFIG_GENERIC_TIME=y 64CONFIG_GENERIC_TIME=y
65CONFIG_GENERIC_CMOS_UPDATE=y
60CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 66CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
61CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 67CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
68CONFIG_CEVT_R4K=y
69CONFIG_CSRC_R4K=y
62CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
63CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
64# CONFIG_HOTPLUG_CPU is not set 72# CONFIG_HOTPLUG_CPU is not set
@@ -113,6 +121,7 @@ CONFIG_CPU_HAS_SYNC=y
113CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
114CONFIG_GENERIC_IRQ_PROBE=y 122CONFIG_GENERIC_IRQ_PROBE=y
115CONFIG_ARCH_FLATMEM_ENABLE=y 123CONFIG_ARCH_FLATMEM_ENABLE=y
124CONFIG_ARCH_POPULATES_NODE_MAP=y
116CONFIG_SELECT_MEMORY_MODEL=y 125CONFIG_SELECT_MEMORY_MODEL=y
117CONFIG_FLATMEM_MANUAL=y 126CONFIG_FLATMEM_MANUAL=y
118# CONFIG_DISCONTIGMEM_MANUAL is not set 127# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -120,10 +129,16 @@ CONFIG_FLATMEM_MANUAL=y
120CONFIG_FLATMEM=y 129CONFIG_FLATMEM=y
121CONFIG_FLAT_NODE_MEM_MAP=y 130CONFIG_FLAT_NODE_MEM_MAP=y
122# CONFIG_SPARSEMEM_STATIC is not set 131# CONFIG_SPARSEMEM_STATIC is not set
132# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
133CONFIG_PAGEFLAGS_EXTENDED=y
123CONFIG_SPLIT_PTLOCK_CPUS=4 134CONFIG_SPLIT_PTLOCK_CPUS=4
124# CONFIG_RESOURCES_64BIT is not set 135# CONFIG_RESOURCES_64BIT is not set
125CONFIG_ZONE_DMA_FLAG=0 136CONFIG_ZONE_DMA_FLAG=0
126CONFIG_VIRT_TO_BUS=y 137CONFIG_VIRT_TO_BUS=y
138# CONFIG_TICK_ONESHOT is not set
139# CONFIG_NO_HZ is not set
140# CONFIG_HIGH_RES_TIMERS is not set
141CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
127# CONFIG_HZ_48 is not set 142# CONFIG_HZ_48 is not set
128# CONFIG_HZ_100 is not set 143# CONFIG_HZ_100 is not set
129# CONFIG_HZ_128 is not set 144# CONFIG_HZ_128 is not set
@@ -156,12 +171,15 @@ CONFIG_SYSVIPC_SYSCTL=y
156# CONFIG_POSIX_MQUEUE is not set 171# CONFIG_POSIX_MQUEUE is not set
157# CONFIG_BSD_PROCESS_ACCT is not set 172# CONFIG_BSD_PROCESS_ACCT is not set
158# CONFIG_TASKSTATS is not set 173# CONFIG_TASKSTATS is not set
159# CONFIG_USER_NS is not set
160# CONFIG_AUDIT is not set 174# CONFIG_AUDIT is not set
161# CONFIG_IKCONFIG is not set 175# CONFIG_IKCONFIG is not set
162CONFIG_LOG_BUF_SHIFT=14 176CONFIG_LOG_BUF_SHIFT=14
177# CONFIG_CGROUPS is not set
178# CONFIG_GROUP_SCHED is not set
163CONFIG_SYSFS_DEPRECATED=y 179CONFIG_SYSFS_DEPRECATED=y
180CONFIG_SYSFS_DEPRECATED_V2=y
164# CONFIG_RELAY is not set 181# CONFIG_RELAY is not set
182# CONFIG_NAMESPACES is not set
165# CONFIG_BLK_DEV_INITRD is not set 183# CONFIG_BLK_DEV_INITRD is not set
166# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 184# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
167CONFIG_SYSCTL=y 185CONFIG_SYSCTL=y
@@ -173,6 +191,8 @@ CONFIG_HOTPLUG=y
173CONFIG_PRINTK=y 191CONFIG_PRINTK=y
174CONFIG_BUG=y 192CONFIG_BUG=y
175CONFIG_ELF_CORE=y 193CONFIG_ELF_CORE=y
194# CONFIG_PCSPKR_PLATFORM is not set
195CONFIG_COMPAT_BRK=y
176CONFIG_BASE_FULL=y 196CONFIG_BASE_FULL=y
177CONFIG_FUTEX=y 197CONFIG_FUTEX=y
178CONFIG_ANON_INODES=y 198CONFIG_ANON_INODES=y
@@ -185,10 +205,19 @@ CONFIG_VM_EVENT_COUNTERS=y
185CONFIG_SLAB=y 205CONFIG_SLAB=y
186# CONFIG_SLUB is not set 206# CONFIG_SLUB is not set
187# CONFIG_SLOB is not set 207# CONFIG_SLOB is not set
208# CONFIG_PROFILING is not set
209# CONFIG_MARKERS is not set
210CONFIG_HAVE_OPROFILE=y
211# CONFIG_HAVE_KPROBES is not set
212# CONFIG_HAVE_KRETPROBES is not set
213# CONFIG_HAVE_DMA_ATTRS is not set
214CONFIG_PROC_PAGE_MONITOR=y
215CONFIG_SLABINFO=y
188CONFIG_RT_MUTEXES=y 216CONFIG_RT_MUTEXES=y
189# CONFIG_TINY_SHMEM is not set 217# CONFIG_TINY_SHMEM is not set
190CONFIG_BASE_SMALL=0 218CONFIG_BASE_SMALL=0
191CONFIG_MODULES=y 219CONFIG_MODULES=y
220# CONFIG_MODULE_FORCE_LOAD is not set
192CONFIG_MODULE_UNLOAD=y 221CONFIG_MODULE_UNLOAD=y
193CONFIG_MODULE_FORCE_UNLOAD=y 222CONFIG_MODULE_FORCE_UNLOAD=y
194CONFIG_MODVERSIONS=y 223CONFIG_MODVERSIONS=y
@@ -212,18 +241,17 @@ CONFIG_DEFAULT_AS=y
212# CONFIG_DEFAULT_CFQ is not set 241# CONFIG_DEFAULT_CFQ is not set
213# CONFIG_DEFAULT_NOOP is not set 242# CONFIG_DEFAULT_NOOP is not set
214CONFIG_DEFAULT_IOSCHED="anticipatory" 243CONFIG_DEFAULT_IOSCHED="anticipatory"
244CONFIG_CLASSIC_RCU=y
215 245
216# 246#
217# Bus options (PCI, PCMCIA, EISA, ISA, TC) 247# Bus options (PCI, PCMCIA, EISA, ISA, TC)
218# 248#
219CONFIG_HW_HAS_PCI=y 249CONFIG_HW_HAS_PCI=y
220CONFIG_PCI=y 250CONFIG_PCI=y
251CONFIG_PCI_DOMAINS=y
221# CONFIG_ARCH_SUPPORTS_MSI is not set 252# CONFIG_ARCH_SUPPORTS_MSI is not set
253CONFIG_PCI_LEGACY=y
222CONFIG_MMU=y 254CONFIG_MMU=y
223
224#
225# PCCARD (PCMCIA/CardBus) support
226#
227# CONFIG_PCCARD is not set 255# CONFIG_PCCARD is not set
228# CONFIG_HOTPLUG_PCI is not set 256# CONFIG_HOTPLUG_PCI is not set
229 257
@@ -237,6 +265,7 @@ CONFIG_TRAD_SIGNALS=y
237# 265#
238# Power management options 266# Power management options
239# 267#
268CONFIG_ARCH_SUSPEND_POSSIBLE=y
240# CONFIG_PM is not set 269# CONFIG_PM is not set
241 270
242# 271#
@@ -278,6 +307,7 @@ CONFIG_INET_TUNNEL=m
278# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 307# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
279# CONFIG_INET_XFRM_MODE_TUNNEL is not set 308# CONFIG_INET_XFRM_MODE_TUNNEL is not set
280# CONFIG_INET_XFRM_MODE_BEET is not set 309# CONFIG_INET_XFRM_MODE_BEET is not set
310# CONFIG_INET_LRO is not set
281CONFIG_INET_DIAG=y 311CONFIG_INET_DIAG=y
282CONFIG_INET_TCP_DIAG=y 312CONFIG_INET_TCP_DIAG=y
283CONFIG_TCP_CONG_ADVANCED=y 313CONFIG_TCP_CONG_ADVANCED=y
@@ -302,8 +332,6 @@ CONFIG_DEFAULT_BIC=y
302CONFIG_DEFAULT_TCP_CONG="bic" 332CONFIG_DEFAULT_TCP_CONG="bic"
303# CONFIG_TCP_MD5SIG is not set 333# CONFIG_TCP_MD5SIG is not set
304# CONFIG_IPV6 is not set 334# CONFIG_IPV6 is not set
305# CONFIG_INET6_XFRM_TUNNEL is not set
306# CONFIG_INET6_TUNNEL is not set
307CONFIG_NETWORK_SECMARK=y 335CONFIG_NETWORK_SECMARK=y
308# CONFIG_NETFILTER is not set 336# CONFIG_NETFILTER is not set
309# CONFIG_IP_DCCP is not set 337# CONFIG_IP_DCCP is not set
@@ -320,10 +348,6 @@ CONFIG_NETWORK_SECMARK=y
320# CONFIG_LAPB is not set 348# CONFIG_LAPB is not set
321# CONFIG_ECONET is not set 349# CONFIG_ECONET is not set
322# CONFIG_WAN_ROUTER is not set 350# CONFIG_WAN_ROUTER is not set
323
324#
325# QoS and/or fair queueing
326#
327# CONFIG_NET_SCHED is not set 351# CONFIG_NET_SCHED is not set
328 352
329# 353#
@@ -331,6 +355,7 @@ CONFIG_NETWORK_SECMARK=y
331# 355#
332# CONFIG_NET_PKTGEN is not set 356# CONFIG_NET_PKTGEN is not set
333# CONFIG_HAMRADIO is not set 357# CONFIG_HAMRADIO is not set
358# CONFIG_CAN is not set
334# CONFIG_IRDA is not set 359# CONFIG_IRDA is not set
335# CONFIG_BT is not set 360# CONFIG_BT is not set
336# CONFIG_AF_RXRPC is not set 361# CONFIG_AF_RXRPC is not set
@@ -353,6 +378,7 @@ CONFIG_FIB_RULES=y
353# 378#
354# Generic Driver Options 379# Generic Driver Options
355# 380#
381CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
356CONFIG_STANDALONE=y 382CONFIG_STANDALONE=y
357CONFIG_PREVENT_FIRMWARE_BUILD=y 383CONFIG_PREVENT_FIRMWARE_BUILD=y
358CONFIG_FW_LOADER=m 384CONFIG_FW_LOADER=m
@@ -374,10 +400,11 @@ CONFIG_BLK_DEV_NBD=m
374CONFIG_BLK_DEV_RAM=y 400CONFIG_BLK_DEV_RAM=y
375CONFIG_BLK_DEV_RAM_COUNT=16 401CONFIG_BLK_DEV_RAM_COUNT=16
376CONFIG_BLK_DEV_RAM_SIZE=4096 402CONFIG_BLK_DEV_RAM_SIZE=4096
377CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 403CONFIG_BLK_DEV_XIP=y
378# CONFIG_CDROM_PKTCDVD is not set 404# CONFIG_CDROM_PKTCDVD is not set
379# CONFIG_ATA_OVER_ETH is not set 405# CONFIG_ATA_OVER_ETH is not set
380# CONFIG_MISC_DEVICES is not set 406# CONFIG_MISC_DEVICES is not set
407CONFIG_HAVE_IDE=y
381# CONFIG_IDE is not set 408# CONFIG_IDE is not set
382 409
383# 410#
@@ -416,10 +443,14 @@ CONFIG_SCSI_WAIT_SCAN=m
416# CONFIG_SCSI_FC_ATTRS is not set 443# CONFIG_SCSI_FC_ATTRS is not set
417# CONFIG_SCSI_ISCSI_ATTRS is not set 444# CONFIG_SCSI_ISCSI_ATTRS is not set
418# CONFIG_SCSI_SAS_LIBSAS is not set 445# CONFIG_SCSI_SAS_LIBSAS is not set
446# CONFIG_SCSI_SRP_ATTRS is not set
419# CONFIG_SCSI_LOWLEVEL is not set 447# CONFIG_SCSI_LOWLEVEL is not set
420CONFIG_ATA=y 448CONFIG_ATA=y
421# CONFIG_ATA_NONSTANDARD is not set 449# CONFIG_ATA_NONSTANDARD is not set
450CONFIG_SATA_PMP=y
422# CONFIG_SATA_AHCI is not set 451# CONFIG_SATA_AHCI is not set
452# CONFIG_SATA_SIL24 is not set
453CONFIG_ATA_SFF=y
423# CONFIG_SATA_SVW is not set 454# CONFIG_SATA_SVW is not set
424# CONFIG_ATA_PIIX is not set 455# CONFIG_ATA_PIIX is not set
425# CONFIG_SATA_MV is not set 456# CONFIG_SATA_MV is not set
@@ -429,7 +460,6 @@ CONFIG_ATA=y
429# CONFIG_SATA_PROMISE is not set 460# CONFIG_SATA_PROMISE is not set
430# CONFIG_SATA_SX4 is not set 461# CONFIG_SATA_SX4 is not set
431# CONFIG_SATA_SIL is not set 462# CONFIG_SATA_SIL is not set
432# CONFIG_SATA_SIL24 is not set
433# CONFIG_SATA_SIS is not set 463# CONFIG_SATA_SIS is not set
434# CONFIG_SATA_ULI is not set 464# CONFIG_SATA_ULI is not set
435# CONFIG_SATA_VIA is not set 465# CONFIG_SATA_VIA is not set
@@ -458,7 +488,9 @@ CONFIG_ATA=y
458# CONFIG_PATA_MPIIX is not set 488# CONFIG_PATA_MPIIX is not set
459# CONFIG_PATA_OLDPIIX is not set 489# CONFIG_PATA_OLDPIIX is not set
460# CONFIG_PATA_NETCELL is not set 490# CONFIG_PATA_NETCELL is not set
491# CONFIG_PATA_NINJA32 is not set
461# CONFIG_PATA_NS87410 is not set 492# CONFIG_PATA_NS87410 is not set
493# CONFIG_PATA_NS87415 is not set
462# CONFIG_PATA_OPTI is not set 494# CONFIG_PATA_OPTI is not set
463# CONFIG_PATA_OPTIDMA is not set 495# CONFIG_PATA_OPTIDMA is not set
464# CONFIG_PATA_PDC_OLD is not set 496# CONFIG_PATA_PDC_OLD is not set
@@ -472,15 +504,9 @@ CONFIG_PATA_SIL680=y
472# CONFIG_PATA_VIA is not set 504# CONFIG_PATA_VIA is not set
473# CONFIG_PATA_WINBOND is not set 505# CONFIG_PATA_WINBOND is not set
474# CONFIG_PATA_PLATFORM is not set 506# CONFIG_PATA_PLATFORM is not set
507# CONFIG_PATA_SCH is not set
475# CONFIG_MD is not set 508# CONFIG_MD is not set
476
477#
478# Fusion MPT device support
479#
480# CONFIG_FUSION is not set 509# CONFIG_FUSION is not set
481# CONFIG_FUSION_SPI is not set
482# CONFIG_FUSION_FC is not set
483# CONFIG_FUSION_SAS is not set
484 510
485# 511#
486# IEEE 1394 (FireWire) support 512# IEEE 1394 (FireWire) support
@@ -520,6 +546,7 @@ CONFIG_NETDEVICES=y
520# CONFIG_MACVLAN is not set 546# CONFIG_MACVLAN is not set
521# CONFIG_EQUALIZER is not set 547# CONFIG_EQUALIZER is not set
522# CONFIG_TUN is not set 548# CONFIG_TUN is not set
549# CONFIG_VETH is not set
523# CONFIG_ARCNET is not set 550# CONFIG_ARCNET is not set
524# CONFIG_PHYLIB is not set 551# CONFIG_PHYLIB is not set
525CONFIG_NET_ETHERNET=y 552CONFIG_NET_ETHERNET=y
@@ -532,6 +559,10 @@ CONFIG_MII=y
532# CONFIG_DM9000 is not set 559# CONFIG_DM9000 is not set
533# CONFIG_NET_TULIP is not set 560# CONFIG_NET_TULIP is not set
534# CONFIG_HP100 is not set 561# CONFIG_HP100 is not set
562# CONFIG_IBM_NEW_EMAC_ZMII is not set
563# CONFIG_IBM_NEW_EMAC_RGMII is not set
564# CONFIG_IBM_NEW_EMAC_TAH is not set
565# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
535CONFIG_NET_PCI=y 566CONFIG_NET_PCI=y
536# CONFIG_PCNET32 is not set 567# CONFIG_PCNET32 is not set
537# CONFIG_AMD8111_ETH is not set 568# CONFIG_AMD8111_ETH is not set
@@ -539,7 +570,6 @@ CONFIG_NET_PCI=y
539# CONFIG_B44 is not set 570# CONFIG_B44 is not set
540# CONFIG_FORCEDETH is not set 571# CONFIG_FORCEDETH is not set
541# CONFIG_TC35815 is not set 572# CONFIG_TC35815 is not set
542# CONFIG_DGRS is not set
543# CONFIG_EEPRO100 is not set 573# CONFIG_EEPRO100 is not set
544# CONFIG_E100 is not set 574# CONFIG_E100 is not set
545# CONFIG_FEALNX is not set 575# CONFIG_FEALNX is not set
@@ -551,6 +581,7 @@ CONFIG_8139TOO_PIO=y
551# CONFIG_8139TOO_TUNE_TWISTER is not set 581# CONFIG_8139TOO_TUNE_TWISTER is not set
552# CONFIG_8139TOO_8129 is not set 582# CONFIG_8139TOO_8129 is not set
553# CONFIG_8139_OLD_RX_RESET is not set 583# CONFIG_8139_OLD_RX_RESET is not set
584# CONFIG_R6040 is not set
554# CONFIG_SIS900 is not set 585# CONFIG_SIS900 is not set
555# CONFIG_EPIC100 is not set 586# CONFIG_EPIC100 is not set
556# CONFIG_SUNDANCE is not set 587# CONFIG_SUNDANCE is not set
@@ -563,6 +594,10 @@ CONFIG_NETDEV_1000=y
563# CONFIG_ACENIC is not set 594# CONFIG_ACENIC is not set
564# CONFIG_DL2K is not set 595# CONFIG_DL2K is not set
565# CONFIG_E1000 is not set 596# CONFIG_E1000 is not set
597# CONFIG_E1000E is not set
598# CONFIG_E1000E_ENABLED is not set
599# CONFIG_IP1000 is not set
600# CONFIG_IGB is not set
566# CONFIG_NS83820 is not set 601# CONFIG_NS83820 is not set
567# CONFIG_HAMACHI is not set 602# CONFIG_HAMACHI is not set
568# CONFIG_YELLOWFIN is not set 603# CONFIG_YELLOWFIN is not set
@@ -584,6 +619,7 @@ CONFIG_VIA_VELOCITY=y
584# 619#
585# CONFIG_WLAN_PRE80211 is not set 620# CONFIG_WLAN_PRE80211 is not set
586# CONFIG_WLAN_80211 is not set 621# CONFIG_WLAN_80211 is not set
622# CONFIG_IWLWIFI_LEDS is not set
587 623
588# 624#
589# USB Network Adapters 625# USB Network Adapters
@@ -592,7 +628,6 @@ CONFIG_VIA_VELOCITY=y
592# CONFIG_USB_KAWETH is not set 628# CONFIG_USB_KAWETH is not set
593# CONFIG_USB_PEGASUS is not set 629# CONFIG_USB_PEGASUS is not set
594# CONFIG_USB_RTL8150 is not set 630# CONFIG_USB_RTL8150 is not set
595# CONFIG_USB_USBNET_MII is not set
596# CONFIG_USB_USBNET is not set 631# CONFIG_USB_USBNET is not set
597# CONFIG_WAN is not set 632# CONFIG_WAN is not set
598# CONFIG_FDDI is not set 633# CONFIG_FDDI is not set
@@ -600,7 +635,6 @@ CONFIG_VIA_VELOCITY=y
600# CONFIG_PPP is not set 635# CONFIG_PPP is not set
601# CONFIG_SLIP is not set 636# CONFIG_SLIP is not set
602# CONFIG_NET_FC is not set 637# CONFIG_NET_FC is not set
603# CONFIG_SHAPER is not set
604# CONFIG_NETCONSOLE is not set 638# CONFIG_NETCONSOLE is not set
605# CONFIG_NETPOLL is not set 639# CONFIG_NETPOLL is not set
606# CONFIG_NET_POLL_CONTROLLER is not set 640# CONFIG_NET_POLL_CONTROLLER is not set
@@ -622,7 +656,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
622CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 656CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
623CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 657CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
624# CONFIG_INPUT_JOYDEV is not set 658# CONFIG_INPUT_JOYDEV is not set
625# CONFIG_INPUT_TSDEV is not set
626# CONFIG_INPUT_EVDEV is not set 659# CONFIG_INPUT_EVDEV is not set
627# CONFIG_INPUT_EVBUG is not set 660# CONFIG_INPUT_EVBUG is not set
628 661
@@ -649,7 +682,9 @@ CONFIG_VT=y
649CONFIG_VT_CONSOLE=y 682CONFIG_VT_CONSOLE=y
650CONFIG_HW_CONSOLE=y 683CONFIG_HW_CONSOLE=y
651CONFIG_VT_HW_CONSOLE_BINDING=y 684CONFIG_VT_HW_CONSOLE_BINDING=y
685# CONFIG_DEVKMEM is not set
652# CONFIG_SERIAL_NONSTANDARD is not set 686# CONFIG_SERIAL_NONSTANDARD is not set
687# CONFIG_NOZOMI is not set
653 688
654# 689#
655# Serial drivers 690# Serial drivers
@@ -668,49 +703,53 @@ CONFIG_UNIX98_PTYS=y
668CONFIG_LEGACY_PTYS=y 703CONFIG_LEGACY_PTYS=y
669CONFIG_LEGACY_PTY_COUNT=256 704CONFIG_LEGACY_PTY_COUNT=256
670# CONFIG_IPMI_HANDLER is not set 705# CONFIG_IPMI_HANDLER is not set
671# CONFIG_WATCHDOG is not set
672# CONFIG_HW_RANDOM is not set 706# CONFIG_HW_RANDOM is not set
673# CONFIG_RTC is not set
674# CONFIG_R3964 is not set 707# CONFIG_R3964 is not set
675# CONFIG_APPLICOM is not set 708# CONFIG_APPLICOM is not set
676# CONFIG_GPIO_TB0219 is not set 709# CONFIG_GPIO_TB0219 is not set
677# CONFIG_DRM is not set
678CONFIG_GPIO_VR41XX=y 710CONFIG_GPIO_VR41XX=y
679# CONFIG_RAW_DRIVER is not set 711# CONFIG_RAW_DRIVER is not set
680# CONFIG_TCG_TPM is not set 712# CONFIG_TCG_TPM is not set
681CONFIG_DEVPORT=y 713CONFIG_DEVPORT=y
682# CONFIG_I2C is not set 714# CONFIG_I2C is not set
683
684#
685# SPI support
686#
687# CONFIG_SPI is not set 715# CONFIG_SPI is not set
688# CONFIG_SPI_MASTER is not set
689# CONFIG_W1 is not set 716# CONFIG_W1 is not set
690# CONFIG_POWER_SUPPLY is not set 717# CONFIG_POWER_SUPPLY is not set
691# CONFIG_HWMON is not set 718# CONFIG_HWMON is not set
719# CONFIG_THERMAL is not set
720# CONFIG_WATCHDOG is not set
721
722#
723# Sonics Silicon Backplane
724#
725CONFIG_SSB_POSSIBLE=y
726# CONFIG_SSB is not set
692 727
693# 728#
694# Multifunction device drivers 729# Multifunction device drivers
695# 730#
696CONFIG_MFD_SM501=y 731CONFIG_MFD_SM501=y
732# CONFIG_HTC_PASIC3 is not set
697 733
698# 734#
699# Multimedia devices 735# Multimedia devices
700# 736#
737
738#
739# Multimedia core support
740#
701# CONFIG_VIDEO_DEV is not set 741# CONFIG_VIDEO_DEV is not set
702# CONFIG_DVB_CORE is not set 742# CONFIG_DVB_CORE is not set
703# CONFIG_DAB is not set
704 743
705# 744#
706# Graphics support 745# Multimedia drivers
707# 746#
708# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 747# CONFIG_DAB is not set
709 748
710# 749#
711# Display device support 750# Graphics support
712# 751#
713# CONFIG_DISPLAY_SUPPORT is not set 752# CONFIG_DRM is not set
714# CONFIG_VGASTATE is not set 753# CONFIG_VGASTATE is not set
715CONFIG_VIDEO_OUTPUT_CONTROL=m 754CONFIG_VIDEO_OUTPUT_CONTROL=m
716CONFIG_FB=y 755CONFIG_FB=y
@@ -719,9 +758,11 @@ CONFIG_FB=y
719CONFIG_FB_CFB_FILLRECT=y 758CONFIG_FB_CFB_FILLRECT=y
720CONFIG_FB_CFB_COPYAREA=y 759CONFIG_FB_CFB_COPYAREA=y
721CONFIG_FB_CFB_IMAGEBLIT=y 760CONFIG_FB_CFB_IMAGEBLIT=y
761# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
722# CONFIG_FB_SYS_FILLRECT is not set 762# CONFIG_FB_SYS_FILLRECT is not set
723# CONFIG_FB_SYS_COPYAREA is not set 763# CONFIG_FB_SYS_COPYAREA is not set
724# CONFIG_FB_SYS_IMAGEBLIT is not set 764# CONFIG_FB_SYS_IMAGEBLIT is not set
765# CONFIG_FB_FOREIGN_ENDIAN is not set
725# CONFIG_FB_SYS_FOPS is not set 766# CONFIG_FB_SYS_FOPS is not set
726CONFIG_FB_DEFERRED_IO=y 767CONFIG_FB_DEFERRED_IO=y
727# CONFIG_FB_SVGALIB is not set 768# CONFIG_FB_SVGALIB is not set
@@ -757,7 +798,14 @@ CONFIG_FB_DEFERRED_IO=y
757# CONFIG_FB_ARK is not set 798# CONFIG_FB_ARK is not set
758# CONFIG_FB_PM3 is not set 799# CONFIG_FB_PM3 is not set
759CONFIG_FB_SM501=y 800CONFIG_FB_SM501=y
801# CONFIG_FB_COBALT is not set
760# CONFIG_FB_VIRTUAL is not set 802# CONFIG_FB_VIRTUAL is not set
803# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
804
805#
806# Display device support
807#
808# CONFIG_DISPLAY_SUPPORT is not set
761 809
762# 810#
763# Console display driver support 811# Console display driver support
@@ -787,6 +835,7 @@ CONFIG_FONT_8x16=y
787CONFIG_HID_SUPPORT=y 835CONFIG_HID_SUPPORT=y
788CONFIG_HID=y 836CONFIG_HID=y
789# CONFIG_HID_DEBUG is not set 837# CONFIG_HID_DEBUG is not set
838# CONFIG_HIDRAW is not set
790 839
791# 840#
792# USB Input Devices 841# USB Input Devices
@@ -807,6 +856,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
807CONFIG_USB_ARCH_HAS_EHCI=y 856CONFIG_USB_ARCH_HAS_EHCI=y
808CONFIG_USB=m 857CONFIG_USB=m
809# CONFIG_USB_DEBUG is not set 858# CONFIG_USB_DEBUG is not set
859# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
810 860
811# 861#
812# Miscellaneous USB options 862# Miscellaneous USB options
@@ -815,15 +865,18 @@ CONFIG_USB=m
815CONFIG_USB_DEVICE_CLASS=y 865CONFIG_USB_DEVICE_CLASS=y
816# CONFIG_USB_DYNAMIC_MINORS is not set 866# CONFIG_USB_DYNAMIC_MINORS is not set
817# CONFIG_USB_OTG is not set 867# CONFIG_USB_OTG is not set
868# CONFIG_USB_OTG_WHITELIST is not set
869# CONFIG_USB_OTG_BLACKLIST_HUB is not set
818 870
819# 871#
820# USB Host Controller Drivers 872# USB Host Controller Drivers
821# 873#
874# CONFIG_USB_C67X00_HCD is not set
822CONFIG_USB_EHCI_HCD=m 875CONFIG_USB_EHCI_HCD=m
823# CONFIG_USB_EHCI_SPLIT_ISO is not set
824# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 876# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
825# CONFIG_USB_EHCI_TT_NEWSCHED is not set 877# CONFIG_USB_EHCI_TT_NEWSCHED is not set
826# CONFIG_USB_ISP116X_HCD is not set 878# CONFIG_USB_ISP116X_HCD is not set
879# CONFIG_USB_ISP1760_HCD is not set
827CONFIG_USB_OHCI_HCD=m 880CONFIG_USB_OHCI_HCD=m
828# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 881# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
829# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 882# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -849,13 +902,16 @@ CONFIG_USB_STORAGE=m
849# CONFIG_USB_STORAGE_DEBUG is not set 902# CONFIG_USB_STORAGE_DEBUG is not set
850# CONFIG_USB_STORAGE_DATAFAB is not set 903# CONFIG_USB_STORAGE_DATAFAB is not set
851# CONFIG_USB_STORAGE_FREECOM is not set 904# CONFIG_USB_STORAGE_FREECOM is not set
905# CONFIG_USB_STORAGE_ISD200 is not set
852# CONFIG_USB_STORAGE_DPCM is not set 906# CONFIG_USB_STORAGE_DPCM is not set
853# CONFIG_USB_STORAGE_USBAT is not set 907# CONFIG_USB_STORAGE_USBAT is not set
854# CONFIG_USB_STORAGE_SDDR09 is not set 908# CONFIG_USB_STORAGE_SDDR09 is not set
855# CONFIG_USB_STORAGE_SDDR55 is not set 909# CONFIG_USB_STORAGE_SDDR55 is not set
856# CONFIG_USB_STORAGE_JUMPSHOT is not set 910# CONFIG_USB_STORAGE_JUMPSHOT is not set
857# CONFIG_USB_STORAGE_ALAUDA is not set 911# CONFIG_USB_STORAGE_ALAUDA is not set
912# CONFIG_USB_STORAGE_ONETOUCH is not set
858# CONFIG_USB_STORAGE_KARMA is not set 913# CONFIG_USB_STORAGE_KARMA is not set
914# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
859# CONFIG_USB_LIBUSUAL is not set 915# CONFIG_USB_LIBUSUAL is not set
860 916
861# 917#
@@ -868,10 +924,6 @@ CONFIG_USB_MON=y
868# 924#
869# USB port drivers 925# USB port drivers
870# 926#
871
872#
873# USB Serial Converter support
874#
875# CONFIG_USB_SERIAL is not set 927# CONFIG_USB_SERIAL is not set
876 928
877# 929#
@@ -896,36 +948,14 @@ CONFIG_USB_MON=y
896# CONFIG_USB_LD is not set 948# CONFIG_USB_LD is not set
897# CONFIG_USB_TRANCEVIBRATOR is not set 949# CONFIG_USB_TRANCEVIBRATOR is not set
898# CONFIG_USB_IOWARRIOR is not set 950# CONFIG_USB_IOWARRIOR is not set
899
900#
901# USB DSL modem support
902#
903
904#
905# USB Gadget Support
906#
907# CONFIG_USB_GADGET is not set 951# CONFIG_USB_GADGET is not set
908# CONFIG_MMC is not set 952# CONFIG_MMC is not set
953# CONFIG_MEMSTICK is not set
909# CONFIG_NEW_LEDS is not set 954# CONFIG_NEW_LEDS is not set
955# CONFIG_ACCESSIBILITY is not set
910# CONFIG_INFINIBAND is not set 956# CONFIG_INFINIBAND is not set
957CONFIG_RTC_LIB=y
911# CONFIG_RTC_CLASS is not set 958# CONFIG_RTC_CLASS is not set
912
913#
914# DMA Engine support
915#
916# CONFIG_DMA_ENGINE is not set
917
918#
919# DMA Clients
920#
921
922#
923# DMA Devices
924#
925
926#
927# Userspace I/O
928#
929# CONFIG_UIO is not set 959# CONFIG_UIO is not set
930 960
931# 961#
@@ -940,25 +970,21 @@ CONFIG_EXT3_FS_XATTR=y
940# CONFIG_EXT3_FS_SECURITY is not set 970# CONFIG_EXT3_FS_SECURITY is not set
941# CONFIG_EXT4DEV_FS is not set 971# CONFIG_EXT4DEV_FS is not set
942CONFIG_JBD=y 972CONFIG_JBD=y
943# CONFIG_JBD_DEBUG is not set
944CONFIG_FS_MBCACHE=y 973CONFIG_FS_MBCACHE=y
945# CONFIG_REISERFS_FS is not set 974# CONFIG_REISERFS_FS is not set
946# CONFIG_JFS_FS is not set 975# CONFIG_JFS_FS is not set
947CONFIG_FS_POSIX_ACL=y 976CONFIG_FS_POSIX_ACL=y
948CONFIG_XFS_FS=y 977CONFIG_XFS_FS=y
949CONFIG_XFS_QUOTA=y 978CONFIG_XFS_QUOTA=y
950# CONFIG_XFS_SECURITY is not set
951CONFIG_XFS_POSIX_ACL=y 979CONFIG_XFS_POSIX_ACL=y
952# CONFIG_XFS_RT is not set 980# CONFIG_XFS_RT is not set
953# CONFIG_GFS2_FS is not set 981# CONFIG_XFS_DEBUG is not set
954# CONFIG_OCFS2_FS is not set 982# CONFIG_OCFS2_FS is not set
955# CONFIG_MINIX_FS is not set 983CONFIG_DNOTIFY=y
956CONFIG_ROMFS_FS=m
957CONFIG_INOTIFY=y 984CONFIG_INOTIFY=y
958CONFIG_INOTIFY_USER=y 985CONFIG_INOTIFY_USER=y
959# CONFIG_QUOTA is not set 986# CONFIG_QUOTA is not set
960CONFIG_QUOTACTL=y 987CONFIG_QUOTACTL=y
961CONFIG_DNOTIFY=y
962# CONFIG_AUTOFS_FS is not set 988# CONFIG_AUTOFS_FS is not set
963CONFIG_AUTOFS4_FS=y 989CONFIG_AUTOFS4_FS=y
964# CONFIG_FUSE_FS is not set 990# CONFIG_FUSE_FS is not set
@@ -987,7 +1013,6 @@ CONFIG_SYSFS=y
987CONFIG_TMPFS=y 1013CONFIG_TMPFS=y
988CONFIG_TMPFS_POSIX_ACL=y 1014CONFIG_TMPFS_POSIX_ACL=y
989# CONFIG_HUGETLB_PAGE is not set 1015# CONFIG_HUGETLB_PAGE is not set
990CONFIG_RAMFS=y
991# CONFIG_CONFIGFS_FS is not set 1016# CONFIG_CONFIGFS_FS is not set
992 1017
993# 1018#
@@ -1002,24 +1027,21 @@ CONFIG_RAMFS=y
1002# CONFIG_EFS_FS is not set 1027# CONFIG_EFS_FS is not set
1003CONFIG_CRAMFS=m 1028CONFIG_CRAMFS=m
1004# CONFIG_VXFS_FS is not set 1029# CONFIG_VXFS_FS is not set
1030# CONFIG_MINIX_FS is not set
1005# CONFIG_HPFS_FS is not set 1031# CONFIG_HPFS_FS is not set
1006# CONFIG_QNX4FS_FS is not set 1032# CONFIG_QNX4FS_FS is not set
1033CONFIG_ROMFS_FS=m
1007# CONFIG_SYSV_FS is not set 1034# CONFIG_SYSV_FS is not set
1008# CONFIG_UFS_FS is not set 1035# CONFIG_UFS_FS is not set
1009 1036CONFIG_NETWORK_FILESYSTEMS=y
1010#
1011# Network File Systems
1012#
1013CONFIG_NFS_FS=y 1037CONFIG_NFS_FS=y
1014CONFIG_NFS_V3=y 1038CONFIG_NFS_V3=y
1015# CONFIG_NFS_V3_ACL is not set 1039# CONFIG_NFS_V3_ACL is not set
1016# CONFIG_NFS_V4 is not set 1040# CONFIG_NFS_V4 is not set
1017# CONFIG_NFS_DIRECTIO is not set
1018CONFIG_NFSD=m 1041CONFIG_NFSD=m
1019CONFIG_NFSD_V3=y 1042CONFIG_NFSD_V3=y
1020# CONFIG_NFSD_V3_ACL is not set 1043# CONFIG_NFSD_V3_ACL is not set
1021# CONFIG_NFSD_V4 is not set 1044# CONFIG_NFSD_V4 is not set
1022CONFIG_NFSD_TCP=y
1023CONFIG_ROOT_NFS=y 1045CONFIG_ROOT_NFS=y
1024CONFIG_LOCKD=y 1046CONFIG_LOCKD=y
1025CONFIG_LOCKD_V4=y 1047CONFIG_LOCKD_V4=y
@@ -1040,47 +1062,38 @@ CONFIG_SUNRPC=y
1040# 1062#
1041# CONFIG_PARTITION_ADVANCED is not set 1063# CONFIG_PARTITION_ADVANCED is not set
1042CONFIG_MSDOS_PARTITION=y 1064CONFIG_MSDOS_PARTITION=y
1043
1044#
1045# Native Language Support
1046#
1047# CONFIG_NLS is not set 1065# CONFIG_NLS is not set
1048
1049#
1050# Distributed Lock Manager
1051#
1052# CONFIG_DLM is not set 1066# CONFIG_DLM is not set
1053 1067
1054# 1068#
1055# Profiling support
1056#
1057# CONFIG_PROFILING is not set
1058
1059#
1060# Kernel hacking 1069# Kernel hacking
1061# 1070#
1062CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1071CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1063# CONFIG_PRINTK_TIME is not set 1072# CONFIG_PRINTK_TIME is not set
1073CONFIG_ENABLE_WARN_DEPRECATED=y
1064CONFIG_ENABLE_MUST_CHECK=y 1074CONFIG_ENABLE_MUST_CHECK=y
1075CONFIG_FRAME_WARN=1024
1065# CONFIG_MAGIC_SYSRQ is not set 1076# CONFIG_MAGIC_SYSRQ is not set
1066# CONFIG_UNUSED_SYMBOLS is not set 1077# CONFIG_UNUSED_SYMBOLS is not set
1067# CONFIG_DEBUG_FS is not set 1078# CONFIG_DEBUG_FS is not set
1068# CONFIG_HEADERS_CHECK is not set 1079# CONFIG_HEADERS_CHECK is not set
1069# CONFIG_DEBUG_KERNEL is not set 1080# CONFIG_DEBUG_KERNEL is not set
1070CONFIG_CROSSCOMPILE=y 1081# CONFIG_SAMPLES is not set
1071CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs" 1082CONFIG_CMDLINE="cca=3 mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
1072 1083
1073# 1084#
1074# Security options 1085# Security options
1075# 1086#
1076# CONFIG_KEYS is not set 1087# CONFIG_KEYS is not set
1077# CONFIG_SECURITY is not set 1088# CONFIG_SECURITY is not set
1089# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1078# CONFIG_CRYPTO is not set 1090# CONFIG_CRYPTO is not set
1079 1091
1080# 1092#
1081# Library routines 1093# Library routines
1082# 1094#
1083CONFIG_BITREVERSE=y 1095CONFIG_BITREVERSE=y
1096# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1084CONFIG_CRC_CCITT=y 1097CONFIG_CRC_CCITT=y
1085# CONFIG_CRC16 is not set 1098# CONFIG_CRC16 is not set
1086# CONFIG_CRC_ITU_T is not set 1099# CONFIG_CRC_ITU_T is not set
diff --git a/arch/mips/fw/arc/identify.c b/arch/mips/fw/arc/identify.c
index 28dfd2e2989a..23066985a734 100644
--- a/arch/mips/fw/arc/identify.c
+++ b/arch/mips/fw/arc/identify.c
@@ -67,6 +67,11 @@ static struct smatch mach_table[] = {
67 .liname = "SNI RM200_PCI", 67 .liname = "SNI RM200_PCI",
68 .type = MACH_SNI_RM200_PCI, 68 .type = MACH_SNI_RM200_PCI,
69 .flags = PROM_FLAG_DONT_FREE_TEMP, 69 .flags = PROM_FLAG_DONT_FREE_TEMP,
70 }, {
71 .arcname = "RM200PCI-R5K",
72 .liname = "SNI RM200_PCI-R5K",
73 .type = MACH_SNI_RM200_PCI,
74 .flags = PROM_FLAG_DONT_FREE_TEMP,
70 } 75 }
71}; 76};
72 77
diff --git a/arch/mips/kernel/cevt-txx9.c b/arch/mips/kernel/cevt-txx9.c
index 795cb8fb0d74..b5fc4eb412d2 100644
--- a/arch/mips/kernel/cevt-txx9.c
+++ b/arch/mips/kernel/cevt-txx9.c
@@ -161,6 +161,9 @@ void __init txx9_tmr_init(unsigned long baseaddr)
161 struct txx9_tmr_reg __iomem *tmrptr; 161 struct txx9_tmr_reg __iomem *tmrptr;
162 162
163 tmrptr = ioremap(baseaddr, sizeof(struct txx9_tmr_reg)); 163 tmrptr = ioremap(baseaddr, sizeof(struct txx9_tmr_reg));
164 /* Start once to make CounterResetEnable effective */
165 __raw_writel(TXx9_TMTCR_CRE | TXx9_TMTCR_TCE, &tmrptr->tcr);
166 /* Stop and reset the counter */
164 __raw_writel(TXx9_TMTCR_CRE, &tmrptr->tcr); 167 __raw_writel(TXx9_TMTCR_CRE, &tmrptr->tcr);
165 __raw_writel(0, &tmrptr->tisr); 168 __raw_writel(0, &tmrptr->tisr);
166 __raw_writel(0xffffffff, &tmrptr->cpra); 169 __raw_writel(0xffffffff, &tmrptr->cpra);
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index 63370cdd3c90..cdf87a9dd4ba 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -216,6 +216,7 @@ int smp_call_function(void (*func) (void *info), void *info, int retry,
216{ 216{
217 return smp_call_function_mask(cpu_online_map, func, info, retry, wait); 217 return smp_call_function_mask(cpu_online_map, func, info, retry, wait);
218} 218}
219EXPORT_SYMBOL(smp_call_function);
219 220
220void smp_call_function_interrupt(void) 221void smp_call_function_interrupt(void)
221{ 222{
@@ -271,6 +272,7 @@ int smp_call_function_single(int cpu, void (*func) (void *info), void *info,
271 put_cpu(); 272 put_cpu();
272 return 0; 273 return 0;
273} 274}
275EXPORT_SYMBOL(smp_call_function_single);
274 276
275static void stop_this_cpu(void *dummy) 277static void stop_this_cpu(void *dummy)
276{ 278{
diff --git a/arch/mips/lasat/interrupt.c b/arch/mips/lasat/interrupt.c
index cfeab669782f..a56c15026965 100644
--- a/arch/mips/lasat/interrupt.c
+++ b/arch/mips/lasat/interrupt.c
@@ -34,11 +34,13 @@ static volatile int lasat_int_mask_shift;
34 34
35void disable_lasat_irq(unsigned int irq_nr) 35void disable_lasat_irq(unsigned int irq_nr)
36{ 36{
37 irq_nr -= LASAT_IRQ_BASE;
37 *lasat_int_mask &= ~(1 << irq_nr) << lasat_int_mask_shift; 38 *lasat_int_mask &= ~(1 << irq_nr) << lasat_int_mask_shift;
38} 39}
39 40
40void enable_lasat_irq(unsigned int irq_nr) 41void enable_lasat_irq(unsigned int irq_nr)
41{ 42{
43 irq_nr -= LASAT_IRQ_BASE;
42 *lasat_int_mask |= (1 << irq_nr) << lasat_int_mask_shift; 44 *lasat_int_mask |= (1 << irq_nr) << lasat_int_mask_shift;
43} 45}
44 46
diff --git a/arch/mips/lasat/lasat_board.c b/arch/mips/lasat/lasat_board.c
index ec2f658c3709..31e328b3814d 100644
--- a/arch/mips/lasat/lasat_board.c
+++ b/arch/mips/lasat/lasat_board.c
@@ -23,18 +23,19 @@
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/string.h> 24#include <linux/string.h>
25#include <linux/ctype.h> 25#include <linux/ctype.h>
26#include <linux/mutex.h>
26#include <asm/bootinfo.h> 27#include <asm/bootinfo.h>
27#include <asm/addrspace.h> 28#include <asm/addrspace.h>
28#include "at93c.h" 29#include "at93c.h"
29/* New model description table */ 30/* New model description table */
30#include "lasat_models.h" 31#include "lasat_models.h"
31 32
33static DEFINE_MUTEX(lasat_eeprom_mutex);
34
32#define EEPROM_CRC(data, len) (~crc32(~0, data, len)) 35#define EEPROM_CRC(data, len) (~crc32(~0, data, len))
33 36
34struct lasat_info lasat_board_info; 37struct lasat_info lasat_board_info;
35 38
36void update_bcastaddr(void);
37
38int EEPROMRead(unsigned int pos, unsigned char *data, int len) 39int EEPROMRead(unsigned int pos, unsigned char *data, int len)
39{ 40{
40 int i; 41 int i;
@@ -258,10 +259,6 @@ int lasat_init_board_info(void)
258 sprintf(lasat_board_info.li_typestr, "%d", 10 * c); 259 sprintf(lasat_board_info.li_typestr, "%d", 10 * c);
259 } 260 }
260 261
261#if defined(CONFIG_INET) && defined(CONFIG_SYSCTL)
262 update_bcastaddr();
263#endif
264
265 return 0; 262 return 0;
266} 263}
267 264
@@ -269,6 +266,8 @@ void lasat_write_eeprom_info(void)
269{ 266{
270 unsigned long crc; 267 unsigned long crc;
271 268
269 mutex_lock(&lasat_eeprom_mutex);
270
272 /* Generate the CRC */ 271 /* Generate the CRC */
273 crc = EEPROM_CRC((unsigned char *)(&lasat_board_info.li_eeprom_info), 272 crc = EEPROM_CRC((unsigned char *)(&lasat_board_info.li_eeprom_info),
274 sizeof(struct lasat_eeprom_struct) - 4); 273 sizeof(struct lasat_eeprom_struct) - 4);
@@ -277,4 +276,6 @@ void lasat_write_eeprom_info(void)
277 /* Write the EEPROM info */ 276 /* Write the EEPROM info */
278 EEPROMWrite(0, (unsigned char *)&lasat_board_info.li_eeprom_info, 277 EEPROMWrite(0, (unsigned char *)&lasat_board_info.li_eeprom_info,
279 sizeof(struct lasat_eeprom_struct)); 278 sizeof(struct lasat_eeprom_struct));
279
280 mutex_unlock(&lasat_eeprom_mutex);
280} 281}
diff --git a/arch/mips/lasat/sysctl.c b/arch/mips/lasat/sysctl.c
index 389336c4ecc5..866881ec0cf8 100644
--- a/arch/mips/lasat/sysctl.c
+++ b/arch/mips/lasat/sysctl.c
@@ -29,15 +29,13 @@
29#include <linux/string.h> 29#include <linux/string.h>
30#include <linux/net.h> 30#include <linux/net.h>
31#include <linux/inet.h> 31#include <linux/inet.h>
32#include <linux/mutex.h>
33#include <linux/uaccess.h> 32#include <linux/uaccess.h>
34 33
35#include <asm/time.h> 34#include <asm/time.h>
36 35
37#include "sysctl.h" 36#ifdef CONFIG_DS1603
38#include "ds1603.h" 37#include "ds1603.h"
39 38#endif
40static DEFINE_MUTEX(lasat_info_mutex);
41 39
42/* Strategy function to write EEPROM after changing string entry */ 40/* Strategy function to write EEPROM after changing string entry */
43int sysctl_lasatstring(ctl_table *table, int *name, int nlen, 41int sysctl_lasatstring(ctl_table *table, int *name, int nlen,
@@ -46,18 +44,15 @@ int sysctl_lasatstring(ctl_table *table, int *name, int nlen,
46{ 44{
47 int r; 45 int r;
48 46
49 mutex_lock(&lasat_info_mutex);
50 r = sysctl_string(table, name, 47 r = sysctl_string(table, name,
51 nlen, oldval, oldlenp, newval, newlen); 48 nlen, oldval, oldlenp, newval, newlen);
52 if (r < 0) { 49 if (r < 0)
53 mutex_unlock(&lasat_info_mutex);
54 return r; 50 return r;
55 } 51
56 if (newval && newlen) 52 if (newval && newlen)
57 lasat_write_eeprom_info(); 53 lasat_write_eeprom_info();
58 mutex_unlock(&lasat_info_mutex);
59 54
60 return 1; 55 return 0;
61} 56}
62 57
63 58
@@ -67,14 +62,11 @@ int proc_dolasatstring(ctl_table *table, int write, struct file *filp,
67{ 62{
68 int r; 63 int r;
69 64
70 mutex_lock(&lasat_info_mutex);
71 r = proc_dostring(table, write, filp, buffer, lenp, ppos); 65 r = proc_dostring(table, write, filp, buffer, lenp, ppos);
72 if ((!write) || r) { 66 if ((!write) || r)
73 mutex_unlock(&lasat_info_mutex);
74 return r; 67 return r;
75 } 68
76 lasat_write_eeprom_info(); 69 lasat_write_eeprom_info();
77 mutex_unlock(&lasat_info_mutex);
78 70
79 return 0; 71 return 0;
80} 72}
@@ -85,28 +77,24 @@ int proc_dolasatint(ctl_table *table, int write, struct file *filp,
85{ 77{
86 int r; 78 int r;
87 79
88 mutex_lock(&lasat_info_mutex);
89 r = proc_dointvec(table, write, filp, buffer, lenp, ppos); 80 r = proc_dointvec(table, write, filp, buffer, lenp, ppos);
90 if ((!write) || r) { 81 if ((!write) || r)
91 mutex_unlock(&lasat_info_mutex);
92 return r; 82 return r;
93 } 83
94 lasat_write_eeprom_info(); 84 lasat_write_eeprom_info();
95 mutex_unlock(&lasat_info_mutex);
96 85
97 return 0; 86 return 0;
98} 87}
99 88
89#ifdef CONFIG_DS1603
100static int rtctmp; 90static int rtctmp;
101 91
102#ifdef CONFIG_DS1603
103/* proc function to read/write RealTime Clock */ 92/* proc function to read/write RealTime Clock */
104int proc_dolasatrtc(ctl_table *table, int write, struct file *filp, 93int proc_dolasatrtc(ctl_table *table, int write, struct file *filp,
105 void *buffer, size_t *lenp, loff_t *ppos) 94 void *buffer, size_t *lenp, loff_t *ppos)
106{ 95{
107 int r; 96 int r;
108 97
109 mutex_lock(&lasat_info_mutex);
110 if (!write) { 98 if (!write) {
111 rtctmp = read_persistent_clock(); 99 rtctmp = read_persistent_clock();
112 /* check for time < 0 and set to 0 */ 100 /* check for time < 0 and set to 0 */
@@ -114,12 +102,11 @@ int proc_dolasatrtc(ctl_table *table, int write, struct file *filp,
114 rtctmp = 0; 102 rtctmp = 0;
115 } 103 }
116 r = proc_dointvec(table, write, filp, buffer, lenp, ppos); 104 r = proc_dointvec(table, write, filp, buffer, lenp, ppos);
117 if ((!write) || r) { 105 if (r)
118 mutex_unlock(&lasat_info_mutex);
119 return r; 106 return r;
120 } 107
121 rtc_mips_set_mmss(rtctmp); 108 if (write)
122 mutex_unlock(&lasat_info_mutex); 109 rtc_mips_set_mmss(rtctmp);
123 110
124 return 0; 111 return 0;
125} 112}
@@ -132,17 +119,14 @@ int sysctl_lasat_intvec(ctl_table *table, int *name, int nlen,
132{ 119{
133 int r; 120 int r;
134 121
135 mutex_lock(&lasat_info_mutex);
136 r = sysctl_intvec(table, name, nlen, oldval, oldlenp, newval, newlen); 122 r = sysctl_intvec(table, name, nlen, oldval, oldlenp, newval, newlen);
137 if (r < 0) { 123 if (r < 0)
138 mutex_unlock(&lasat_info_mutex);
139 return r; 124 return r;
140 } 125
141 if (newval && newlen) 126 if (newval && newlen)
142 lasat_write_eeprom_info(); 127 lasat_write_eeprom_info();
143 mutex_unlock(&lasat_info_mutex);
144 128
145 return 1; 129 return 0;
146} 130}
147 131
148#ifdef CONFIG_DS1603 132#ifdef CONFIG_DS1603
@@ -153,50 +137,27 @@ int sysctl_lasat_rtc(ctl_table *table, int *name, int nlen,
153{ 137{
154 int r; 138 int r;
155 139
156 mutex_lock(&lasat_info_mutex);
157 rtctmp = read_persistent_clock(); 140 rtctmp = read_persistent_clock();
158 if (rtctmp < 0) 141 if (rtctmp < 0)
159 rtctmp = 0; 142 rtctmp = 0;
160 r = sysctl_intvec(table, name, nlen, oldval, oldlenp, newval, newlen); 143 r = sysctl_intvec(table, name, nlen, oldval, oldlenp, newval, newlen);
161 if (r < 0) { 144 if (r < 0)
162 mutex_unlock(&lasat_info_mutex);
163 return r; 145 return r;
164 }
165 if (newval && newlen) 146 if (newval && newlen)
166 rtc_mips_set_mmss(rtctmp); 147 rtc_mips_set_mmss(rtctmp);
167 mutex_unlock(&lasat_info_mutex);
168 148
169 return 1; 149 return r;
170} 150}
171#endif 151#endif
172 152
173#ifdef CONFIG_INET 153#ifdef CONFIG_INET
174static char lasat_bcastaddr[16];
175
176void update_bcastaddr(void)
177{
178 unsigned int ip;
179
180 ip = (lasat_board_info.li_eeprom_info.ipaddr &
181 lasat_board_info.li_eeprom_info.netmask) |
182 ~lasat_board_info.li_eeprom_info.netmask;
183
184 sprintf(lasat_bcastaddr, "%d.%d.%d.%d",
185 (ip) & 0xff,
186 (ip >> 8) & 0xff,
187 (ip >> 16) & 0xff,
188 (ip >> 24) & 0xff);
189}
190
191static char proc_lasat_ipbuf[32];
192
193/* Parsing of IP address */
194int proc_lasat_ip(ctl_table *table, int write, struct file *filp, 154int proc_lasat_ip(ctl_table *table, int write, struct file *filp,
195 void *buffer, size_t *lenp, loff_t *ppos) 155 void *buffer, size_t *lenp, loff_t *ppos)
196{ 156{
197 unsigned int ip; 157 unsigned int ip;
198 char *p, c; 158 char *p, c;
199 int len; 159 int len;
160 char ipbuf[32];
200 161
201 if (!table->data || !table->maxlen || !*lenp || 162 if (!table->data || !table->maxlen || !*lenp ||
202 (*ppos && !write)) { 163 (*ppos && !write)) {
@@ -204,117 +165,88 @@ int proc_lasat_ip(ctl_table *table, int write, struct file *filp,
204 return 0; 165 return 0;
205 } 166 }
206 167
207 mutex_lock(&lasat_info_mutex);
208 if (write) { 168 if (write) {
209 len = 0; 169 len = 0;
210 p = buffer; 170 p = buffer;
211 while (len < *lenp) { 171 while (len < *lenp) {
212 if (get_user(c, p++)) { 172 if (get_user(c, p++))
213 mutex_unlock(&lasat_info_mutex);
214 return -EFAULT; 173 return -EFAULT;
215 }
216 if (c == 0 || c == '\n') 174 if (c == 0 || c == '\n')
217 break; 175 break;
218 len++; 176 len++;
219 } 177 }
220 if (len >= sizeof(proc_lasat_ipbuf)-1) 178 if (len >= sizeof(ipbuf)-1)
221 len = sizeof(proc_lasat_ipbuf) - 1; 179 len = sizeof(ipbuf) - 1;
222 if (copy_from_user(proc_lasat_ipbuf, buffer, len)) { 180 if (copy_from_user(ipbuf, buffer, len))
223 mutex_unlock(&lasat_info_mutex);
224 return -EFAULT; 181 return -EFAULT;
225 } 182 ipbuf[len] = 0;
226 proc_lasat_ipbuf[len] = 0;
227 *ppos += *lenp; 183 *ppos += *lenp;
228 /* Now see if we can convert it to a valid IP */ 184 /* Now see if we can convert it to a valid IP */
229 ip = in_aton(proc_lasat_ipbuf); 185 ip = in_aton(ipbuf);
230 *(unsigned int *)(table->data) = ip; 186 *(unsigned int *)(table->data) = ip;
231 lasat_write_eeprom_info(); 187 lasat_write_eeprom_info();
232 } else { 188 } else {
233 ip = *(unsigned int *)(table->data); 189 ip = *(unsigned int *)(table->data);
234 sprintf(proc_lasat_ipbuf, "%d.%d.%d.%d", 190 sprintf(ipbuf, "%d.%d.%d.%d",
235 (ip) & 0xff, 191 (ip) & 0xff,
236 (ip >> 8) & 0xff, 192 (ip >> 8) & 0xff,
237 (ip >> 16) & 0xff, 193 (ip >> 16) & 0xff,
238 (ip >> 24) & 0xff); 194 (ip >> 24) & 0xff);
239 len = strlen(proc_lasat_ipbuf); 195 len = strlen(ipbuf);
240 if (len > *lenp) 196 if (len > *lenp)
241 len = *lenp; 197 len = *lenp;
242 if (len) 198 if (len)
243 if (copy_to_user(buffer, proc_lasat_ipbuf, len)) { 199 if (copy_to_user(buffer, ipbuf, len))
244 mutex_unlock(&lasat_info_mutex);
245 return -EFAULT; 200 return -EFAULT;
246 }
247 if (len < *lenp) { 201 if (len < *lenp) {
248 if (put_user('\n', ((char *) buffer) + len)) { 202 if (put_user('\n', ((char *) buffer) + len))
249 mutex_unlock(&lasat_info_mutex);
250 return -EFAULT; 203 return -EFAULT;
251 }
252 len++; 204 len++;
253 } 205 }
254 *lenp = len; 206 *lenp = len;
255 *ppos += len; 207 *ppos += len;
256 } 208 }
257 update_bcastaddr();
258 mutex_unlock(&lasat_info_mutex);
259 209
260 return 0; 210 return 0;
261} 211}
262#endif /* defined(CONFIG_INET) */ 212#endif
263 213
264static int sysctl_lasat_eeprom_value(ctl_table *table, int *name, int nlen, 214static int sysctl_lasat_prid(ctl_table *table, int *name, int nlen,
265 void *oldval, size_t *oldlenp, 215 void *oldval, size_t *oldlenp,
266 void *newval, size_t newlen) 216 void *newval, size_t newlen)
267{ 217{
268 int r; 218 int r;
269 219
270 mutex_lock(&lasat_info_mutex);
271 r = sysctl_intvec(table, name, nlen, oldval, oldlenp, newval, newlen); 220 r = sysctl_intvec(table, name, nlen, oldval, oldlenp, newval, newlen);
272 if (r < 0) { 221 if (r < 0)
273 mutex_unlock(&lasat_info_mutex);
274 return r; 222 return r;
275 }
276
277 if (newval && newlen) { 223 if (newval && newlen) {
278 if (name && *name == LASAT_PRID) 224 lasat_board_info.li_eeprom_info.prid = *(int *)newval;
279 lasat_board_info.li_eeprom_info.prid = *(int *)newval;
280
281 lasat_write_eeprom_info(); 225 lasat_write_eeprom_info();
282 lasat_init_board_info(); 226 lasat_init_board_info();
283 } 227 }
284 mutex_unlock(&lasat_info_mutex);
285
286 return 0; 228 return 0;
287} 229}
288 230
289int proc_lasat_eeprom_value(ctl_table *table, int write, struct file *filp, 231int proc_lasat_prid(ctl_table *table, int write, struct file *filp,
290 void *buffer, size_t *lenp, loff_t *ppos) 232 void *buffer, size_t *lenp, loff_t *ppos)
291{ 233{
292 int r; 234 int r;
293 235
294 mutex_lock(&lasat_info_mutex);
295 r = proc_dointvec(table, write, filp, buffer, lenp, ppos); 236 r = proc_dointvec(table, write, filp, buffer, lenp, ppos);
296 if ((!write) || r) { 237 if (r < 0)
297 mutex_unlock(&lasat_info_mutex);
298 return r; 238 return r;
239 if (write) {
240 lasat_board_info.li_eeprom_info.prid =
241 lasat_board_info.li_prid;
242 lasat_write_eeprom_info();
243 lasat_init_board_info();
299 } 244 }
300 if (filp && filp->f_path.dentry) {
301 if (!strcmp(filp->f_path.dentry->d_name.name, "prid"))
302 lasat_board_info.li_eeprom_info.prid =
303 lasat_board_info.li_prid;
304 if (!strcmp(filp->f_path.dentry->d_name.name, "debugaccess"))
305 lasat_board_info.li_eeprom_info.debugaccess =
306 lasat_board_info.li_debugaccess;
307 }
308 lasat_write_eeprom_info();
309 mutex_unlock(&lasat_info_mutex);
310
311 return 0; 245 return 0;
312} 246}
313 247
314extern int lasat_boot_to_service; 248extern int lasat_boot_to_service;
315 249
316#ifdef CONFIG_SYSCTL
317
318static ctl_table lasat_table[] = { 250static ctl_table lasat_table[] = {
319 { 251 {
320 .ctl_name = CTL_UNNUMBERED, 252 .ctl_name = CTL_UNNUMBERED,
@@ -349,8 +281,8 @@ static ctl_table lasat_table[] = {
349 .data = &lasat_board_info.li_prid, 281 .data = &lasat_board_info.li_prid,
350 .maxlen = sizeof(int), 282 .maxlen = sizeof(int),
351 .mode = 0644, 283 .mode = 0644,
352 .proc_handler = &proc_lasat_eeprom_value, 284 .proc_handler = &proc_lasat_prid,
353 .strategy = &sysctl_lasat_eeprom_value 285 .strategy = &sysctl_lasat_prid
354 }, 286 },
355#ifdef CONFIG_INET 287#ifdef CONFIG_INET
356 { 288 {
@@ -363,7 +295,7 @@ static ctl_table lasat_table[] = {
363 .strategy = &sysctl_lasat_intvec 295 .strategy = &sysctl_lasat_intvec
364 }, 296 },
365 { 297 {
366 .ctl_name = LASAT_NETMASK, 298 .ctl_name = CTL_UNNUMBERED,
367 .procname = "netmask", 299 .procname = "netmask",
368 .data = &lasat_board_info.li_eeprom_info.netmask, 300 .data = &lasat_board_info.li_eeprom_info.netmask,
369 .maxlen = sizeof(int), 301 .maxlen = sizeof(int),
@@ -371,15 +303,6 @@ static ctl_table lasat_table[] = {
371 .proc_handler = &proc_lasat_ip, 303 .proc_handler = &proc_lasat_ip,
372 .strategy = &sysctl_lasat_intvec 304 .strategy = &sysctl_lasat_intvec
373 }, 305 },
374 {
375 .ctl_name = CTL_UNNUMBERED,
376 .procname = "bcastaddr",
377 .data = &lasat_bcastaddr,
378 .maxlen = sizeof(lasat_bcastaddr),
379 .mode = 0600,
380 .proc_handler = &proc_dostring,
381 .strategy = &sysctl_string
382 },
383#endif 306#endif
384 { 307 {
385 .ctl_name = CTL_UNNUMBERED, 308 .ctl_name = CTL_UNNUMBERED,
@@ -417,7 +340,7 @@ static ctl_table lasat_table[] = {
417 .data = &lasat_board_info.li_namestr, 340 .data = &lasat_board_info.li_namestr,
418 .maxlen = sizeof(lasat_board_info.li_namestr), 341 .maxlen = sizeof(lasat_board_info.li_namestr),
419 .mode = 0444, 342 .mode = 0444,
420 .proc_handler = &proc_dostring, 343 .proc_handler = &proc_dostring,
421 .strategy = &sysctl_string 344 .strategy = &sysctl_string
422 }, 345 },
423 { 346 {
@@ -448,9 +371,12 @@ static int __init lasat_register_sysctl(void)
448 371
449 lasat_table_header = 372 lasat_table_header =
450 register_sysctl_table(lasat_root_table); 373 register_sysctl_table(lasat_root_table);
374 if (!lasat_table_header) {
375 printk(KERN_ERR "Unable to register LASAT sysctl\n");
376 return -ENOMEM;
377 }
451 378
452 return 0; 379 return 0;
453} 380}
454 381
455__initcall(lasat_register_sysctl); 382__initcall(lasat_register_sysctl);
456#endif /* CONFIG_SYSCTL */
diff --git a/arch/mips/lasat/sysctl.h b/arch/mips/lasat/sysctl.h
deleted file mode 100644
index 341b97933423..000000000000
--- a/arch/mips/lasat/sysctl.h
+++ /dev/null
@@ -1,24 +0,0 @@
1/*
2 * LASAT sysctl values
3 */
4
5#ifndef _LASAT_SYSCTL_H
6#define _LASAT_SYSCTL_H
7
8/* /proc/sys/lasat */
9enum {
10 LASAT_CPU_HZ = 1,
11 LASAT_BUS_HZ,
12 LASAT_MODEL,
13 LASAT_PRID,
14 LASAT_IPADDR,
15 LASAT_NETMASK,
16 LASAT_BCAST,
17 LASAT_PASSWORD,
18 LASAT_SBOOT,
19 LASAT_RTC,
20 LASAT_NAMESTR,
21 LASAT_TYPESTR,
22};
23
24#endif /* _LASAT_SYSCTL_H */
diff --git a/arch/mips/mips-boards/generic/amon.c b/arch/mips/mips-boards/generic/amon.c
index b7633fda4180..96236bf33838 100644
--- a/arch/mips/mips-boards/generic/amon.c
+++ b/arch/mips/mips-boards/generic/amon.c
@@ -28,7 +28,7 @@
28 28
29int amon_cpu_avail(int cpu) 29int amon_cpu_avail(int cpu)
30{ 30{
31 struct cpulaunch *launch = (struct cpulaunch *)KSEG0ADDR(CPULAUNCH); 31 struct cpulaunch *launch = (struct cpulaunch *)CKSEG0ADDR(CPULAUNCH);
32 32
33 if (cpu < 0 || cpu >= NCPULAUNCH) { 33 if (cpu < 0 || cpu >= NCPULAUNCH) {
34 pr_debug("avail: cpu%d is out of range\n", cpu); 34 pr_debug("avail: cpu%d is out of range\n", cpu);
@@ -53,7 +53,7 @@ void amon_cpu_start(int cpu,
53 unsigned long gp, unsigned long a0) 53 unsigned long gp, unsigned long a0)
54{ 54{
55 volatile struct cpulaunch *launch = 55 volatile struct cpulaunch *launch =
56 (struct cpulaunch *)KSEG0ADDR(CPULAUNCH); 56 (struct cpulaunch *)CKSEG0ADDR(CPULAUNCH);
57 57
58 if (!amon_cpu_avail(cpu)) 58 if (!amon_cpu_avail(cpu))
59 return; 59 return;
diff --git a/arch/mips/mips-boards/malta/Makefile b/arch/mips/mips-boards/malta/Makefile
index 8dc6e2ac4c03..db4ad654a6d3 100644
--- a/arch/mips/mips-boards/malta/Makefile
+++ b/arch/mips/mips-boards/malta/Makefile
@@ -19,9 +19,8 @@
19# under Linux. 19# under Linux.
20# 20#
21 21
22obj-y := malta_int.o malta_platform.o malta_setup.o 22obj-y := malta_int.o malta_mtd.o malta_platform.o malta_setup.o
23 23
24obj-$(CONFIG_MTD) += malta_mtd.o
25# FIXME FIXME FIXME 24# FIXME FIXME FIXME
26obj-$(CONFIG_MIPS_MT_SMTC) += malta_smtc.o 25obj-$(CONFIG_MIPS_MT_SMTC) += malta_smtc.o
27 26
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 643c8bcffff3..27096751ddce 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -446,6 +446,7 @@ static inline void local_r4k_flush_cache_page(void *args)
446 struct page *page = pfn_to_page(fcp_args->pfn); 446 struct page *page = pfn_to_page(fcp_args->pfn);
447 int exec = vma->vm_flags & VM_EXEC; 447 int exec = vma->vm_flags & VM_EXEC;
448 struct mm_struct *mm = vma->vm_mm; 448 struct mm_struct *mm = vma->vm_mm;
449 int map_coherent = 0;
449 pgd_t *pgdp; 450 pgd_t *pgdp;
450 pud_t *pudp; 451 pud_t *pudp;
451 pmd_t *pmdp; 452 pmd_t *pmdp;
@@ -479,7 +480,9 @@ static inline void local_r4k_flush_cache_page(void *args)
479 * Use kmap_coherent or kmap_atomic to do flushes for 480 * Use kmap_coherent or kmap_atomic to do flushes for
480 * another ASID than the current one. 481 * another ASID than the current one.
481 */ 482 */
482 if (cpu_has_dc_aliases) 483 map_coherent = (cpu_has_dc_aliases &&
484 page_mapped(page) && !Page_dcache_dirty(page));
485 if (map_coherent)
483 vaddr = kmap_coherent(page, addr); 486 vaddr = kmap_coherent(page, addr);
484 else 487 else
485 vaddr = kmap_atomic(page, KM_USER0); 488 vaddr = kmap_atomic(page, KM_USER0);
@@ -502,7 +505,7 @@ static inline void local_r4k_flush_cache_page(void *args)
502 } 505 }
503 506
504 if (vaddr) { 507 if (vaddr) {
505 if (cpu_has_dc_aliases) 508 if (map_coherent)
506 kunmap_coherent(); 509 kunmap_coherent();
507 else 510 else
508 kunmap_atomic(vaddr, KM_USER0); 511 kunmap_atomic(vaddr, KM_USER0);
@@ -1226,6 +1229,28 @@ void au1x00_fixup_config_od(void)
1226 } 1229 }
1227} 1230}
1228 1231
1232/* CP0 hazard avoidance. */
1233#define NXP_BARRIER() \
1234 __asm__ __volatile__( \
1235 ".set noreorder\n\t" \
1236 "nop; nop; nop; nop; nop; nop;\n\t" \
1237 ".set reorder\n\t")
1238
1239static void nxp_pr4450_fixup_config(void)
1240{
1241 unsigned long config0;
1242
1243 config0 = read_c0_config();
1244
1245 /* clear all three cache coherency fields */
1246 config0 &= ~(0x7 | (7 << 25) | (7 << 28));
1247 config0 |= (((_page_cachable_default >> _CACHE_SHIFT) << 0) |
1248 ((_page_cachable_default >> _CACHE_SHIFT) << 25) |
1249 ((_page_cachable_default >> _CACHE_SHIFT) << 28));
1250 write_c0_config(config0);
1251 NXP_BARRIER();
1252}
1253
1229static int __cpuinitdata cca = -1; 1254static int __cpuinitdata cca = -1;
1230 1255
1231static int __init cca_setup(char *str) 1256static int __init cca_setup(char *str)
@@ -1271,6 +1296,10 @@ static void __cpuinit coherency_setup(void)
1271 case CPU_AU1500: /* rev. AB */ 1296 case CPU_AU1500: /* rev. AB */
1272 au1x00_fixup_config_od(); 1297 au1x00_fixup_config_od();
1273 break; 1298 break;
1299
1300 case PRID_IMP_PR4450:
1301 nxp_pr4450_fixup_config();
1302 break;
1274 } 1303 }
1275} 1304}
1276 1305
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index ecd562d2c348..137c14bafd6b 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -71,6 +71,7 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
71 * don't have to care about aliases on other CPUs. 71 * don't have to care about aliases on other CPUs.
72 */ 72 */
73unsigned long empty_zero_page, zero_page_mask; 73unsigned long empty_zero_page, zero_page_mask;
74EXPORT_SYMBOL_GPL(empty_zero_page);
74 75
75/* 76/*
76 * Not static inline because used by IP27 special magic initialization code 77 * Not static inline because used by IP27 special magic initialization code
diff --git a/arch/mips/mm/page.c b/arch/mips/mm/page.c
index cab81f42eee5..1edf0cbbeede 100644
--- a/arch/mips/mm/page.c
+++ b/arch/mips/mm/page.c
@@ -460,7 +460,7 @@ void __cpuinit build_copy_page(void)
460 build_copy_load_pref(&buf, -off); 460 build_copy_load_pref(&buf, -off);
461 off -= cache_line_size; 461 off -= cache_line_size;
462 } 462 }
463 off = cache_line_size ? min(8, pref_bias_copy_load / cache_line_size) * 463 off = cache_line_size ? min(8, pref_bias_copy_store / cache_line_size) *
464 cache_line_size : 0; 464 cache_line_size : 0;
465 while (off) { 465 while (off) {
466 build_copy_store_pref(&buf, -off); 466 build_copy_store_pref(&buf, -off);
diff --git a/arch/mips/nxp/pnx8550/jbs/board_setup.c b/arch/mips/nxp/pnx8550/jbs/board_setup.c
index f92826e0096d..57dd903ca408 100644
--- a/arch/mips/nxp/pnx8550/jbs/board_setup.c
+++ b/arch/mips/nxp/pnx8550/jbs/board_setup.c
@@ -47,16 +47,7 @@
47 47
48void __init board_setup(void) 48void __init board_setup(void)
49{ 49{
50 unsigned long config0, configpr; 50 unsigned long configpr;
51
52 config0 = read_c0_config();
53
54 /* clear all three cache coherency fields */
55 config0 &= ~(0x7 | (7<<25) | (7<<28));
56 config0 |= (CONF_CM_DEFAULT | (CONF_CM_DEFAULT<<25) |
57 (CONF_CM_DEFAULT<<28));
58 write_c0_config(config0);
59 BARRIER;
60 51
61 configpr = read_c0_config7(); 52 configpr = read_c0_config7();
62 configpr |= (1<<19); /* enable tlb */ 53 configpr |= (1<<19); /* enable tlb */
diff --git a/arch/mips/nxp/pnx8550/stb810/board_setup.c b/arch/mips/nxp/pnx8550/stb810/board_setup.c
index 1282c27cfcb7..af2a55e0b4e9 100644
--- a/arch/mips/nxp/pnx8550/stb810/board_setup.c
+++ b/arch/mips/nxp/pnx8550/stb810/board_setup.c
@@ -33,15 +33,7 @@
33 33
34void __init board_setup(void) 34void __init board_setup(void)
35{ 35{
36 unsigned long config0, configpr; 36 unsigned long configpr;
37
38 config0 = read_c0_config();
39
40 /* clear all three cache coherency fields */
41 config0 &= ~(0x7 | (7<<25) | (7<<28));
42 config0 |= (CONF_CM_DEFAULT | (CONF_CM_DEFAULT<<25) |
43 (CONF_CM_DEFAULT<<28));
44 write_c0_config(config0);
45 37
46 configpr = read_c0_config7(); 38 configpr = read_c0_config7();
47 configpr |= (1<<19); /* enable tlb */ 39 configpr |= (1<<19); /* enable tlb */
diff --git a/arch/mips/pci/pci-sb1250.c b/arch/mips/pci/pci-sb1250.c
index 42e4d2c800fa..2a09ad91ec8c 100644
--- a/arch/mips/pci/pci-sb1250.c
+++ b/arch/mips/pci/pci-sb1250.c
@@ -207,6 +207,7 @@ struct pci_controller sb1250_controller = {
207 207
208static int __init sb1250_pcibios_init(void) 208static int __init sb1250_pcibios_init(void)
209{ 209{
210 void __iomem *io_map_base;
210 uint32_t cmdreg; 211 uint32_t cmdreg;
211 uint64_t reg; 212 uint64_t reg;
212 extern int pci_probe_only; 213 extern int pci_probe_only;
@@ -253,12 +254,13 @@ static int __init sb1250_pcibios_init(void)
253 * works correctly with most of Linux's drivers. 254 * works correctly with most of Linux's drivers.
254 * XXX ehs: Should this happen in PCI Device mode? 255 * XXX ehs: Should this happen in PCI Device mode?
255 */ 256 */
256
257 set_io_port_base((unsigned long)
258 ioremap(A_PHYS_LDTPCI_IO_MATCH_BYTES, 65536));
259 isa_slot_offset = (unsigned long) 257 isa_slot_offset = (unsigned long)
260 ioremap(A_PHYS_LDTPCI_IO_MATCH_BYTES_32, 1024 * 1024); 258 ioremap(A_PHYS_LDTPCI_IO_MATCH_BYTES_32, 1024 * 1024);
261 259
260 io_map_base = ioremap(A_PHYS_LDTPCI_IO_MATCH_BYTES, 1024 * 1024);
261 sb1250_controller.io_map_base = io_map_base;
262 set_io_port_base((unsigned long)io_map_base);
263
262#ifdef CONFIG_SIBYTE_HAS_LDT 264#ifdef CONFIG_SIBYTE_HAS_LDT
263 /* 265 /*
264 * Also check the LDT bridge's enable, just in case we didn't 266 * Also check the LDT bridge's enable, just in case we didn't
diff --git a/arch/mips/pci/pci-vr41xx.c b/arch/mips/pci/pci-vr41xx.c
index 33c4f683d067..d1e049b55f34 100644
--- a/arch/mips/pci/pci-vr41xx.c
+++ b/arch/mips/pci/pci-vr41xx.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Copyright (C) 2001-2003 MontaVista Software Inc. 4 * Copyright (C) 2001-2003 MontaVista Software Inc.
5 * Author: Yoichi Yuasa <yyuasa@mvista.com or source@mvista.com> 5 * Author: Yoichi Yuasa <yyuasa@mvista.com or source@mvista.com>
6 * Copyright (C) 2004-2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> 6 * Copyright (C) 2004-2008 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
7 * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org) 7 * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org)
8 * 8 *
9 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
@@ -300,6 +300,18 @@ static int __init vr41xx_pciu_init(void)
300 ioport_resource.end = IO_PORT_RESOURCE_END; 300 ioport_resource.end = IO_PORT_RESOURCE_END;
301 } 301 }
302 302
303 if (setup->master_io) {
304 void __iomem *io_map_base;
305 struct resource *res = vr41xx_pci_controller.io_resource;
306 master = setup->master_io;
307 io_map_base = ioremap(master->bus_base_address,
308 res->end - res->start + 1);
309 if (!io_map_base)
310 return -EBUSY;
311
312 vr41xx_pci_controller.io_map_base = (unsigned long)io_map_base;
313 }
314
303 register_pci_controller(&vr41xx_pci_controller); 315 register_pci_controller(&vr41xx_pci_controller);
304 316
305 return 0; 317 return 0;
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c
index b0ea0e43ba48..0d6b6663d5f6 100644
--- a/arch/mips/sgi-ip32/ip32-irq.c
+++ b/arch/mips/sgi-ip32/ip32-irq.c
@@ -425,6 +425,11 @@ static void ip32_irq0(void)
425 BUILD_BUG_ON(MACEISA_SERIAL2_RDMAOR_IRQ - MACEISA_AUDIO_SW_IRQ != 31); 425 BUILD_BUG_ON(MACEISA_SERIAL2_RDMAOR_IRQ - MACEISA_AUDIO_SW_IRQ != 31);
426 426
427 crime_int = crime->istat & crime_mask; 427 crime_int = crime->istat & crime_mask;
428
429 /* crime sometime delivers spurious interrupts, ignore them */
430 if (unlikely(crime_int == 0))
431 return;
432
428 irq = MACE_VID_IN1_IRQ + __ffs(crime_int); 433 irq = MACE_VID_IN1_IRQ + __ffs(crime_int);
429 434
430 if (crime_int & CRIME_MACEISA_INT_MASK) { 435 if (crime_int & CRIME_MACEISA_INT_MASK) {
diff --git a/arch/mips/sibyte/swarm/Makefile b/arch/mips/sibyte/swarm/Makefile
index 2d626039195c..1775755a2619 100644
--- a/arch/mips/sibyte/swarm/Makefile
+++ b/arch/mips/sibyte/swarm/Makefile
@@ -1,3 +1,3 @@
1lib-y = setup.o rtc_xicor1241.o rtc_m41t81.o 1obj-y := setup.o rtc_xicor1241.o rtc_m41t81.o
2 2
3lib-$(CONFIG_KGDB) += dbg_io.o 3obj-$(CONFIG_KGDB) += dbg_io.o
diff --git a/arch/mn10300/kernel/mn10300_ksyms.c b/arch/mn10300/kernel/mn10300_ksyms.c
index 6d19628634e3..f9eb9753a404 100644
--- a/arch/mn10300/kernel/mn10300_ksyms.c
+++ b/arch/mn10300/kernel/mn10300_ksyms.c
@@ -10,8 +10,11 @@
10 */ 10 */
11#include <linux/module.h> 11#include <linux/module.h>
12#include <asm/uaccess.h> 12#include <asm/uaccess.h>
13#include <asm/pgtable.h>
13 14
14 15
16EXPORT_SYMBOL(empty_zero_page);
17
15EXPORT_SYMBOL(change_bit); 18EXPORT_SYMBOL(change_bit);
16EXPORT_SYMBOL(test_and_change_bit); 19EXPORT_SYMBOL(test_and_change_bit);
17 20
@@ -31,7 +34,9 @@ extern u64 __ashrdi3(u64, unsigned);
31extern u64 __ashldi3(u64, unsigned); 34extern u64 __ashldi3(u64, unsigned);
32extern u64 __lshrdi3(u64, unsigned); 35extern u64 __lshrdi3(u64, unsigned);
33extern s64 __negdi2(s64); 36extern s64 __negdi2(s64);
37extern int __ucmpdi2(u64, u64);
34EXPORT_SYMBOL(__ashrdi3); 38EXPORT_SYMBOL(__ashrdi3);
35EXPORT_SYMBOL(__ashldi3); 39EXPORT_SYMBOL(__ashldi3);
36EXPORT_SYMBOL(__lshrdi3); 40EXPORT_SYMBOL(__lshrdi3);
37EXPORT_SYMBOL(__negdi2); 41EXPORT_SYMBOL(__negdi2);
42EXPORT_SYMBOL(__ucmpdi2);
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c
index 3b0d579fc15d..b28c9a60445b 100644
--- a/arch/mn10300/kernel/process.c
+++ b/arch/mn10300/kernel/process.c
@@ -20,7 +20,6 @@
20#include <linux/ptrace.h> 20#include <linux/ptrace.h>
21#include <linux/slab.h> 21#include <linux/slab.h>
22#include <linux/user.h> 22#include <linux/user.h>
23#include <linux/a.out.h>
24#include <linux/interrupt.h> 23#include <linux/interrupt.h>
25#include <linux/delay.h> 24#include <linux/delay.h>
26#include <linux/reboot.h> 25#include <linux/reboot.h>
@@ -154,6 +153,7 @@ int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
154 return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, 153 return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0,
155 NULL, NULL); 154 NULL, NULL);
156} 155}
156EXPORT_SYMBOL(kernel_thread);
157 157
158/* 158/*
159 * free current thread data structures etc.. 159 * free current thread data structures etc..
diff --git a/arch/mn10300/kernel/setup.c b/arch/mn10300/kernel/setup.c
index 6b7ce2636851..017121ce896f 100644
--- a/arch/mn10300/kernel/setup.c
+++ b/arch/mn10300/kernel/setup.c
@@ -17,7 +17,6 @@
17#include <linux/ptrace.h> 17#include <linux/ptrace.h>
18#include <linux/slab.h> 18#include <linux/slab.h>
19#include <linux/user.h> 19#include <linux/user.h>
20#include <linux/a.out.h>
21#include <linux/tty.h> 20#include <linux/tty.h>
22#include <linux/ioport.h> 21#include <linux/ioport.h>
23#include <linux/delay.h> 22#include <linux/delay.h>
diff --git a/arch/mn10300/lib/Makefile b/arch/mn10300/lib/Makefile
index fdfa9ec5b5bb..0cd2346f4c13 100644
--- a/arch/mn10300/lib/Makefile
+++ b/arch/mn10300/lib/Makefile
@@ -4,4 +4,4 @@
4 4
5lib-y = delay.o usercopy.o checksum.o bitops.o memcpy.o memmove.o memset.o 5lib-y = delay.o usercopy.o checksum.o bitops.o memcpy.o memmove.o memset.o
6lib-y += do_csum.o 6lib-y += do_csum.o
7lib-y += __ashldi3.o __ashrdi3.o __lshrdi3.o negdi2.o 7lib-y += __ashldi3.o __ashrdi3.o __lshrdi3.o negdi2.o __ucmpdi2.o
diff --git a/arch/mn10300/lib/__ucmpdi2.S b/arch/mn10300/lib/__ucmpdi2.S
new file mode 100644
index 000000000000..60dcbdfe386c
--- /dev/null
+++ b/arch/mn10300/lib/__ucmpdi2.S
@@ -0,0 +1,43 @@
1/* __ucmpdi2.S: 64-bit unsigned compare
2 *
3 * Copyright (C) 2008 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11
12
13 .text
14 .p2align 4
15
16###############################################################################
17#
18# int __ucmpdi2(unsigned long long a [D0:D1],
19# unsigned long long b [(SP,12),(SP,16)])
20#
21# - returns 0, 1, or 2 as a <, =, > b respectively.
22#
23###############################################################################
24 .globl __ucmpdi2
25 .type __ucmpdi2,@function
26__ucmpdi2:
27 mov (12,sp),a0 # b.lsw
28 mov (16,sp),a1 # b.msw
29
30 sub a0,d0
31 subc a1,d1 # may clear Z, never sets it
32 bne __ucmpdi2_differ # a.msw != b.msw
33 mov +1,d0
34 rets
35
36__ucmpdi2_differ:
37 # C flag is set if LE, clear if GE
38 subc d0,d0 # -1 if LE, 0 if GE
39 add +1,d0 # 0 if LE, 1 if GE
40 add d0,d0 # 0 if LE, 2 if GE
41 rets
42
43 .size __ucmpdi2, .-__ucmpdi2
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 9dcdc036cdf7..b7d4c4ce2fe6 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -96,6 +96,8 @@ endif
96else 96else
97 KBUILD_CFLAGS += $(call cc-option,-mtune=power4) 97 KBUILD_CFLAGS += $(call cc-option,-mtune=power4)
98endif 98endif
99else
100LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
99endif 101endif
100 102
101ifeq ($(CONFIG_TUNE_CELL),y) 103ifeq ($(CONFIG_TUNE_CELL),y)
@@ -154,7 +156,7 @@ all: zImage
154 156
155CPPFLAGS_vmlinux.lds := -Upowerpc 157CPPFLAGS_vmlinux.lds := -Upowerpc
156 158
157BOOT_TARGETS = zImage zImage.initrd uImage zImage% dtbImage% treeImage.% cuImage.% 159BOOT_TARGETS = zImage zImage.initrd uImage zImage% dtbImage% treeImage.% cuImage.% simpleImage.%
158 160
159PHONY += $(BOOT_TARGETS) 161PHONY += $(BOOT_TARGETS)
160 162
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index d53b84e761a9..095e04db1c0e 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -51,7 +51,7 @@ $(addprefix $(obj)/,$(zlib) gunzip_util.o main.o): \
51 $(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader)) 51 $(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))
52 52
53src-libfdt := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c 53src-libfdt := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
54src-wlib := string.S crt0.S stdio.c main.c \ 54src-wlib := string.S crt0.S crtsavres.S stdio.c main.c \
55 $(addprefix libfdt/,$(src-libfdt)) libfdt-wrapper.c \ 55 $(addprefix libfdt/,$(src-libfdt)) libfdt-wrapper.c \
56 ns16550.c serial.c simple_alloc.c div64.S util.S \ 56 ns16550.c serial.c simple_alloc.c div64.S util.S \
57 gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \ 57 gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \
@@ -273,7 +273,8 @@ endif
273initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) 273initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
274initrd-y := $(patsubst zImage%, zImage.initrd%, \ 274initrd-y := $(patsubst zImage%, zImage.initrd%, \
275 $(patsubst dtbImage%, dtbImage.initrd%, \ 275 $(patsubst dtbImage%, dtbImage.initrd%, \
276 $(patsubst treeImage%, treeImage.initrd%, $(image-y)))) 276 $(patsubst simpleImage%, simpleImage.initrd%, \
277 $(patsubst treeImage%, treeImage.initrd%, $(image-y)))))
277initrd-y := $(filter-out $(image-y), $(initrd-y)) 278initrd-y := $(filter-out $(image-y), $(initrd-y))
278targets += $(image-y) $(initrd-y) 279targets += $(image-y) $(initrd-y)
279 280
diff --git a/arch/powerpc/boot/crtsavres.S b/arch/powerpc/boot/crtsavres.S
new file mode 100644
index 000000000000..f3d9b35c07d4
--- /dev/null
+++ b/arch/powerpc/boot/crtsavres.S
@@ -0,0 +1,233 @@
1/*
2 * Special support for eabi and SVR4
3 *
4 * Copyright (C) 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc.
5 * Copyright 2008 Freescale Semiconductor, Inc.
6 * Written By Michael Meissner
7 *
8 * Based on gcc/config/rs6000/crtsavres.asm from gcc
9 *
10 * This file is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2, or (at your option) any
13 * later version.
14 *
15 * In addition to the permissions in the GNU General Public License, the
16 * Free Software Foundation gives you unlimited permission to link the
17 * compiled version of this file with other programs, and to distribute
18 * those programs without any restriction coming from the use of this
19 * file. (The General Public License restrictions do apply in other
20 * respects; for example, they cover modification of the file, and
21 * distribution when not linked into another program.)
22 *
23 * This file is distributed in the hope that it will be useful, but
24 * WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26 * General Public License for more details.
27 *
28 * You should have received a copy of the GNU General Public License
29 * along with this program; see the file COPYING. If not, write to
30 * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
31 * Boston, MA 02110-1301, USA.
32 *
33 * As a special exception, if you link this library with files
34 * compiled with GCC to produce an executable, this does not cause
35 * the resulting executable to be covered by the GNU General Public License.
36 * This exception does not however invalidate any other reasons why
37 * the executable file might be covered by the GNU General Public License.
38 */
39
40 .file "crtsavres.S"
41 .section ".text"
42
43/* On PowerPC64 Linux, these functions are provided by the linker. */
44#ifndef __powerpc64__
45
46#define _GLOBAL(name) \
47 .type name,@function; \
48 .globl name; \
49name:
50
51/* Routines for saving integer registers, called by the compiler. */
52/* Called with r11 pointing to the stack header word of the caller of the */
53/* function, just beyond the end of the integer save area. */
54
55_GLOBAL(_savegpr_14)
56_GLOBAL(_save32gpr_14)
57 stw 14,-72(11) /* save gp registers */
58_GLOBAL(_savegpr_15)
59_GLOBAL(_save32gpr_15)
60 stw 15,-68(11)
61_GLOBAL(_savegpr_16)
62_GLOBAL(_save32gpr_16)
63 stw 16,-64(11)
64_GLOBAL(_savegpr_17)
65_GLOBAL(_save32gpr_17)
66 stw 17,-60(11)
67_GLOBAL(_savegpr_18)
68_GLOBAL(_save32gpr_18)
69 stw 18,-56(11)
70_GLOBAL(_savegpr_19)
71_GLOBAL(_save32gpr_19)
72 stw 19,-52(11)
73_GLOBAL(_savegpr_20)
74_GLOBAL(_save32gpr_20)
75 stw 20,-48(11)
76_GLOBAL(_savegpr_21)
77_GLOBAL(_save32gpr_21)
78 stw 21,-44(11)
79_GLOBAL(_savegpr_22)
80_GLOBAL(_save32gpr_22)
81 stw 22,-40(11)
82_GLOBAL(_savegpr_23)
83_GLOBAL(_save32gpr_23)
84 stw 23,-36(11)
85_GLOBAL(_savegpr_24)
86_GLOBAL(_save32gpr_24)
87 stw 24,-32(11)
88_GLOBAL(_savegpr_25)
89_GLOBAL(_save32gpr_25)
90 stw 25,-28(11)
91_GLOBAL(_savegpr_26)
92_GLOBAL(_save32gpr_26)
93 stw 26,-24(11)
94_GLOBAL(_savegpr_27)
95_GLOBAL(_save32gpr_27)
96 stw 27,-20(11)
97_GLOBAL(_savegpr_28)
98_GLOBAL(_save32gpr_28)
99 stw 28,-16(11)
100_GLOBAL(_savegpr_29)
101_GLOBAL(_save32gpr_29)
102 stw 29,-12(11)
103_GLOBAL(_savegpr_30)
104_GLOBAL(_save32gpr_30)
105 stw 30,-8(11)
106_GLOBAL(_savegpr_31)
107_GLOBAL(_save32gpr_31)
108 stw 31,-4(11)
109 blr
110
111/* Routines for restoring integer registers, called by the compiler. */
112/* Called with r11 pointing to the stack header word of the caller of the */
113/* function, just beyond the end of the integer restore area. */
114
115_GLOBAL(_restgpr_14)
116_GLOBAL(_rest32gpr_14)
117 lwz 14,-72(11) /* restore gp registers */
118_GLOBAL(_restgpr_15)
119_GLOBAL(_rest32gpr_15)
120 lwz 15,-68(11)
121_GLOBAL(_restgpr_16)
122_GLOBAL(_rest32gpr_16)
123 lwz 16,-64(11)
124_GLOBAL(_restgpr_17)
125_GLOBAL(_rest32gpr_17)
126 lwz 17,-60(11)
127_GLOBAL(_restgpr_18)
128_GLOBAL(_rest32gpr_18)
129 lwz 18,-56(11)
130_GLOBAL(_restgpr_19)
131_GLOBAL(_rest32gpr_19)
132 lwz 19,-52(11)
133_GLOBAL(_restgpr_20)
134_GLOBAL(_rest32gpr_20)
135 lwz 20,-48(11)
136_GLOBAL(_restgpr_21)
137_GLOBAL(_rest32gpr_21)
138 lwz 21,-44(11)
139_GLOBAL(_restgpr_22)
140_GLOBAL(_rest32gpr_22)
141 lwz 22,-40(11)
142_GLOBAL(_restgpr_23)
143_GLOBAL(_rest32gpr_23)
144 lwz 23,-36(11)
145_GLOBAL(_restgpr_24)
146_GLOBAL(_rest32gpr_24)
147 lwz 24,-32(11)
148_GLOBAL(_restgpr_25)
149_GLOBAL(_rest32gpr_25)
150 lwz 25,-28(11)
151_GLOBAL(_restgpr_26)
152_GLOBAL(_rest32gpr_26)
153 lwz 26,-24(11)
154_GLOBAL(_restgpr_27)
155_GLOBAL(_rest32gpr_27)
156 lwz 27,-20(11)
157_GLOBAL(_restgpr_28)
158_GLOBAL(_rest32gpr_28)
159 lwz 28,-16(11)
160_GLOBAL(_restgpr_29)
161_GLOBAL(_rest32gpr_29)
162 lwz 29,-12(11)
163_GLOBAL(_restgpr_30)
164_GLOBAL(_rest32gpr_30)
165 lwz 30,-8(11)
166_GLOBAL(_restgpr_31)
167_GLOBAL(_rest32gpr_31)
168 lwz 31,-4(11)
169 blr
170
171/* Routines for restoring integer registers, called by the compiler. */
172/* Called with r11 pointing to the stack header word of the caller of the */
173/* function, just beyond the end of the integer restore area. */
174
175_GLOBAL(_restgpr_14_x)
176_GLOBAL(_rest32gpr_14_x)
177 lwz 14,-72(11) /* restore gp registers */
178_GLOBAL(_restgpr_15_x)
179_GLOBAL(_rest32gpr_15_x)
180 lwz 15,-68(11)
181_GLOBAL(_restgpr_16_x)
182_GLOBAL(_rest32gpr_16_x)
183 lwz 16,-64(11)
184_GLOBAL(_restgpr_17_x)
185_GLOBAL(_rest32gpr_17_x)
186 lwz 17,-60(11)
187_GLOBAL(_restgpr_18_x)
188_GLOBAL(_rest32gpr_18_x)
189 lwz 18,-56(11)
190_GLOBAL(_restgpr_19_x)
191_GLOBAL(_rest32gpr_19_x)
192 lwz 19,-52(11)
193_GLOBAL(_restgpr_20_x)
194_GLOBAL(_rest32gpr_20_x)
195 lwz 20,-48(11)
196_GLOBAL(_restgpr_21_x)
197_GLOBAL(_rest32gpr_21_x)
198 lwz 21,-44(11)
199_GLOBAL(_restgpr_22_x)
200_GLOBAL(_rest32gpr_22_x)
201 lwz 22,-40(11)
202_GLOBAL(_restgpr_23_x)
203_GLOBAL(_rest32gpr_23_x)
204 lwz 23,-36(11)
205_GLOBAL(_restgpr_24_x)
206_GLOBAL(_rest32gpr_24_x)
207 lwz 24,-32(11)
208_GLOBAL(_restgpr_25_x)
209_GLOBAL(_rest32gpr_25_x)
210 lwz 25,-28(11)
211_GLOBAL(_restgpr_26_x)
212_GLOBAL(_rest32gpr_26_x)
213 lwz 26,-24(11)
214_GLOBAL(_restgpr_27_x)
215_GLOBAL(_rest32gpr_27_x)
216 lwz 27,-20(11)
217_GLOBAL(_restgpr_28_x)
218_GLOBAL(_rest32gpr_28_x)
219 lwz 28,-16(11)
220_GLOBAL(_restgpr_29_x)
221_GLOBAL(_rest32gpr_29_x)
222 lwz 29,-12(11)
223_GLOBAL(_restgpr_30_x)
224_GLOBAL(_rest32gpr_30_x)
225 lwz 30,-8(11)
226_GLOBAL(_restgpr_31_x)
227_GLOBAL(_rest32gpr_31_x)
228 lwz 0,4(11)
229 lwz 31,-4(11)
230 mtlr 0
231 mr 1,11
232 blr
233#endif
diff --git a/arch/powerpc/boot/dts/mpc8377_rdb.dts b/arch/powerpc/boot/dts/mpc8377_rdb.dts
index 5bc09ad016f5..f3083c779b66 100644
--- a/arch/powerpc/boot/dts/mpc8377_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8377_rdb.dts
@@ -164,12 +164,6 @@
164 reg = <0x2>; 164 reg = <0x2>;
165 device_type = "ethernet-phy"; 165 device_type = "ethernet-phy";
166 }; 166 };
167 phy3: ethernet-phy@3 {
168 interrupt-parent = <&ipic>;
169 interrupts = <18 0x8>;
170 reg = <0x3>;
171 device_type = "ethernet-phy";
172 };
173 }; 167 };
174 168
175 enet0: ethernet@24000 { 169 enet0: ethernet@24000 {
@@ -195,7 +189,7 @@
195 interrupts = <35 0x8 36 0x8 37 0x8>; 189 interrupts = <35 0x8 36 0x8 37 0x8>;
196 phy-connection-type = "mii"; 190 phy-connection-type = "mii";
197 interrupt-parent = <&ipic>; 191 interrupt-parent = <&ipic>;
198 phy-handle = <&phy3>; 192 fixed-link = <1 1 1000 0 0>;
199 }; 193 };
200 194
201 serial0: serial@4500 { 195 serial0: serial@4500 {
diff --git a/arch/powerpc/boot/dts/mpc8378_rdb.dts b/arch/powerpc/boot/dts/mpc8378_rdb.dts
index 711f9a30f9ab..0e872a60e091 100644
--- a/arch/powerpc/boot/dts/mpc8378_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8378_rdb.dts
@@ -164,12 +164,6 @@
164 reg = <0x2>; 164 reg = <0x2>;
165 device_type = "ethernet-phy"; 165 device_type = "ethernet-phy";
166 }; 166 };
167 phy3: ethernet-phy@3 {
168 interrupt-parent = <&ipic>;
169 interrupts = <18 0x8>;
170 reg = <0x3>;
171 device_type = "ethernet-phy";
172 };
173 }; 167 };
174 168
175 enet0: ethernet@24000 { 169 enet0: ethernet@24000 {
@@ -195,7 +189,7 @@
195 interrupts = <35 0x8 36 0x8 37 0x8>; 189 interrupts = <35 0x8 36 0x8 37 0x8>;
196 phy-connection-type = "mii"; 190 phy-connection-type = "mii";
197 interrupt-parent = <&ipic>; 191 interrupt-parent = <&ipic>;
198 phy-handle = <&phy3>; 192 fixed-link = <1 1 1000 0 0>;
199 }; 193 };
200 194
201 serial0: serial@4500 { 195 serial0: serial@4500 {
diff --git a/arch/powerpc/boot/dts/mpc8379_rdb.dts b/arch/powerpc/boot/dts/mpc8379_rdb.dts
index c11ceb7d3299..1eb8defaff6f 100644
--- a/arch/powerpc/boot/dts/mpc8379_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8379_rdb.dts
@@ -164,12 +164,6 @@
164 reg = <0x2>; 164 reg = <0x2>;
165 device_type = "ethernet-phy"; 165 device_type = "ethernet-phy";
166 }; 166 };
167 phy3: ethernet-phy@3 {
168 interrupt-parent = <&ipic>;
169 interrupts = <18 0x8>;
170 reg = <0x3>;
171 device_type = "ethernet-phy";
172 };
173 }; 167 };
174 168
175 enet0: ethernet@24000 { 169 enet0: ethernet@24000 {
@@ -195,7 +189,7 @@
195 interrupts = <35 0x8 36 0x8 37 0x8>; 189 interrupts = <35 0x8 36 0x8 37 0x8>;
196 phy-connection-type = "mii"; 190 phy-connection-type = "mii";
197 interrupt-parent = <&ipic>; 191 interrupt-parent = <&ipic>;
198 phy-handle = <&phy3>; 192 fixed-link = <1 1 1000 0 0>;
199 }; 193 };
200 194
201 serial0: serial@4500 { 195 serial0: serial@4500 {
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts
index fa298a8c81cc..4811b8107415 100644
--- a/arch/powerpc/boot/dts/mpc8548cds.dts
+++ b/arch/powerpc/boot/dts/mpc8548cds.dts
@@ -409,7 +409,7 @@
409 interrupts = <26 2>; 409 interrupts = <26 2>;
410 bus-range = <0 255>; 410 bus-range = <0 255>;
411 ranges = <0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 411 ranges = <0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000
412 0x1000000 0x0 0x0 0xe3000000 0x0 0x8000000>; 412 0x1000000 0x0 0x0 0xe3000000 0x0 0x100000>;
413 clock-frequency = <33333333>; 413 clock-frequency = <33333333>;
414 #interrupt-cells = <1>; 414 #interrupt-cells = <1>;
415 #size-cells = <2>; 415 #size-cells = <2>;
@@ -428,7 +428,7 @@
428 428
429 0x1000000 0x0 0x0 429 0x1000000 0x0 0x0
430 0x1000000 0x0 0x0 430 0x1000000 0x0 0x0
431 0x0 0x8000000>; 431 0x0 0x100000>;
432 }; 432 };
433 }; 433 };
434}; 434};
diff --git a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig
index 7d18440e398f..5428f9f5ed85 100644
--- a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig
+++ b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Fri Apr 11 11:10:09 2008 4# Mon Jun 9 08:52:21 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89# CONFIG_KALLSYMS is not set 92# CONFIG_KALLSYMS is not set
90CONFIG_HOTPLUG=y 93CONFIG_HOTPLUG=y
91CONFIG_PRINTK=y 94CONFIG_PRINTK=y
@@ -110,12 +113,14 @@ CONFIG_SLUB=y
110CONFIG_HAVE_OPROFILE=y 113CONFIG_HAVE_OPROFILE=y
111CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
112CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
116# CONFIG_HAVE_DMA_ATTRS is not set
113CONFIG_PROC_PAGE_MONITOR=y 117CONFIG_PROC_PAGE_MONITOR=y
114CONFIG_SLABINFO=y 118CONFIG_SLABINFO=y
115CONFIG_RT_MUTEXES=y 119CONFIG_RT_MUTEXES=y
116# CONFIG_TINY_SHMEM is not set 120# CONFIG_TINY_SHMEM is not set
117CONFIG_BASE_SMALL=0 121CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 122CONFIG_MODULES=y
123# CONFIG_MODULE_FORCE_LOAD is not set
119CONFIG_MODULE_UNLOAD=y 124CONFIG_MODULE_UNLOAD=y
120# CONFIG_MODULE_FORCE_UNLOAD is not set 125# CONFIG_MODULE_FORCE_UNLOAD is not set
121# CONFIG_MODVERSIONS is not set 126# CONFIG_MODVERSIONS is not set
@@ -196,7 +201,6 @@ CONFIG_PREEMPT_NONE=y
196# CONFIG_PREEMPT is not set 201# CONFIG_PREEMPT is not set
197CONFIG_BINFMT_ELF=y 202CONFIG_BINFMT_ELF=y
198# CONFIG_BINFMT_MISC is not set 203# CONFIG_BINFMT_MISC is not set
199CONFIG_FORCE_MAX_ZONEORDER=11
200# CONFIG_IOMMU_HELPER is not set 204# CONFIG_IOMMU_HELPER is not set
201CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 205CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
202CONFIG_ARCH_HAS_WALK_MEMORY=y 206CONFIG_ARCH_HAS_WALK_MEMORY=y
@@ -211,11 +215,13 @@ CONFIG_FLATMEM=y
211CONFIG_FLAT_NODE_MEM_MAP=y 215CONFIG_FLAT_NODE_MEM_MAP=y
212# CONFIG_SPARSEMEM_STATIC is not set 216# CONFIG_SPARSEMEM_STATIC is not set
213# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
218CONFIG_PAGEFLAGS_EXTENDED=y
214CONFIG_SPLIT_PTLOCK_CPUS=4 219CONFIG_SPLIT_PTLOCK_CPUS=4
215# CONFIG_RESOURCES_64BIT is not set 220# CONFIG_RESOURCES_64BIT is not set
216CONFIG_ZONE_DMA_FLAG=1 221CONFIG_ZONE_DMA_FLAG=1
217CONFIG_BOUNCE=y 222CONFIG_BOUNCE=y
218CONFIG_VIRT_TO_BUS=y 223CONFIG_VIRT_TO_BUS=y
224CONFIG_FORCE_MAX_ZONEORDER=11
219CONFIG_PROC_DEVICETREE=y 225CONFIG_PROC_DEVICETREE=y
220# CONFIG_CMDLINE_BOOL is not set 226# CONFIG_CMDLINE_BOOL is not set
221# CONFIG_PM is not set 227# CONFIG_PM is not set
@@ -239,6 +245,7 @@ CONFIG_PCI_LEGACY=y
239# CONFIG_PCI_DEBUG is not set 245# CONFIG_PCI_DEBUG is not set
240# CONFIG_PCCARD is not set 246# CONFIG_PCCARD is not set
241# CONFIG_HOTPLUG_PCI is not set 247# CONFIG_HOTPLUG_PCI is not set
248# CONFIG_HAS_RAPIDIO is not set
242 249
243# 250#
244# Advanced setup 251# Advanced setup
@@ -248,11 +255,11 @@ CONFIG_PCI_LEGACY=y
248# 255#
249# Default settings for advanced configuration options are used 256# Default settings for advanced configuration options are used
250# 257#
251CONFIG_HIGHMEM_START=0xfe000000
252CONFIG_LOWMEM_SIZE=0x30000000 258CONFIG_LOWMEM_SIZE=0x30000000
259CONFIG_PAGE_OFFSET=0xc0000000
253CONFIG_KERNEL_START=0xc0000000 260CONFIG_KERNEL_START=0xc0000000
261CONFIG_PHYSICAL_START=0x00000000
254CONFIG_TASK_SIZE=0xc0000000 262CONFIG_TASK_SIZE=0xc0000000
255CONFIG_BOOT_LOAD=0x00800000
256 263
257# 264#
258# Networking 265# Networking
@@ -300,8 +307,6 @@ CONFIG_TCP_CONG_CUBIC=y
300CONFIG_DEFAULT_TCP_CONG="cubic" 307CONFIG_DEFAULT_TCP_CONG="cubic"
301# CONFIG_TCP_MD5SIG is not set 308# CONFIG_TCP_MD5SIG is not set
302# CONFIG_IPV6 is not set 309# CONFIG_IPV6 is not set
303# CONFIG_INET6_XFRM_TUNNEL is not set
304# CONFIG_INET6_TUNNEL is not set
305# CONFIG_NETWORK_SECMARK is not set 310# CONFIG_NETWORK_SECMARK is not set
306# CONFIG_NETFILTER is not set 311# CONFIG_NETFILTER is not set
307# CONFIG_IP_DCCP is not set 312# CONFIG_IP_DCCP is not set
@@ -362,6 +367,7 @@ CONFIG_MTD_PARTITIONS=y
362# CONFIG_MTD_REDBOOT_PARTS is not set 367# CONFIG_MTD_REDBOOT_PARTS is not set
363# CONFIG_MTD_CMDLINE_PARTS is not set 368# CONFIG_MTD_CMDLINE_PARTS is not set
364CONFIG_MTD_OF_PARTS=y 369CONFIG_MTD_OF_PARTS=y
370# CONFIG_MTD_AR7_PARTS is not set
365 371
366# 372#
367# User Modules And Translation Layers 373# User Modules And Translation Layers
@@ -445,6 +451,7 @@ CONFIG_MTD_NAND_FSL_ELBC=y
445# 451#
446# CONFIG_MTD_UBI is not set 452# CONFIG_MTD_UBI is not set
447CONFIG_OF_DEVICE=y 453CONFIG_OF_DEVICE=y
454CONFIG_OF_I2C=y
448# CONFIG_PARPORT is not set 455# CONFIG_PARPORT is not set
449CONFIG_BLK_DEV=y 456CONFIG_BLK_DEV=y
450# CONFIG_BLK_DEV_FD is not set 457# CONFIG_BLK_DEV_FD is not set
@@ -641,7 +648,6 @@ CONFIG_NETDEV_1000=y
641# CONFIG_SIS190 is not set 648# CONFIG_SIS190 is not set
642# CONFIG_SKGE is not set 649# CONFIG_SKGE is not set
643# CONFIG_SKY2 is not set 650# CONFIG_SKY2 is not set
644# CONFIG_SK98LIN is not set
645# CONFIG_VIA_VELOCITY is not set 651# CONFIG_VIA_VELOCITY is not set
646# CONFIG_TIGON3 is not set 652# CONFIG_TIGON3 is not set
647# CONFIG_BNX2 is not set 653# CONFIG_BNX2 is not set
@@ -661,6 +667,7 @@ CONFIG_NETDEV_10000=y
661# CONFIG_MLX4_CORE is not set 667# CONFIG_MLX4_CORE is not set
662# CONFIG_TEHUTI is not set 668# CONFIG_TEHUTI is not set
663# CONFIG_BNX2X is not set 669# CONFIG_BNX2X is not set
670# CONFIG_SFC is not set
664# CONFIG_TR is not set 671# CONFIG_TR is not set
665 672
666# 673#
@@ -668,6 +675,7 @@ CONFIG_NETDEV_10000=y
668# 675#
669# CONFIG_WLAN_PRE80211 is not set 676# CONFIG_WLAN_PRE80211 is not set
670# CONFIG_WLAN_80211 is not set 677# CONFIG_WLAN_80211 is not set
678# CONFIG_IWLWIFI_LEDS is not set
671 679
672# 680#
673# USB Network Adapters 681# USB Network Adapters
@@ -724,6 +732,7 @@ CONFIG_INPUT=y
724# Character devices 732# Character devices
725# 733#
726# CONFIG_VT is not set 734# CONFIG_VT is not set
735CONFIG_DEVKMEM=y
727# CONFIG_SERIAL_NONSTANDARD is not set 736# CONFIG_SERIAL_NONSTANDARD is not set
728# CONFIG_NOZOMI is not set 737# CONFIG_NOZOMI is not set
729 738
@@ -751,7 +760,6 @@ CONFIG_LEGACY_PTY_COUNT=256
751# CONFIG_IPMI_HANDLER is not set 760# CONFIG_IPMI_HANDLER is not set
752CONFIG_HW_RANDOM=y 761CONFIG_HW_RANDOM=y
753# CONFIG_NVRAM is not set 762# CONFIG_NVRAM is not set
754# CONFIG_GEN_RTC is not set
755# CONFIG_R3964 is not set 763# CONFIG_R3964 is not set
756# CONFIG_APPLICOM is not set 764# CONFIG_APPLICOM is not set
757# CONFIG_RAW_DRIVER is not set 765# CONFIG_RAW_DRIVER is not set
@@ -762,13 +770,6 @@ CONFIG_I2C_BOARDINFO=y
762CONFIG_I2C_CHARDEV=y 770CONFIG_I2C_CHARDEV=y
763 771
764# 772#
765# I2C Algorithms
766#
767# CONFIG_I2C_ALGOBIT is not set
768# CONFIG_I2C_ALGOPCF is not set
769# CONFIG_I2C_ALGOPCA is not set
770
771#
772# I2C Hardware Bus support 773# I2C Hardware Bus support
773# 774#
774# CONFIG_I2C_ALI1535 is not set 775# CONFIG_I2C_ALI1535 is not set
@@ -795,6 +796,7 @@ CONFIG_I2C_MPC=y
795# CONFIG_I2C_VIA is not set 796# CONFIG_I2C_VIA is not set
796# CONFIG_I2C_VIAPRO is not set 797# CONFIG_I2C_VIAPRO is not set
797# CONFIG_I2C_VOODOO3 is not set 798# CONFIG_I2C_VOODOO3 is not set
799# CONFIG_I2C_PCA_PLATFORM is not set
798 800
799# 801#
800# Miscellaneous I2C Chip support 802# Miscellaneous I2C Chip support
@@ -804,17 +806,12 @@ CONFIG_I2C_MPC=y
804# CONFIG_SENSORS_PCF8574 is not set 806# CONFIG_SENSORS_PCF8574 is not set
805# CONFIG_PCF8575 is not set 807# CONFIG_PCF8575 is not set
806# CONFIG_SENSORS_PCF8591 is not set 808# CONFIG_SENSORS_PCF8591 is not set
807# CONFIG_TPS65010 is not set
808# CONFIG_SENSORS_MAX6875 is not set 809# CONFIG_SENSORS_MAX6875 is not set
809# CONFIG_SENSORS_TSL2550 is not set 810# CONFIG_SENSORS_TSL2550 is not set
810# CONFIG_I2C_DEBUG_CORE is not set 811# CONFIG_I2C_DEBUG_CORE is not set
811# CONFIG_I2C_DEBUG_ALGO is not set 812# CONFIG_I2C_DEBUG_ALGO is not set
812# CONFIG_I2C_DEBUG_BUS is not set 813# CONFIG_I2C_DEBUG_BUS is not set
813# CONFIG_I2C_DEBUG_CHIP is not set 814# CONFIG_I2C_DEBUG_CHIP is not set
814
815#
816# SPI support
817#
818CONFIG_SPI=y 815CONFIG_SPI=y
819# CONFIG_SPI_DEBUG is not set 816# CONFIG_SPI_DEBUG is not set
820CONFIG_SPI_MASTER=y 817CONFIG_SPI_MASTER=y
@@ -919,12 +916,22 @@ CONFIG_SSB_POSSIBLE=y
919# Multifunction device drivers 916# Multifunction device drivers
920# 917#
921# CONFIG_MFD_SM501 is not set 918# CONFIG_MFD_SM501 is not set
919# CONFIG_HTC_PASIC3 is not set
922 920
923# 921#
924# Multimedia devices 922# Multimedia devices
925# 923#
924
925#
926# Multimedia core support
927#
926# CONFIG_VIDEO_DEV is not set 928# CONFIG_VIDEO_DEV is not set
927# CONFIG_DVB_CORE is not set 929# CONFIG_DVB_CORE is not set
930# CONFIG_VIDEO_MEDIA is not set
931
932#
933# Multimedia drivers
934#
928CONFIG_DAB=y 935CONFIG_DAB=y
929# CONFIG_USB_DABUSB is not set 936# CONFIG_USB_DABUSB is not set
930 937
@@ -977,16 +984,20 @@ CONFIG_USB_DEVICEFS=y
977CONFIG_USB_DEVICE_CLASS=y 984CONFIG_USB_DEVICE_CLASS=y
978# CONFIG_USB_DYNAMIC_MINORS is not set 985# CONFIG_USB_DYNAMIC_MINORS is not set
979# CONFIG_USB_OTG is not set 986# CONFIG_USB_OTG is not set
987# CONFIG_USB_OTG_WHITELIST is not set
988# CONFIG_USB_OTG_BLACKLIST_HUB is not set
980 989
981# 990#
982# USB Host Controller Drivers 991# USB Host Controller Drivers
983# 992#
993# CONFIG_USB_C67X00_HCD is not set
984CONFIG_USB_EHCI_HCD=y 994CONFIG_USB_EHCI_HCD=y
985CONFIG_USB_EHCI_ROOT_HUB_TT=y 995CONFIG_USB_EHCI_ROOT_HUB_TT=y
986# CONFIG_USB_EHCI_TT_NEWSCHED is not set 996# CONFIG_USB_EHCI_TT_NEWSCHED is not set
987CONFIG_USB_EHCI_FSL=y 997CONFIG_USB_EHCI_FSL=y
988CONFIG_USB_EHCI_HCD_PPC_OF=y 998CONFIG_USB_EHCI_HCD_PPC_OF=y
989# CONFIG_USB_ISP116X_HCD is not set 999# CONFIG_USB_ISP116X_HCD is not set
1000# CONFIG_USB_ISP1760_HCD is not set
990CONFIG_USB_OHCI_HCD=y 1001CONFIG_USB_OHCI_HCD=y
991CONFIG_USB_OHCI_HCD_PPC_OF=y 1002CONFIG_USB_OHCI_HCD_PPC_OF=y
992CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1003CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
@@ -1004,6 +1015,7 @@ CONFIG_USB_UHCI_HCD=y
1004# 1015#
1005# CONFIG_USB_ACM is not set 1016# CONFIG_USB_ACM is not set
1006# CONFIG_USB_PRINTER is not set 1017# CONFIG_USB_PRINTER is not set
1018# CONFIG_USB_WDM is not set
1007 1019
1008# 1020#
1009# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1021# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1023,7 +1035,9 @@ CONFIG_USB_STORAGE=y
1023# CONFIG_USB_STORAGE_SDDR55 is not set 1035# CONFIG_USB_STORAGE_SDDR55 is not set
1024# CONFIG_USB_STORAGE_JUMPSHOT is not set 1036# CONFIG_USB_STORAGE_JUMPSHOT is not set
1025# CONFIG_USB_STORAGE_ALAUDA is not set 1037# CONFIG_USB_STORAGE_ALAUDA is not set
1038# CONFIG_USB_STORAGE_ONETOUCH is not set
1026# CONFIG_USB_STORAGE_KARMA is not set 1039# CONFIG_USB_STORAGE_KARMA is not set
1040# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1027# CONFIG_USB_LIBUSUAL is not set 1041# CONFIG_USB_LIBUSUAL is not set
1028 1042
1029# 1043#
@@ -1061,6 +1075,7 @@ CONFIG_USB_MON=y
1061# CONFIG_USB_TRANCEVIBRATOR is not set 1075# CONFIG_USB_TRANCEVIBRATOR is not set
1062# CONFIG_USB_IOWARRIOR is not set 1076# CONFIG_USB_IOWARRIOR is not set
1063# CONFIG_USB_TEST is not set 1077# CONFIG_USB_TEST is not set
1078# CONFIG_USB_ISIGHTFW is not set
1064CONFIG_USB_GADGET=y 1079CONFIG_USB_GADGET=y
1065# CONFIG_USB_GADGET_DEBUG is not set 1080# CONFIG_USB_GADGET_DEBUG is not set
1066# CONFIG_USB_GADGET_DEBUG_FILES is not set 1081# CONFIG_USB_GADGET_DEBUG_FILES is not set
@@ -1072,6 +1087,7 @@ CONFIG_USB_GADGET_NET2280=y
1072CONFIG_USB_NET2280=y 1087CONFIG_USB_NET2280=y
1073# CONFIG_USB_GADGET_PXA2XX is not set 1088# CONFIG_USB_GADGET_PXA2XX is not set
1074# CONFIG_USB_GADGET_M66592 is not set 1089# CONFIG_USB_GADGET_M66592 is not set
1090# CONFIG_USB_GADGET_PXA27X is not set
1075# CONFIG_USB_GADGET_GOKU is not set 1091# CONFIG_USB_GADGET_GOKU is not set
1076# CONFIG_USB_GADGET_LH7A40X is not set 1092# CONFIG_USB_GADGET_LH7A40X is not set
1077# CONFIG_USB_GADGET_OMAP is not set 1093# CONFIG_USB_GADGET_OMAP is not set
@@ -1090,6 +1106,7 @@ CONFIG_USB_ETH_RNDIS=y
1090# CONFIG_MMC is not set 1106# CONFIG_MMC is not set
1091# CONFIG_MEMSTICK is not set 1107# CONFIG_MEMSTICK is not set
1092# CONFIG_NEW_LEDS is not set 1108# CONFIG_NEW_LEDS is not set
1109# CONFIG_ACCESSIBILITY is not set
1093# CONFIG_INFINIBAND is not set 1110# CONFIG_INFINIBAND is not set
1094# CONFIG_EDAC is not set 1111# CONFIG_EDAC is not set
1095CONFIG_RTC_LIB=y 1112CONFIG_RTC_LIB=y
@@ -1144,11 +1161,8 @@ CONFIG_RTC_DRV_DS1307=y
1144# 1161#
1145# on-CPU RTC drivers 1162# on-CPU RTC drivers
1146# 1163#
1164# CONFIG_RTC_DRV_PPC is not set
1147# CONFIG_DMADEVICES is not set 1165# CONFIG_DMADEVICES is not set
1148
1149#
1150# Userspace I/O
1151#
1152# CONFIG_UIO is not set 1166# CONFIG_UIO is not set
1153 1167
1154# 1168#
@@ -1168,7 +1182,6 @@ CONFIG_FS_MBCACHE=y
1168# CONFIG_JFS_FS is not set 1182# CONFIG_JFS_FS is not set
1169# CONFIG_FS_POSIX_ACL is not set 1183# CONFIG_FS_POSIX_ACL is not set
1170# CONFIG_XFS_FS is not set 1184# CONFIG_XFS_FS is not set
1171# CONFIG_GFS2_FS is not set
1172# CONFIG_OCFS2_FS is not set 1185# CONFIG_OCFS2_FS is not set
1173CONFIG_DNOTIFY=y 1186CONFIG_DNOTIFY=y
1174CONFIG_INOTIFY=y 1187CONFIG_INOTIFY=y
@@ -1237,7 +1250,6 @@ CONFIG_NFS_FS=y
1237CONFIG_NFS_V3=y 1250CONFIG_NFS_V3=y
1238# CONFIG_NFS_V3_ACL is not set 1251# CONFIG_NFS_V3_ACL is not set
1239CONFIG_NFS_V4=y 1252CONFIG_NFS_V4=y
1240# CONFIG_NFS_DIRECTIO is not set
1241# CONFIG_NFSD is not set 1253# CONFIG_NFSD is not set
1242CONFIG_ROOT_NFS=y 1254CONFIG_ROOT_NFS=y
1243CONFIG_LOCKD=y 1255CONFIG_LOCKD=y
@@ -1282,6 +1294,7 @@ CONFIG_MSDOS_PARTITION=y
1282# Library routines 1294# Library routines
1283# 1295#
1284CONFIG_BITREVERSE=y 1296CONFIG_BITREVERSE=y
1297# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1285# CONFIG_CRC_CCITT is not set 1298# CONFIG_CRC_CCITT is not set
1286# CONFIG_CRC16 is not set 1299# CONFIG_CRC16 is not set
1287# CONFIG_CRC_ITU_T is not set 1300# CONFIG_CRC_ITU_T is not set
@@ -1302,6 +1315,7 @@ CONFIG_HAVE_LMB=y
1302# CONFIG_PRINTK_TIME is not set 1315# CONFIG_PRINTK_TIME is not set
1303CONFIG_ENABLE_WARN_DEPRECATED=y 1316CONFIG_ENABLE_WARN_DEPRECATED=y
1304CONFIG_ENABLE_MUST_CHECK=y 1317CONFIG_ENABLE_MUST_CHECK=y
1318CONFIG_FRAME_WARN=1024
1305# CONFIG_MAGIC_SYSRQ is not set 1319# CONFIG_MAGIC_SYSRQ is not set
1306# CONFIG_UNUSED_SYMBOLS is not set 1320# CONFIG_UNUSED_SYMBOLS is not set
1307# CONFIG_DEBUG_FS is not set 1321# CONFIG_DEBUG_FS is not set
@@ -1312,6 +1326,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1312CONFIG_SCHED_DEBUG=y 1326CONFIG_SCHED_DEBUG=y
1313# CONFIG_SCHEDSTATS is not set 1327# CONFIG_SCHEDSTATS is not set
1314# CONFIG_TIMER_STATS is not set 1328# CONFIG_TIMER_STATS is not set
1329# CONFIG_DEBUG_OBJECTS is not set
1315# CONFIG_SLUB_DEBUG_ON is not set 1330# CONFIG_SLUB_DEBUG_ON is not set
1316# CONFIG_SLUB_STATS is not set 1331# CONFIG_SLUB_STATS is not set
1317# CONFIG_DEBUG_RT_MUTEXES is not set 1332# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1324,6 +1339,7 @@ CONFIG_SCHED_DEBUG=y
1324# CONFIG_DEBUG_BUGVERBOSE is not set 1339# CONFIG_DEBUG_BUGVERBOSE is not set
1325# CONFIG_DEBUG_INFO is not set 1340# CONFIG_DEBUG_INFO is not set
1326# CONFIG_DEBUG_VM is not set 1341# CONFIG_DEBUG_VM is not set
1342# CONFIG_DEBUG_WRITECOUNT is not set
1327# CONFIG_DEBUG_LIST is not set 1343# CONFIG_DEBUG_LIST is not set
1328# CONFIG_DEBUG_SG is not set 1344# CONFIG_DEBUG_SG is not set
1329# CONFIG_BOOT_PRINTK_DELAY is not set 1345# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1335,6 +1351,7 @@ CONFIG_SCHED_DEBUG=y
1335# CONFIG_DEBUG_STACK_USAGE is not set 1351# CONFIG_DEBUG_STACK_USAGE is not set
1336# CONFIG_DEBUG_PAGEALLOC is not set 1352# CONFIG_DEBUG_PAGEALLOC is not set
1337# CONFIG_DEBUGGER is not set 1353# CONFIG_DEBUGGER is not set
1354# CONFIG_IRQSTACKS is not set
1338# CONFIG_BDI_SWITCH is not set 1355# CONFIG_BDI_SWITCH is not set
1339# CONFIG_PPC_EARLY_DEBUG is not set 1356# CONFIG_PPC_EARLY_DEBUG is not set
1340 1357
@@ -1345,51 +1362,81 @@ CONFIG_SCHED_DEBUG=y
1345# CONFIG_SECURITY is not set 1362# CONFIG_SECURITY is not set
1346# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1363# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1347CONFIG_CRYPTO=y 1364CONFIG_CRYPTO=y
1365
1366#
1367# Crypto core or helper
1368#
1348CONFIG_CRYPTO_ALGAPI=y 1369CONFIG_CRYPTO_ALGAPI=y
1349CONFIG_CRYPTO_BLKCIPHER=y 1370CONFIG_CRYPTO_BLKCIPHER=y
1350# CONFIG_CRYPTO_SEQIV is not set
1351CONFIG_CRYPTO_MANAGER=y 1371CONFIG_CRYPTO_MANAGER=y
1372# CONFIG_CRYPTO_GF128MUL is not set
1373# CONFIG_CRYPTO_NULL is not set
1374# CONFIG_CRYPTO_CRYPTD is not set
1375# CONFIG_CRYPTO_AUTHENC is not set
1376# CONFIG_CRYPTO_TEST is not set
1377
1378#
1379# Authenticated Encryption with Associated Data
1380#
1381# CONFIG_CRYPTO_CCM is not set
1382# CONFIG_CRYPTO_GCM is not set
1383# CONFIG_CRYPTO_SEQIV is not set
1384
1385#
1386# Block modes
1387#
1388CONFIG_CRYPTO_CBC=y
1389# CONFIG_CRYPTO_CTR is not set
1390# CONFIG_CRYPTO_CTS is not set
1391# CONFIG_CRYPTO_ECB is not set
1392# CONFIG_CRYPTO_LRW is not set
1393CONFIG_CRYPTO_PCBC=m
1394# CONFIG_CRYPTO_XTS is not set
1395
1396#
1397# Hash modes
1398#
1352# CONFIG_CRYPTO_HMAC is not set 1399# CONFIG_CRYPTO_HMAC is not set
1353# CONFIG_CRYPTO_XCBC is not set 1400# CONFIG_CRYPTO_XCBC is not set
1354# CONFIG_CRYPTO_NULL is not set 1401
1402#
1403# Digest
1404#
1405# CONFIG_CRYPTO_CRC32C is not set
1355# CONFIG_CRYPTO_MD4 is not set 1406# CONFIG_CRYPTO_MD4 is not set
1356CONFIG_CRYPTO_MD5=y 1407CONFIG_CRYPTO_MD5=y
1408# CONFIG_CRYPTO_MICHAEL_MIC is not set
1357# CONFIG_CRYPTO_SHA1 is not set 1409# CONFIG_CRYPTO_SHA1 is not set
1358# CONFIG_CRYPTO_SHA256 is not set 1410# CONFIG_CRYPTO_SHA256 is not set
1359# CONFIG_CRYPTO_SHA512 is not set 1411# CONFIG_CRYPTO_SHA512 is not set
1360# CONFIG_CRYPTO_WP512 is not set
1361# CONFIG_CRYPTO_TGR192 is not set 1412# CONFIG_CRYPTO_TGR192 is not set
1362# CONFIG_CRYPTO_GF128MUL is not set 1413# CONFIG_CRYPTO_WP512 is not set
1363# CONFIG_CRYPTO_ECB is not set 1414
1364CONFIG_CRYPTO_CBC=y 1415#
1365CONFIG_CRYPTO_PCBC=m 1416# Ciphers
1366# CONFIG_CRYPTO_LRW is not set 1417#
1367# CONFIG_CRYPTO_XTS is not set
1368# CONFIG_CRYPTO_CTR is not set
1369# CONFIG_CRYPTO_GCM is not set
1370# CONFIG_CRYPTO_CCM is not set
1371# CONFIG_CRYPTO_CRYPTD is not set
1372CONFIG_CRYPTO_DES=y
1373# CONFIG_CRYPTO_FCRYPT is not set
1374# CONFIG_CRYPTO_BLOWFISH is not set
1375# CONFIG_CRYPTO_TWOFISH is not set
1376# CONFIG_CRYPTO_SERPENT is not set
1377# CONFIG_CRYPTO_AES is not set 1418# CONFIG_CRYPTO_AES is not set
1419# CONFIG_CRYPTO_ANUBIS is not set
1420# CONFIG_CRYPTO_ARC4 is not set
1421# CONFIG_CRYPTO_BLOWFISH is not set
1422# CONFIG_CRYPTO_CAMELLIA is not set
1378# CONFIG_CRYPTO_CAST5 is not set 1423# CONFIG_CRYPTO_CAST5 is not set
1379# CONFIG_CRYPTO_CAST6 is not set 1424# CONFIG_CRYPTO_CAST6 is not set
1380# CONFIG_CRYPTO_TEA is not set 1425CONFIG_CRYPTO_DES=y
1381# CONFIG_CRYPTO_ARC4 is not set 1426# CONFIG_CRYPTO_FCRYPT is not set
1382# CONFIG_CRYPTO_KHAZAD is not set 1427# CONFIG_CRYPTO_KHAZAD is not set
1383# CONFIG_CRYPTO_ANUBIS is not set
1384# CONFIG_CRYPTO_SEED is not set
1385# CONFIG_CRYPTO_SALSA20 is not set 1428# CONFIG_CRYPTO_SALSA20 is not set
1429# CONFIG_CRYPTO_SEED is not set
1430# CONFIG_CRYPTO_SERPENT is not set
1431# CONFIG_CRYPTO_TEA is not set
1432# CONFIG_CRYPTO_TWOFISH is not set
1433
1434#
1435# Compression
1436#
1386# CONFIG_CRYPTO_DEFLATE is not set 1437# CONFIG_CRYPTO_DEFLATE is not set
1387# CONFIG_CRYPTO_MICHAEL_MIC is not set
1388# CONFIG_CRYPTO_CRC32C is not set
1389# CONFIG_CRYPTO_CAMELLIA is not set
1390# CONFIG_CRYPTO_TEST is not set
1391# CONFIG_CRYPTO_AUTHENC is not set
1392# CONFIG_CRYPTO_LZO is not set 1438# CONFIG_CRYPTO_LZO is not set
1393CONFIG_CRYPTO_HW=y 1439CONFIG_CRYPTO_HW=y
1394# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1440# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1395# CONFIG_PPC_CLOCK is not set 1441# CONFIG_PPC_CLOCK is not set
1442# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig
index 1f57456dd81e..9bc3a03ae264 100644
--- a/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig
+++ b/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:15 2008 4# Mon Jun 9 08:52:21 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89# CONFIG_KALLSYMS is not set 92# CONFIG_KALLSYMS is not set
90CONFIG_HOTPLUG=y 93CONFIG_HOTPLUG=y
91CONFIG_PRINTK=y 94CONFIG_PRINTK=y
@@ -110,12 +113,14 @@ CONFIG_SLUB=y
110CONFIG_HAVE_OPROFILE=y 113CONFIG_HAVE_OPROFILE=y
111CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
112CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
116# CONFIG_HAVE_DMA_ATTRS is not set
113CONFIG_PROC_PAGE_MONITOR=y 117CONFIG_PROC_PAGE_MONITOR=y
114CONFIG_SLABINFO=y 118CONFIG_SLABINFO=y
115CONFIG_RT_MUTEXES=y 119CONFIG_RT_MUTEXES=y
116# CONFIG_TINY_SHMEM is not set 120# CONFIG_TINY_SHMEM is not set
117CONFIG_BASE_SMALL=0 121CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 122CONFIG_MODULES=y
123# CONFIG_MODULE_FORCE_LOAD is not set
119CONFIG_MODULE_UNLOAD=y 124CONFIG_MODULE_UNLOAD=y
120# CONFIG_MODULE_FORCE_UNLOAD is not set 125# CONFIG_MODULE_FORCE_UNLOAD is not set
121# CONFIG_MODVERSIONS is not set 126# CONFIG_MODVERSIONS is not set
@@ -210,11 +215,13 @@ CONFIG_FLATMEM=y
210CONFIG_FLAT_NODE_MEM_MAP=y 215CONFIG_FLAT_NODE_MEM_MAP=y
211# CONFIG_SPARSEMEM_STATIC is not set 216# CONFIG_SPARSEMEM_STATIC is not set
212# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
218CONFIG_PAGEFLAGS_EXTENDED=y
213CONFIG_SPLIT_PTLOCK_CPUS=4 219CONFIG_SPLIT_PTLOCK_CPUS=4
214# CONFIG_RESOURCES_64BIT is not set 220# CONFIG_RESOURCES_64BIT is not set
215CONFIG_ZONE_DMA_FLAG=1 221CONFIG_ZONE_DMA_FLAG=1
216CONFIG_BOUNCE=y 222CONFIG_BOUNCE=y
217CONFIG_VIRT_TO_BUS=y 223CONFIG_VIRT_TO_BUS=y
224CONFIG_FORCE_MAX_ZONEORDER=11
218CONFIG_PROC_DEVICETREE=y 225CONFIG_PROC_DEVICETREE=y
219# CONFIG_CMDLINE_BOOL is not set 226# CONFIG_CMDLINE_BOOL is not set
220# CONFIG_PM is not set 227# CONFIG_PM is not set
@@ -238,6 +245,7 @@ CONFIG_PCI_LEGACY=y
238# CONFIG_PCI_DEBUG is not set 245# CONFIG_PCI_DEBUG is not set
239# CONFIG_PCCARD is not set 246# CONFIG_PCCARD is not set
240# CONFIG_HOTPLUG_PCI is not set 247# CONFIG_HOTPLUG_PCI is not set
248# CONFIG_HAS_RAPIDIO is not set
241 249
242# 250#
243# Advanced setup 251# Advanced setup
@@ -247,11 +255,11 @@ CONFIG_PCI_LEGACY=y
247# 255#
248# Default settings for advanced configuration options are used 256# Default settings for advanced configuration options are used
249# 257#
250CONFIG_HIGHMEM_START=0xfe000000
251CONFIG_LOWMEM_SIZE=0x30000000 258CONFIG_LOWMEM_SIZE=0x30000000
259CONFIG_PAGE_OFFSET=0xc0000000
252CONFIG_KERNEL_START=0xc0000000 260CONFIG_KERNEL_START=0xc0000000
261CONFIG_PHYSICAL_START=0x00000000
253CONFIG_TASK_SIZE=0xc0000000 262CONFIG_TASK_SIZE=0xc0000000
254CONFIG_BOOT_LOAD=0x00800000
255 263
256# 264#
257# Networking 265# Networking
@@ -299,8 +307,6 @@ CONFIG_TCP_CONG_CUBIC=y
299CONFIG_DEFAULT_TCP_CONG="cubic" 307CONFIG_DEFAULT_TCP_CONG="cubic"
300# CONFIG_TCP_MD5SIG is not set 308# CONFIG_TCP_MD5SIG is not set
301# CONFIG_IPV6 is not set 309# CONFIG_IPV6 is not set
302# CONFIG_INET6_XFRM_TUNNEL is not set
303# CONFIG_INET6_TUNNEL is not set
304# CONFIG_NETWORK_SECMARK is not set 310# CONFIG_NETWORK_SECMARK is not set
305# CONFIG_NETFILTER is not set 311# CONFIG_NETFILTER is not set
306# CONFIG_IP_DCCP is not set 312# CONFIG_IP_DCCP is not set
@@ -361,6 +367,7 @@ CONFIG_MTD_PARTITIONS=y
361# CONFIG_MTD_REDBOOT_PARTS is not set 367# CONFIG_MTD_REDBOOT_PARTS is not set
362# CONFIG_MTD_CMDLINE_PARTS is not set 368# CONFIG_MTD_CMDLINE_PARTS is not set
363# CONFIG_MTD_OF_PARTS is not set 369# CONFIG_MTD_OF_PARTS is not set
370# CONFIG_MTD_AR7_PARTS is not set
364 371
365# 372#
366# User Modules And Translation Layers 373# User Modules And Translation Layers
@@ -444,6 +451,7 @@ CONFIG_MTD_NAND_IDS=y
444# 451#
445# CONFIG_MTD_UBI is not set 452# CONFIG_MTD_UBI is not set
446CONFIG_OF_DEVICE=y 453CONFIG_OF_DEVICE=y
454CONFIG_OF_I2C=y
447# CONFIG_PARPORT is not set 455# CONFIG_PARPORT is not set
448CONFIG_BLK_DEV=y 456CONFIG_BLK_DEV=y
449# CONFIG_BLK_DEV_FD is not set 457# CONFIG_BLK_DEV_FD is not set
@@ -549,7 +557,11 @@ CONFIG_SCSI_LOWLEVEL=y
549# CONFIG_SCSI_SRP is not set 557# CONFIG_SCSI_SRP is not set
550CONFIG_ATA=y 558CONFIG_ATA=y
551# CONFIG_ATA_NONSTANDARD is not set 559# CONFIG_ATA_NONSTANDARD is not set
560CONFIG_SATA_PMP=y
552# CONFIG_SATA_AHCI is not set 561# CONFIG_SATA_AHCI is not set
562# CONFIG_SATA_SIL24 is not set
563CONFIG_SATA_FSL=y
564CONFIG_ATA_SFF=y
553# CONFIG_SATA_SVW is not set 565# CONFIG_SATA_SVW is not set
554# CONFIG_ATA_PIIX is not set 566# CONFIG_ATA_PIIX is not set
555# CONFIG_SATA_MV is not set 567# CONFIG_SATA_MV is not set
@@ -559,13 +571,11 @@ CONFIG_ATA=y
559# CONFIG_SATA_PROMISE is not set 571# CONFIG_SATA_PROMISE is not set
560# CONFIG_SATA_SX4 is not set 572# CONFIG_SATA_SX4 is not set
561# CONFIG_SATA_SIL is not set 573# CONFIG_SATA_SIL is not set
562# CONFIG_SATA_SIL24 is not set
563# CONFIG_SATA_SIS is not set 574# CONFIG_SATA_SIS is not set
564# CONFIG_SATA_ULI is not set 575# CONFIG_SATA_ULI is not set
565# CONFIG_SATA_VIA is not set 576# CONFIG_SATA_VIA is not set
566# CONFIG_SATA_VITESSE is not set 577# CONFIG_SATA_VITESSE is not set
567# CONFIG_SATA_INIC162X is not set 578# CONFIG_SATA_INIC162X is not set
568CONFIG_SATA_FSL=y
569# CONFIG_PATA_ALI is not set 579# CONFIG_PATA_ALI is not set
570# CONFIG_PATA_AMD is not set 580# CONFIG_PATA_AMD is not set
571# CONFIG_PATA_ARTOP is not set 581# CONFIG_PATA_ARTOP is not set
@@ -605,6 +615,7 @@ CONFIG_SATA_FSL=y
605# CONFIG_PATA_VIA is not set 615# CONFIG_PATA_VIA is not set
606# CONFIG_PATA_WINBOND is not set 616# CONFIG_PATA_WINBOND is not set
607# CONFIG_PATA_PLATFORM is not set 617# CONFIG_PATA_PLATFORM is not set
618# CONFIG_PATA_SCH is not set
608CONFIG_MD=y 619CONFIG_MD=y
609CONFIG_BLK_DEV_MD=y 620CONFIG_BLK_DEV_MD=y
610CONFIG_MD_LINEAR=y 621CONFIG_MD_LINEAR=y
@@ -698,7 +709,6 @@ CONFIG_NETDEV_1000=y
698# CONFIG_SIS190 is not set 709# CONFIG_SIS190 is not set
699# CONFIG_SKGE is not set 710# CONFIG_SKGE is not set
700# CONFIG_SKY2 is not set 711# CONFIG_SKY2 is not set
701# CONFIG_SK98LIN is not set
702# CONFIG_VIA_VELOCITY is not set 712# CONFIG_VIA_VELOCITY is not set
703# CONFIG_TIGON3 is not set 713# CONFIG_TIGON3 is not set
704# CONFIG_BNX2 is not set 714# CONFIG_BNX2 is not set
@@ -718,6 +728,7 @@ CONFIG_NETDEV_10000=y
718# CONFIG_MLX4_CORE is not set 728# CONFIG_MLX4_CORE is not set
719# CONFIG_TEHUTI is not set 729# CONFIG_TEHUTI is not set
720# CONFIG_BNX2X is not set 730# CONFIG_BNX2X is not set
731# CONFIG_SFC is not set
721# CONFIG_TR is not set 732# CONFIG_TR is not set
722 733
723# 734#
@@ -725,6 +736,7 @@ CONFIG_NETDEV_10000=y
725# 736#
726# CONFIG_WLAN_PRE80211 is not set 737# CONFIG_WLAN_PRE80211 is not set
727# CONFIG_WLAN_80211 is not set 738# CONFIG_WLAN_80211 is not set
739# CONFIG_IWLWIFI_LEDS is not set
728 740
729# 741#
730# USB Network Adapters 742# USB Network Adapters
@@ -781,6 +793,7 @@ CONFIG_INPUT=y
781# Character devices 793# Character devices
782# 794#
783# CONFIG_VT is not set 795# CONFIG_VT is not set
796CONFIG_DEVKMEM=y
784# CONFIG_SERIAL_NONSTANDARD is not set 797# CONFIG_SERIAL_NONSTANDARD is not set
785# CONFIG_NOZOMI is not set 798# CONFIG_NOZOMI is not set
786 799
@@ -808,7 +821,6 @@ CONFIG_LEGACY_PTY_COUNT=256
808# CONFIG_IPMI_HANDLER is not set 821# CONFIG_IPMI_HANDLER is not set
809CONFIG_HW_RANDOM=y 822CONFIG_HW_RANDOM=y
810# CONFIG_NVRAM is not set 823# CONFIG_NVRAM is not set
811# CONFIG_GEN_RTC is not set
812# CONFIG_R3964 is not set 824# CONFIG_R3964 is not set
813# CONFIG_APPLICOM is not set 825# CONFIG_APPLICOM is not set
814# CONFIG_RAW_DRIVER is not set 826# CONFIG_RAW_DRIVER is not set
@@ -819,13 +831,6 @@ CONFIG_I2C_BOARDINFO=y
819CONFIG_I2C_CHARDEV=y 831CONFIG_I2C_CHARDEV=y
820 832
821# 833#
822# I2C Algorithms
823#
824# CONFIG_I2C_ALGOBIT is not set
825# CONFIG_I2C_ALGOPCF is not set
826# CONFIG_I2C_ALGOPCA is not set
827
828#
829# I2C Hardware Bus support 834# I2C Hardware Bus support
830# 835#
831# CONFIG_I2C_ALI1535 is not set 836# CONFIG_I2C_ALI1535 is not set
@@ -852,6 +857,7 @@ CONFIG_I2C_MPC=y
852# CONFIG_I2C_VIA is not set 857# CONFIG_I2C_VIA is not set
853# CONFIG_I2C_VIAPRO is not set 858# CONFIG_I2C_VIAPRO is not set
854# CONFIG_I2C_VOODOO3 is not set 859# CONFIG_I2C_VOODOO3 is not set
860# CONFIG_I2C_PCA_PLATFORM is not set
855 861
856# 862#
857# Miscellaneous I2C Chip support 863# Miscellaneous I2C Chip support
@@ -861,17 +867,12 @@ CONFIG_I2C_MPC=y
861# CONFIG_SENSORS_PCF8574 is not set 867# CONFIG_SENSORS_PCF8574 is not set
862# CONFIG_PCF8575 is not set 868# CONFIG_PCF8575 is not set
863# CONFIG_SENSORS_PCF8591 is not set 869# CONFIG_SENSORS_PCF8591 is not set
864# CONFIG_TPS65010 is not set
865# CONFIG_SENSORS_MAX6875 is not set 870# CONFIG_SENSORS_MAX6875 is not set
866# CONFIG_SENSORS_TSL2550 is not set 871# CONFIG_SENSORS_TSL2550 is not set
867# CONFIG_I2C_DEBUG_CORE is not set 872# CONFIG_I2C_DEBUG_CORE is not set
868# CONFIG_I2C_DEBUG_ALGO is not set 873# CONFIG_I2C_DEBUG_ALGO is not set
869# CONFIG_I2C_DEBUG_BUS is not set 874# CONFIG_I2C_DEBUG_BUS is not set
870# CONFIG_I2C_DEBUG_CHIP is not set 875# CONFIG_I2C_DEBUG_CHIP is not set
871
872#
873# SPI support
874#
875CONFIG_SPI=y 876CONFIG_SPI=y
876# CONFIG_SPI_DEBUG is not set 877# CONFIG_SPI_DEBUG is not set
877CONFIG_SPI_MASTER=y 878CONFIG_SPI_MASTER=y
@@ -976,12 +977,22 @@ CONFIG_SSB_POSSIBLE=y
976# Multifunction device drivers 977# Multifunction device drivers
977# 978#
978# CONFIG_MFD_SM501 is not set 979# CONFIG_MFD_SM501 is not set
980# CONFIG_HTC_PASIC3 is not set
979 981
980# 982#
981# Multimedia devices 983# Multimedia devices
982# 984#
985
986#
987# Multimedia core support
988#
983# CONFIG_VIDEO_DEV is not set 989# CONFIG_VIDEO_DEV is not set
984# CONFIG_DVB_CORE is not set 990# CONFIG_DVB_CORE is not set
991# CONFIG_VIDEO_MEDIA is not set
992
993#
994# Multimedia drivers
995#
985CONFIG_DAB=y 996CONFIG_DAB=y
986# CONFIG_USB_DABUSB is not set 997# CONFIG_USB_DABUSB is not set
987 998
@@ -1034,16 +1045,20 @@ CONFIG_USB_DEVICEFS=y
1034CONFIG_USB_DEVICE_CLASS=y 1045CONFIG_USB_DEVICE_CLASS=y
1035# CONFIG_USB_DYNAMIC_MINORS is not set 1046# CONFIG_USB_DYNAMIC_MINORS is not set
1036# CONFIG_USB_OTG is not set 1047# CONFIG_USB_OTG is not set
1048# CONFIG_USB_OTG_WHITELIST is not set
1049# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1037 1050
1038# 1051#
1039# USB Host Controller Drivers 1052# USB Host Controller Drivers
1040# 1053#
1054# CONFIG_USB_C67X00_HCD is not set
1041CONFIG_USB_EHCI_HCD=y 1055CONFIG_USB_EHCI_HCD=y
1042CONFIG_USB_EHCI_ROOT_HUB_TT=y 1056CONFIG_USB_EHCI_ROOT_HUB_TT=y
1043# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1057# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1044CONFIG_USB_EHCI_FSL=y 1058CONFIG_USB_EHCI_FSL=y
1045CONFIG_USB_EHCI_HCD_PPC_OF=y 1059CONFIG_USB_EHCI_HCD_PPC_OF=y
1046# CONFIG_USB_ISP116X_HCD is not set 1060# CONFIG_USB_ISP116X_HCD is not set
1061# CONFIG_USB_ISP1760_HCD is not set
1047CONFIG_USB_OHCI_HCD=y 1062CONFIG_USB_OHCI_HCD=y
1048CONFIG_USB_OHCI_HCD_PPC_OF=y 1063CONFIG_USB_OHCI_HCD_PPC_OF=y
1049CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1064CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
@@ -1061,6 +1076,7 @@ CONFIG_USB_UHCI_HCD=y
1061# 1076#
1062# CONFIG_USB_ACM is not set 1077# CONFIG_USB_ACM is not set
1063# CONFIG_USB_PRINTER is not set 1078# CONFIG_USB_PRINTER is not set
1079# CONFIG_USB_WDM is not set
1064 1080
1065# 1081#
1066# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1082# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1080,7 +1096,9 @@ CONFIG_USB_STORAGE=y
1080# CONFIG_USB_STORAGE_SDDR55 is not set 1096# CONFIG_USB_STORAGE_SDDR55 is not set
1081# CONFIG_USB_STORAGE_JUMPSHOT is not set 1097# CONFIG_USB_STORAGE_JUMPSHOT is not set
1082# CONFIG_USB_STORAGE_ALAUDA is not set 1098# CONFIG_USB_STORAGE_ALAUDA is not set
1099# CONFIG_USB_STORAGE_ONETOUCH is not set
1083# CONFIG_USB_STORAGE_KARMA is not set 1100# CONFIG_USB_STORAGE_KARMA is not set
1101# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1084# CONFIG_USB_LIBUSUAL is not set 1102# CONFIG_USB_LIBUSUAL is not set
1085 1103
1086# 1104#
@@ -1118,6 +1136,7 @@ CONFIG_USB_MON=y
1118# CONFIG_USB_TRANCEVIBRATOR is not set 1136# CONFIG_USB_TRANCEVIBRATOR is not set
1119# CONFIG_USB_IOWARRIOR is not set 1137# CONFIG_USB_IOWARRIOR is not set
1120# CONFIG_USB_TEST is not set 1138# CONFIG_USB_TEST is not set
1139# CONFIG_USB_ISIGHTFW is not set
1121CONFIG_USB_GADGET=y 1140CONFIG_USB_GADGET=y
1122# CONFIG_USB_GADGET_DEBUG is not set 1141# CONFIG_USB_GADGET_DEBUG is not set
1123# CONFIG_USB_GADGET_DEBUG_FILES is not set 1142# CONFIG_USB_GADGET_DEBUG_FILES is not set
@@ -1129,6 +1148,7 @@ CONFIG_USB_GADGET_NET2280=y
1129CONFIG_USB_NET2280=y 1148CONFIG_USB_NET2280=y
1130# CONFIG_USB_GADGET_PXA2XX is not set 1149# CONFIG_USB_GADGET_PXA2XX is not set
1131# CONFIG_USB_GADGET_M66592 is not set 1150# CONFIG_USB_GADGET_M66592 is not set
1151# CONFIG_USB_GADGET_PXA27X is not set
1132# CONFIG_USB_GADGET_GOKU is not set 1152# CONFIG_USB_GADGET_GOKU is not set
1133# CONFIG_USB_GADGET_LH7A40X is not set 1153# CONFIG_USB_GADGET_LH7A40X is not set
1134# CONFIG_USB_GADGET_OMAP is not set 1154# CONFIG_USB_GADGET_OMAP is not set
@@ -1147,6 +1167,7 @@ CONFIG_USB_ETH_RNDIS=y
1147# CONFIG_MMC is not set 1167# CONFIG_MMC is not set
1148# CONFIG_MEMSTICK is not set 1168# CONFIG_MEMSTICK is not set
1149# CONFIG_NEW_LEDS is not set 1169# CONFIG_NEW_LEDS is not set
1170# CONFIG_ACCESSIBILITY is not set
1150# CONFIG_INFINIBAND is not set 1171# CONFIG_INFINIBAND is not set
1151# CONFIG_EDAC is not set 1172# CONFIG_EDAC is not set
1152CONFIG_RTC_LIB=y 1173CONFIG_RTC_LIB=y
@@ -1201,11 +1222,8 @@ CONFIG_RTC_DRV_DS1307=y
1201# 1222#
1202# on-CPU RTC drivers 1223# on-CPU RTC drivers
1203# 1224#
1225# CONFIG_RTC_DRV_PPC is not set
1204# CONFIG_DMADEVICES is not set 1226# CONFIG_DMADEVICES is not set
1205
1206#
1207# Userspace I/O
1208#
1209# CONFIG_UIO is not set 1227# CONFIG_UIO is not set
1210 1228
1211# 1229#
@@ -1225,7 +1243,6 @@ CONFIG_FS_MBCACHE=y
1225# CONFIG_JFS_FS is not set 1243# CONFIG_JFS_FS is not set
1226# CONFIG_FS_POSIX_ACL is not set 1244# CONFIG_FS_POSIX_ACL is not set
1227# CONFIG_XFS_FS is not set 1245# CONFIG_XFS_FS is not set
1228# CONFIG_GFS2_FS is not set
1229# CONFIG_OCFS2_FS is not set 1246# CONFIG_OCFS2_FS is not set
1230CONFIG_DNOTIFY=y 1247CONFIG_DNOTIFY=y
1231CONFIG_INOTIFY=y 1248CONFIG_INOTIFY=y
@@ -1294,7 +1311,6 @@ CONFIG_NFS_FS=y
1294CONFIG_NFS_V3=y 1311CONFIG_NFS_V3=y
1295# CONFIG_NFS_V3_ACL is not set 1312# CONFIG_NFS_V3_ACL is not set
1296CONFIG_NFS_V4=y 1313CONFIG_NFS_V4=y
1297# CONFIG_NFS_DIRECTIO is not set
1298# CONFIG_NFSD is not set 1314# CONFIG_NFSD is not set
1299CONFIG_ROOT_NFS=y 1315CONFIG_ROOT_NFS=y
1300CONFIG_LOCKD=y 1316CONFIG_LOCKD=y
@@ -1339,6 +1355,7 @@ CONFIG_MSDOS_PARTITION=y
1339# Library routines 1355# Library routines
1340# 1356#
1341CONFIG_BITREVERSE=y 1357CONFIG_BITREVERSE=y
1358# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1342# CONFIG_CRC_CCITT is not set 1359# CONFIG_CRC_CCITT is not set
1343# CONFIG_CRC16 is not set 1360# CONFIG_CRC16 is not set
1344# CONFIG_CRC_ITU_T is not set 1361# CONFIG_CRC_ITU_T is not set
@@ -1351,6 +1368,7 @@ CONFIG_PLIST=y
1351CONFIG_HAS_IOMEM=y 1368CONFIG_HAS_IOMEM=y
1352CONFIG_HAS_IOPORT=y 1369CONFIG_HAS_IOPORT=y
1353CONFIG_HAS_DMA=y 1370CONFIG_HAS_DMA=y
1371CONFIG_HAVE_LMB=y
1354 1372
1355# 1373#
1356# Kernel hacking 1374# Kernel hacking
@@ -1358,6 +1376,7 @@ CONFIG_HAS_DMA=y
1358# CONFIG_PRINTK_TIME is not set 1376# CONFIG_PRINTK_TIME is not set
1359CONFIG_ENABLE_WARN_DEPRECATED=y 1377CONFIG_ENABLE_WARN_DEPRECATED=y
1360CONFIG_ENABLE_MUST_CHECK=y 1378CONFIG_ENABLE_MUST_CHECK=y
1379CONFIG_FRAME_WARN=1024
1361# CONFIG_MAGIC_SYSRQ is not set 1380# CONFIG_MAGIC_SYSRQ is not set
1362# CONFIG_UNUSED_SYMBOLS is not set 1381# CONFIG_UNUSED_SYMBOLS is not set
1363# CONFIG_DEBUG_FS is not set 1382# CONFIG_DEBUG_FS is not set
@@ -1368,6 +1387,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1368CONFIG_SCHED_DEBUG=y 1387CONFIG_SCHED_DEBUG=y
1369# CONFIG_SCHEDSTATS is not set 1388# CONFIG_SCHEDSTATS is not set
1370# CONFIG_TIMER_STATS is not set 1389# CONFIG_TIMER_STATS is not set
1390# CONFIG_DEBUG_OBJECTS is not set
1371# CONFIG_SLUB_DEBUG_ON is not set 1391# CONFIG_SLUB_DEBUG_ON is not set
1372# CONFIG_SLUB_STATS is not set 1392# CONFIG_SLUB_STATS is not set
1373# CONFIG_DEBUG_RT_MUTEXES is not set 1393# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1380,6 +1400,7 @@ CONFIG_SCHED_DEBUG=y
1380# CONFIG_DEBUG_BUGVERBOSE is not set 1400# CONFIG_DEBUG_BUGVERBOSE is not set
1381# CONFIG_DEBUG_INFO is not set 1401# CONFIG_DEBUG_INFO is not set
1382# CONFIG_DEBUG_VM is not set 1402# CONFIG_DEBUG_VM is not set
1403# CONFIG_DEBUG_WRITECOUNT is not set
1383# CONFIG_DEBUG_LIST is not set 1404# CONFIG_DEBUG_LIST is not set
1384# CONFIG_DEBUG_SG is not set 1405# CONFIG_DEBUG_SG is not set
1385# CONFIG_BOOT_PRINTK_DELAY is not set 1406# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1391,6 +1412,7 @@ CONFIG_SCHED_DEBUG=y
1391# CONFIG_DEBUG_STACK_USAGE is not set 1412# CONFIG_DEBUG_STACK_USAGE is not set
1392# CONFIG_DEBUG_PAGEALLOC is not set 1413# CONFIG_DEBUG_PAGEALLOC is not set
1393# CONFIG_DEBUGGER is not set 1414# CONFIG_DEBUGGER is not set
1415# CONFIG_IRQSTACKS is not set
1394# CONFIG_BDI_SWITCH is not set 1416# CONFIG_BDI_SWITCH is not set
1395# CONFIG_PPC_EARLY_DEBUG is not set 1417# CONFIG_PPC_EARLY_DEBUG is not set
1396 1418
@@ -1401,51 +1423,81 @@ CONFIG_SCHED_DEBUG=y
1401# CONFIG_SECURITY is not set 1423# CONFIG_SECURITY is not set
1402# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1424# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1403CONFIG_CRYPTO=y 1425CONFIG_CRYPTO=y
1426
1427#
1428# Crypto core or helper
1429#
1404CONFIG_CRYPTO_ALGAPI=y 1430CONFIG_CRYPTO_ALGAPI=y
1405CONFIG_CRYPTO_BLKCIPHER=y 1431CONFIG_CRYPTO_BLKCIPHER=y
1406# CONFIG_CRYPTO_SEQIV is not set
1407CONFIG_CRYPTO_MANAGER=y 1432CONFIG_CRYPTO_MANAGER=y
1433# CONFIG_CRYPTO_GF128MUL is not set
1434# CONFIG_CRYPTO_NULL is not set
1435# CONFIG_CRYPTO_CRYPTD is not set
1436# CONFIG_CRYPTO_AUTHENC is not set
1437# CONFIG_CRYPTO_TEST is not set
1438
1439#
1440# Authenticated Encryption with Associated Data
1441#
1442# CONFIG_CRYPTO_CCM is not set
1443# CONFIG_CRYPTO_GCM is not set
1444# CONFIG_CRYPTO_SEQIV is not set
1445
1446#
1447# Block modes
1448#
1449CONFIG_CRYPTO_CBC=y
1450# CONFIG_CRYPTO_CTR is not set
1451# CONFIG_CRYPTO_CTS is not set
1452# CONFIG_CRYPTO_ECB is not set
1453# CONFIG_CRYPTO_LRW is not set
1454CONFIG_CRYPTO_PCBC=m
1455# CONFIG_CRYPTO_XTS is not set
1456
1457#
1458# Hash modes
1459#
1408# CONFIG_CRYPTO_HMAC is not set 1460# CONFIG_CRYPTO_HMAC is not set
1409# CONFIG_CRYPTO_XCBC is not set 1461# CONFIG_CRYPTO_XCBC is not set
1410# CONFIG_CRYPTO_NULL is not set 1462
1463#
1464# Digest
1465#
1466# CONFIG_CRYPTO_CRC32C is not set
1411# CONFIG_CRYPTO_MD4 is not set 1467# CONFIG_CRYPTO_MD4 is not set
1412CONFIG_CRYPTO_MD5=y 1468CONFIG_CRYPTO_MD5=y
1469# CONFIG_CRYPTO_MICHAEL_MIC is not set
1413# CONFIG_CRYPTO_SHA1 is not set 1470# CONFIG_CRYPTO_SHA1 is not set
1414# CONFIG_CRYPTO_SHA256 is not set 1471# CONFIG_CRYPTO_SHA256 is not set
1415# CONFIG_CRYPTO_SHA512 is not set 1472# CONFIG_CRYPTO_SHA512 is not set
1416# CONFIG_CRYPTO_WP512 is not set
1417# CONFIG_CRYPTO_TGR192 is not set 1473# CONFIG_CRYPTO_TGR192 is not set
1418# CONFIG_CRYPTO_GF128MUL is not set 1474# CONFIG_CRYPTO_WP512 is not set
1419# CONFIG_CRYPTO_ECB is not set 1475
1420CONFIG_CRYPTO_CBC=y 1476#
1421CONFIG_CRYPTO_PCBC=m 1477# Ciphers
1422# CONFIG_CRYPTO_LRW is not set 1478#
1423# CONFIG_CRYPTO_XTS is not set
1424# CONFIG_CRYPTO_CTR is not set
1425# CONFIG_CRYPTO_GCM is not set
1426# CONFIG_CRYPTO_CCM is not set
1427# CONFIG_CRYPTO_CRYPTD is not set
1428CONFIG_CRYPTO_DES=y
1429# CONFIG_CRYPTO_FCRYPT is not set
1430# CONFIG_CRYPTO_BLOWFISH is not set
1431# CONFIG_CRYPTO_TWOFISH is not set
1432# CONFIG_CRYPTO_SERPENT is not set
1433# CONFIG_CRYPTO_AES is not set 1479# CONFIG_CRYPTO_AES is not set
1480# CONFIG_CRYPTO_ANUBIS is not set
1481# CONFIG_CRYPTO_ARC4 is not set
1482# CONFIG_CRYPTO_BLOWFISH is not set
1483# CONFIG_CRYPTO_CAMELLIA is not set
1434# CONFIG_CRYPTO_CAST5 is not set 1484# CONFIG_CRYPTO_CAST5 is not set
1435# CONFIG_CRYPTO_CAST6 is not set 1485# CONFIG_CRYPTO_CAST6 is not set
1436# CONFIG_CRYPTO_TEA is not set 1486CONFIG_CRYPTO_DES=y
1437# CONFIG_CRYPTO_ARC4 is not set 1487# CONFIG_CRYPTO_FCRYPT is not set
1438# CONFIG_CRYPTO_KHAZAD is not set 1488# CONFIG_CRYPTO_KHAZAD is not set
1439# CONFIG_CRYPTO_ANUBIS is not set
1440# CONFIG_CRYPTO_SEED is not set
1441# CONFIG_CRYPTO_SALSA20 is not set 1489# CONFIG_CRYPTO_SALSA20 is not set
1490# CONFIG_CRYPTO_SEED is not set
1491# CONFIG_CRYPTO_SERPENT is not set
1492# CONFIG_CRYPTO_TEA is not set
1493# CONFIG_CRYPTO_TWOFISH is not set
1494
1495#
1496# Compression
1497#
1442# CONFIG_CRYPTO_DEFLATE is not set 1498# CONFIG_CRYPTO_DEFLATE is not set
1443# CONFIG_CRYPTO_MICHAEL_MIC is not set
1444# CONFIG_CRYPTO_CRC32C is not set
1445# CONFIG_CRYPTO_CAMELLIA is not set
1446# CONFIG_CRYPTO_TEST is not set
1447# CONFIG_CRYPTO_AUTHENC is not set
1448# CONFIG_CRYPTO_LZO is not set 1499# CONFIG_CRYPTO_LZO is not set
1449CONFIG_CRYPTO_HW=y 1500CONFIG_CRYPTO_HW=y
1450# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1501# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1451# CONFIG_PPC_CLOCK is not set 1502# CONFIG_PPC_CLOCK is not set
1503# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/mpc832x_mds_defconfig b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig
index 50cceda8994f..1eca26f3659a 100644
--- a/arch/powerpc/configs/83xx/mpc832x_mds_defconfig
+++ b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:36:51 2008 4# Mon Jun 9 08:52:22 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89# CONFIG_KALLSYMS is not set 92# CONFIG_KALLSYMS is not set
90CONFIG_HOTPLUG=y 93CONFIG_HOTPLUG=y
91CONFIG_PRINTK=y 94CONFIG_PRINTK=y
@@ -110,12 +113,14 @@ CONFIG_SLUB=y
110CONFIG_HAVE_OPROFILE=y 113CONFIG_HAVE_OPROFILE=y
111CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
112CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
116# CONFIG_HAVE_DMA_ATTRS is not set
113CONFIG_PROC_PAGE_MONITOR=y 117CONFIG_PROC_PAGE_MONITOR=y
114CONFIG_SLABINFO=y 118CONFIG_SLABINFO=y
115CONFIG_RT_MUTEXES=y 119CONFIG_RT_MUTEXES=y
116# CONFIG_TINY_SHMEM is not set 120# CONFIG_TINY_SHMEM is not set
117CONFIG_BASE_SMALL=0 121CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 122CONFIG_MODULES=y
123# CONFIG_MODULE_FORCE_LOAD is not set
119CONFIG_MODULE_UNLOAD=y 124CONFIG_MODULE_UNLOAD=y
120# CONFIG_MODULE_FORCE_UNLOAD is not set 125# CONFIG_MODULE_FORCE_UNLOAD is not set
121# CONFIG_MODVERSIONS is not set 126# CONFIG_MODVERSIONS is not set
@@ -212,11 +217,13 @@ CONFIG_FLATMEM=y
212CONFIG_FLAT_NODE_MEM_MAP=y 217CONFIG_FLAT_NODE_MEM_MAP=y
213# CONFIG_SPARSEMEM_STATIC is not set 218# CONFIG_SPARSEMEM_STATIC is not set
214# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 219# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
220CONFIG_PAGEFLAGS_EXTENDED=y
215CONFIG_SPLIT_PTLOCK_CPUS=4 221CONFIG_SPLIT_PTLOCK_CPUS=4
216# CONFIG_RESOURCES_64BIT is not set 222# CONFIG_RESOURCES_64BIT is not set
217CONFIG_ZONE_DMA_FLAG=1 223CONFIG_ZONE_DMA_FLAG=1
218CONFIG_BOUNCE=y 224CONFIG_BOUNCE=y
219CONFIG_VIRT_TO_BUS=y 225CONFIG_VIRT_TO_BUS=y
226CONFIG_FORCE_MAX_ZONEORDER=11
220CONFIG_PROC_DEVICETREE=y 227CONFIG_PROC_DEVICETREE=y
221# CONFIG_CMDLINE_BOOL is not set 228# CONFIG_CMDLINE_BOOL is not set
222# CONFIG_PM is not set 229# CONFIG_PM is not set
@@ -239,6 +246,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
239CONFIG_PCI_LEGACY=y 246CONFIG_PCI_LEGACY=y
240# CONFIG_PCCARD is not set 247# CONFIG_PCCARD is not set
241# CONFIG_HOTPLUG_PCI is not set 248# CONFIG_HOTPLUG_PCI is not set
249# CONFIG_HAS_RAPIDIO is not set
242 250
243# 251#
244# Advanced setup 252# Advanced setup
@@ -248,11 +256,11 @@ CONFIG_PCI_LEGACY=y
248# 256#
249# Default settings for advanced configuration options are used 257# Default settings for advanced configuration options are used
250# 258#
251CONFIG_HIGHMEM_START=0xfe000000
252CONFIG_LOWMEM_SIZE=0x30000000 259CONFIG_LOWMEM_SIZE=0x30000000
260CONFIG_PAGE_OFFSET=0xc0000000
253CONFIG_KERNEL_START=0xc0000000 261CONFIG_KERNEL_START=0xc0000000
262CONFIG_PHYSICAL_START=0x00000000
254CONFIG_TASK_SIZE=0xc0000000 263CONFIG_TASK_SIZE=0xc0000000
255CONFIG_BOOT_LOAD=0x00800000
256 264
257# 265#
258# Networking 266# Networking
@@ -300,8 +308,6 @@ CONFIG_TCP_CONG_CUBIC=y
300CONFIG_DEFAULT_TCP_CONG="cubic" 308CONFIG_DEFAULT_TCP_CONG="cubic"
301# CONFIG_TCP_MD5SIG is not set 309# CONFIG_TCP_MD5SIG is not set
302# CONFIG_IPV6 is not set 310# CONFIG_IPV6 is not set
303# CONFIG_INET6_XFRM_TUNNEL is not set
304# CONFIG_INET6_TUNNEL is not set
305# CONFIG_NETWORK_SECMARK is not set 311# CONFIG_NETWORK_SECMARK is not set
306# CONFIG_NETFILTER is not set 312# CONFIG_NETFILTER is not set
307# CONFIG_IP_DCCP is not set 313# CONFIG_IP_DCCP is not set
@@ -355,6 +361,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
355# CONFIG_CONNECTOR is not set 361# CONFIG_CONNECTOR is not set
356# CONFIG_MTD is not set 362# CONFIG_MTD is not set
357CONFIG_OF_DEVICE=y 363CONFIG_OF_DEVICE=y
364CONFIG_OF_I2C=y
358# CONFIG_PARPORT is not set 365# CONFIG_PARPORT is not set
359CONFIG_BLK_DEV=y 366CONFIG_BLK_DEV=y
360# CONFIG_BLK_DEV_FD is not set 367# CONFIG_BLK_DEV_FD is not set
@@ -522,7 +529,6 @@ CONFIG_NETDEV_1000=y
522# CONFIG_SIS190 is not set 529# CONFIG_SIS190 is not set
523# CONFIG_SKGE is not set 530# CONFIG_SKGE is not set
524# CONFIG_SKY2 is not set 531# CONFIG_SKY2 is not set
525# CONFIG_SK98LIN is not set
526# CONFIG_VIA_VELOCITY is not set 532# CONFIG_VIA_VELOCITY is not set
527# CONFIG_TIGON3 is not set 533# CONFIG_TIGON3 is not set
528# CONFIG_BNX2 is not set 534# CONFIG_BNX2 is not set
@@ -546,6 +552,7 @@ CONFIG_NETDEV_10000=y
546# CONFIG_MLX4_CORE is not set 552# CONFIG_MLX4_CORE is not set
547# CONFIG_TEHUTI is not set 553# CONFIG_TEHUTI is not set
548# CONFIG_BNX2X is not set 554# CONFIG_BNX2X is not set
555# CONFIG_SFC is not set
549# CONFIG_TR is not set 556# CONFIG_TR is not set
550 557
551# 558#
@@ -553,6 +560,7 @@ CONFIG_NETDEV_10000=y
553# 560#
554# CONFIG_WLAN_PRE80211 is not set 561# CONFIG_WLAN_PRE80211 is not set
555# CONFIG_WLAN_80211 is not set 562# CONFIG_WLAN_80211 is not set
563# CONFIG_IWLWIFI_LEDS is not set
556# CONFIG_WAN is not set 564# CONFIG_WAN is not set
557# CONFIG_FDDI is not set 565# CONFIG_FDDI is not set
558# CONFIG_HIPPI is not set 566# CONFIG_HIPPI is not set
@@ -600,6 +608,7 @@ CONFIG_INPUT=y
600# Character devices 608# Character devices
601# 609#
602# CONFIG_VT is not set 610# CONFIG_VT is not set
611CONFIG_DEVKMEM=y
603# CONFIG_SERIAL_NONSTANDARD is not set 612# CONFIG_SERIAL_NONSTANDARD is not set
604# CONFIG_NOZOMI is not set 613# CONFIG_NOZOMI is not set
605 614
@@ -628,7 +637,6 @@ CONFIG_LEGACY_PTY_COUNT=256
628# CONFIG_IPMI_HANDLER is not set 637# CONFIG_IPMI_HANDLER is not set
629CONFIG_HW_RANDOM=y 638CONFIG_HW_RANDOM=y
630# CONFIG_NVRAM is not set 639# CONFIG_NVRAM is not set
631# CONFIG_GEN_RTC is not set
632# CONFIG_R3964 is not set 640# CONFIG_R3964 is not set
633# CONFIG_APPLICOM is not set 641# CONFIG_APPLICOM is not set
634# CONFIG_RAW_DRIVER is not set 642# CONFIG_RAW_DRIVER is not set
@@ -639,13 +647,6 @@ CONFIG_I2C_BOARDINFO=y
639CONFIG_I2C_CHARDEV=y 647CONFIG_I2C_CHARDEV=y
640 648
641# 649#
642# I2C Algorithms
643#
644# CONFIG_I2C_ALGOBIT is not set
645# CONFIG_I2C_ALGOPCF is not set
646# CONFIG_I2C_ALGOPCA is not set
647
648#
649# I2C Hardware Bus support 650# I2C Hardware Bus support
650# 651#
651# CONFIG_I2C_ALI1535 is not set 652# CONFIG_I2C_ALI1535 is not set
@@ -671,6 +672,7 @@ CONFIG_I2C_MPC=y
671# CONFIG_I2C_VIA is not set 672# CONFIG_I2C_VIA is not set
672# CONFIG_I2C_VIAPRO is not set 673# CONFIG_I2C_VIAPRO is not set
673# CONFIG_I2C_VOODOO3 is not set 674# CONFIG_I2C_VOODOO3 is not set
675# CONFIG_I2C_PCA_PLATFORM is not set
674 676
675# 677#
676# Miscellaneous I2C Chip support 678# Miscellaneous I2C Chip support
@@ -680,19 +682,13 @@ CONFIG_I2C_MPC=y
680# CONFIG_SENSORS_PCF8574 is not set 682# CONFIG_SENSORS_PCF8574 is not set
681# CONFIG_PCF8575 is not set 683# CONFIG_PCF8575 is not set
682# CONFIG_SENSORS_PCF8591 is not set 684# CONFIG_SENSORS_PCF8591 is not set
683# CONFIG_TPS65010 is not set
684# CONFIG_SENSORS_MAX6875 is not set 685# CONFIG_SENSORS_MAX6875 is not set
685# CONFIG_SENSORS_TSL2550 is not set 686# CONFIG_SENSORS_TSL2550 is not set
686# CONFIG_I2C_DEBUG_CORE is not set 687# CONFIG_I2C_DEBUG_CORE is not set
687# CONFIG_I2C_DEBUG_ALGO is not set 688# CONFIG_I2C_DEBUG_ALGO is not set
688# CONFIG_I2C_DEBUG_BUS is not set 689# CONFIG_I2C_DEBUG_BUS is not set
689# CONFIG_I2C_DEBUG_CHIP is not set 690# CONFIG_I2C_DEBUG_CHIP is not set
690
691#
692# SPI support
693#
694# CONFIG_SPI is not set 691# CONFIG_SPI is not set
695# CONFIG_SPI_MASTER is not set
696# CONFIG_W1 is not set 692# CONFIG_W1 is not set
697# CONFIG_POWER_SUPPLY is not set 693# CONFIG_POWER_SUPPLY is not set
698CONFIG_HWMON=y 694CONFIG_HWMON=y
@@ -775,12 +771,22 @@ CONFIG_SSB_POSSIBLE=y
775# Multifunction device drivers 771# Multifunction device drivers
776# 772#
777# CONFIG_MFD_SM501 is not set 773# CONFIG_MFD_SM501 is not set
774# CONFIG_HTC_PASIC3 is not set
778 775
779# 776#
780# Multimedia devices 777# Multimedia devices
781# 778#
779
780#
781# Multimedia core support
782#
782# CONFIG_VIDEO_DEV is not set 783# CONFIG_VIDEO_DEV is not set
783# CONFIG_DVB_CORE is not set 784# CONFIG_DVB_CORE is not set
785# CONFIG_VIDEO_MEDIA is not set
786
787#
788# Multimedia drivers
789#
784CONFIG_DAB=y 790CONFIG_DAB=y
785 791
786# 792#
@@ -811,6 +817,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
811CONFIG_USB_ARCH_HAS_OHCI=y 817CONFIG_USB_ARCH_HAS_OHCI=y
812CONFIG_USB_ARCH_HAS_EHCI=y 818CONFIG_USB_ARCH_HAS_EHCI=y
813# CONFIG_USB is not set 819# CONFIG_USB is not set
820# CONFIG_USB_OTG_WHITELIST is not set
821# CONFIG_USB_OTG_BLACKLIST_HUB is not set
814 822
815# 823#
816# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 824# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -819,6 +827,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
819# CONFIG_MMC is not set 827# CONFIG_MMC is not set
820# CONFIG_MEMSTICK is not set 828# CONFIG_MEMSTICK is not set
821# CONFIG_NEW_LEDS is not set 829# CONFIG_NEW_LEDS is not set
830# CONFIG_ACCESSIBILITY is not set
822# CONFIG_INFINIBAND is not set 831# CONFIG_INFINIBAND is not set
823# CONFIG_EDAC is not set 832# CONFIG_EDAC is not set
824CONFIG_RTC_LIB=y 833CONFIG_RTC_LIB=y
@@ -870,11 +879,8 @@ CONFIG_RTC_DRV_DS1374=y
870# 879#
871# on-CPU RTC drivers 880# on-CPU RTC drivers
872# 881#
882# CONFIG_RTC_DRV_PPC is not set
873# CONFIG_DMADEVICES is not set 883# CONFIG_DMADEVICES is not set
874
875#
876# Userspace I/O
877#
878# CONFIG_UIO is not set 884# CONFIG_UIO is not set
879 885
880# 886#
@@ -894,7 +900,6 @@ CONFIG_FS_MBCACHE=y
894# CONFIG_JFS_FS is not set 900# CONFIG_JFS_FS is not set
895# CONFIG_FS_POSIX_ACL is not set 901# CONFIG_FS_POSIX_ACL is not set
896# CONFIG_XFS_FS is not set 902# CONFIG_XFS_FS is not set
897# CONFIG_GFS2_FS is not set
898# CONFIG_OCFS2_FS is not set 903# CONFIG_OCFS2_FS is not set
899CONFIG_DNOTIFY=y 904CONFIG_DNOTIFY=y
900CONFIG_INOTIFY=y 905CONFIG_INOTIFY=y
@@ -952,7 +957,6 @@ CONFIG_NFS_FS=y
952CONFIG_NFS_V3=y 957CONFIG_NFS_V3=y
953# CONFIG_NFS_V3_ACL is not set 958# CONFIG_NFS_V3_ACL is not set
954CONFIG_NFS_V4=y 959CONFIG_NFS_V4=y
955# CONFIG_NFS_DIRECTIO is not set
956# CONFIG_NFSD is not set 960# CONFIG_NFSD is not set
957CONFIG_ROOT_NFS=y 961CONFIG_ROOT_NFS=y
958CONFIG_LOCKD=y 962CONFIG_LOCKD=y
@@ -995,6 +999,7 @@ CONFIG_UCC=y
995# Library routines 999# Library routines
996# 1000#
997CONFIG_BITREVERSE=y 1001CONFIG_BITREVERSE=y
1002# CONFIG_GENERIC_FIND_FIRST_BIT is not set
998# CONFIG_CRC_CCITT is not set 1003# CONFIG_CRC_CCITT is not set
999# CONFIG_CRC16 is not set 1004# CONFIG_CRC16 is not set
1000# CONFIG_CRC_ITU_T is not set 1005# CONFIG_CRC_ITU_T is not set
@@ -1005,6 +1010,7 @@ CONFIG_PLIST=y
1005CONFIG_HAS_IOMEM=y 1010CONFIG_HAS_IOMEM=y
1006CONFIG_HAS_IOPORT=y 1011CONFIG_HAS_IOPORT=y
1007CONFIG_HAS_DMA=y 1012CONFIG_HAS_DMA=y
1013CONFIG_HAVE_LMB=y
1008 1014
1009# 1015#
1010# Kernel hacking 1016# Kernel hacking
@@ -1012,6 +1018,7 @@ CONFIG_HAS_DMA=y
1012# CONFIG_PRINTK_TIME is not set 1018# CONFIG_PRINTK_TIME is not set
1013CONFIG_ENABLE_WARN_DEPRECATED=y 1019CONFIG_ENABLE_WARN_DEPRECATED=y
1014CONFIG_ENABLE_MUST_CHECK=y 1020CONFIG_ENABLE_MUST_CHECK=y
1021CONFIG_FRAME_WARN=1024
1015# CONFIG_MAGIC_SYSRQ is not set 1022# CONFIG_MAGIC_SYSRQ is not set
1016# CONFIG_UNUSED_SYMBOLS is not set 1023# CONFIG_UNUSED_SYMBOLS is not set
1017# CONFIG_DEBUG_FS is not set 1024# CONFIG_DEBUG_FS is not set
@@ -1021,6 +1028,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1021# CONFIG_SLUB_STATS is not set 1028# CONFIG_SLUB_STATS is not set
1022# CONFIG_DEBUG_BUGVERBOSE is not set 1029# CONFIG_DEBUG_BUGVERBOSE is not set
1023# CONFIG_SAMPLES is not set 1030# CONFIG_SAMPLES is not set
1031# CONFIG_IRQSTACKS is not set
1024# CONFIG_PPC_EARLY_DEBUG is not set 1032# CONFIG_PPC_EARLY_DEBUG is not set
1025 1033
1026# 1034#
@@ -1030,52 +1038,82 @@ CONFIG_ENABLE_MUST_CHECK=y
1030# CONFIG_SECURITY is not set 1038# CONFIG_SECURITY is not set
1031# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1039# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1032CONFIG_CRYPTO=y 1040CONFIG_CRYPTO=y
1041
1042#
1043# Crypto core or helper
1044#
1033CONFIG_CRYPTO_ALGAPI=y 1045CONFIG_CRYPTO_ALGAPI=y
1034CONFIG_CRYPTO_BLKCIPHER=y 1046CONFIG_CRYPTO_BLKCIPHER=y
1035# CONFIG_CRYPTO_SEQIV is not set
1036CONFIG_CRYPTO_MANAGER=y 1047CONFIG_CRYPTO_MANAGER=y
1048# CONFIG_CRYPTO_GF128MUL is not set
1049# CONFIG_CRYPTO_NULL is not set
1050# CONFIG_CRYPTO_CRYPTD is not set
1051# CONFIG_CRYPTO_AUTHENC is not set
1052# CONFIG_CRYPTO_TEST is not set
1053
1054#
1055# Authenticated Encryption with Associated Data
1056#
1057# CONFIG_CRYPTO_CCM is not set
1058# CONFIG_CRYPTO_GCM is not set
1059# CONFIG_CRYPTO_SEQIV is not set
1060
1061#
1062# Block modes
1063#
1064CONFIG_CRYPTO_CBC=y
1065# CONFIG_CRYPTO_CTR is not set
1066# CONFIG_CRYPTO_CTS is not set
1067CONFIG_CRYPTO_ECB=m
1068# CONFIG_CRYPTO_LRW is not set
1069CONFIG_CRYPTO_PCBC=m
1070# CONFIG_CRYPTO_XTS is not set
1071
1072#
1073# Hash modes
1074#
1037# CONFIG_CRYPTO_HMAC is not set 1075# CONFIG_CRYPTO_HMAC is not set
1038# CONFIG_CRYPTO_XCBC is not set 1076# CONFIG_CRYPTO_XCBC is not set
1039# CONFIG_CRYPTO_NULL is not set 1077
1078#
1079# Digest
1080#
1081# CONFIG_CRYPTO_CRC32C is not set
1040# CONFIG_CRYPTO_MD4 is not set 1082# CONFIG_CRYPTO_MD4 is not set
1041CONFIG_CRYPTO_MD5=y 1083CONFIG_CRYPTO_MD5=y
1084# CONFIG_CRYPTO_MICHAEL_MIC is not set
1042# CONFIG_CRYPTO_SHA1 is not set 1085# CONFIG_CRYPTO_SHA1 is not set
1043# CONFIG_CRYPTO_SHA256 is not set 1086# CONFIG_CRYPTO_SHA256 is not set
1044# CONFIG_CRYPTO_SHA512 is not set 1087# CONFIG_CRYPTO_SHA512 is not set
1045# CONFIG_CRYPTO_WP512 is not set
1046# CONFIG_CRYPTO_TGR192 is not set 1088# CONFIG_CRYPTO_TGR192 is not set
1047# CONFIG_CRYPTO_GF128MUL is not set 1089# CONFIG_CRYPTO_WP512 is not set
1048CONFIG_CRYPTO_ECB=m 1090
1049CONFIG_CRYPTO_CBC=y 1091#
1050CONFIG_CRYPTO_PCBC=m 1092# Ciphers
1051# CONFIG_CRYPTO_LRW is not set 1093#
1052# CONFIG_CRYPTO_XTS is not set
1053# CONFIG_CRYPTO_CTR is not set
1054# CONFIG_CRYPTO_GCM is not set
1055# CONFIG_CRYPTO_CCM is not set
1056# CONFIG_CRYPTO_CRYPTD is not set
1057CONFIG_CRYPTO_DES=y
1058# CONFIG_CRYPTO_FCRYPT is not set
1059# CONFIG_CRYPTO_BLOWFISH is not set
1060# CONFIG_CRYPTO_TWOFISH is not set
1061# CONFIG_CRYPTO_SERPENT is not set
1062# CONFIG_CRYPTO_AES is not set 1094# CONFIG_CRYPTO_AES is not set
1095# CONFIG_CRYPTO_ANUBIS is not set
1096# CONFIG_CRYPTO_ARC4 is not set
1097# CONFIG_CRYPTO_BLOWFISH is not set
1098# CONFIG_CRYPTO_CAMELLIA is not set
1063# CONFIG_CRYPTO_CAST5 is not set 1099# CONFIG_CRYPTO_CAST5 is not set
1064# CONFIG_CRYPTO_CAST6 is not set 1100# CONFIG_CRYPTO_CAST6 is not set
1065# CONFIG_CRYPTO_TEA is not set 1101CONFIG_CRYPTO_DES=y
1066# CONFIG_CRYPTO_ARC4 is not set 1102# CONFIG_CRYPTO_FCRYPT is not set
1067# CONFIG_CRYPTO_KHAZAD is not set 1103# CONFIG_CRYPTO_KHAZAD is not set
1068# CONFIG_CRYPTO_ANUBIS is not set
1069# CONFIG_CRYPTO_SEED is not set
1070# CONFIG_CRYPTO_SALSA20 is not set 1104# CONFIG_CRYPTO_SALSA20 is not set
1105# CONFIG_CRYPTO_SEED is not set
1106# CONFIG_CRYPTO_SERPENT is not set
1107# CONFIG_CRYPTO_TEA is not set
1108# CONFIG_CRYPTO_TWOFISH is not set
1109
1110#
1111# Compression
1112#
1071# CONFIG_CRYPTO_DEFLATE is not set 1113# CONFIG_CRYPTO_DEFLATE is not set
1072# CONFIG_CRYPTO_MICHAEL_MIC is not set
1073# CONFIG_CRYPTO_CRC32C is not set
1074# CONFIG_CRYPTO_CAMELLIA is not set
1075# CONFIG_CRYPTO_TEST is not set
1076# CONFIG_CRYPTO_AUTHENC is not set
1077# CONFIG_CRYPTO_LZO is not set 1114# CONFIG_CRYPTO_LZO is not set
1078CONFIG_CRYPTO_HW=y 1115CONFIG_CRYPTO_HW=y
1079# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1116# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1080# CONFIG_PPC_CLOCK is not set 1117# CONFIG_PPC_CLOCK is not set
1081CONFIG_PPC_LIB_RHEAP=y 1118CONFIG_PPC_LIB_RHEAP=y
1119# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig
index ac913025713e..de95d327463c 100644
--- a/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig
+++ b/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:16 2008 4# Mon Jun 9 08:52:24 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89# CONFIG_KALLSYMS is not set 92# CONFIG_KALLSYMS is not set
90CONFIG_HOTPLUG=y 93CONFIG_HOTPLUG=y
91CONFIG_PRINTK=y 94CONFIG_PRINTK=y
@@ -110,12 +113,14 @@ CONFIG_SLUB=y
110CONFIG_HAVE_OPROFILE=y 113CONFIG_HAVE_OPROFILE=y
111CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
112CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
116# CONFIG_HAVE_DMA_ATTRS is not set
113CONFIG_PROC_PAGE_MONITOR=y 117CONFIG_PROC_PAGE_MONITOR=y
114CONFIG_SLABINFO=y 118CONFIG_SLABINFO=y
115CONFIG_RT_MUTEXES=y 119CONFIG_RT_MUTEXES=y
116# CONFIG_TINY_SHMEM is not set 120# CONFIG_TINY_SHMEM is not set
117CONFIG_BASE_SMALL=0 121CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 122CONFIG_MODULES=y
123# CONFIG_MODULE_FORCE_LOAD is not set
119CONFIG_MODULE_UNLOAD=y 124CONFIG_MODULE_UNLOAD=y
120# CONFIG_MODULE_FORCE_UNLOAD is not set 125# CONFIG_MODULE_FORCE_UNLOAD is not set
121# CONFIG_MODVERSIONS is not set 126# CONFIG_MODVERSIONS is not set
@@ -212,11 +217,13 @@ CONFIG_FLATMEM=y
212CONFIG_FLAT_NODE_MEM_MAP=y 217CONFIG_FLAT_NODE_MEM_MAP=y
213# CONFIG_SPARSEMEM_STATIC is not set 218# CONFIG_SPARSEMEM_STATIC is not set
214# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 219# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
220CONFIG_PAGEFLAGS_EXTENDED=y
215CONFIG_SPLIT_PTLOCK_CPUS=4 221CONFIG_SPLIT_PTLOCK_CPUS=4
216# CONFIG_RESOURCES_64BIT is not set 222# CONFIG_RESOURCES_64BIT is not set
217CONFIG_ZONE_DMA_FLAG=1 223CONFIG_ZONE_DMA_FLAG=1
218CONFIG_BOUNCE=y 224CONFIG_BOUNCE=y
219CONFIG_VIRT_TO_BUS=y 225CONFIG_VIRT_TO_BUS=y
226CONFIG_FORCE_MAX_ZONEORDER=11
220CONFIG_PROC_DEVICETREE=y 227CONFIG_PROC_DEVICETREE=y
221# CONFIG_CMDLINE_BOOL is not set 228# CONFIG_CMDLINE_BOOL is not set
222# CONFIG_PM is not set 229# CONFIG_PM is not set
@@ -239,6 +246,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
239CONFIG_PCI_LEGACY=y 246CONFIG_PCI_LEGACY=y
240# CONFIG_PCCARD is not set 247# CONFIG_PCCARD is not set
241# CONFIG_HOTPLUG_PCI is not set 248# CONFIG_HOTPLUG_PCI is not set
249# CONFIG_HAS_RAPIDIO is not set
242 250
243# 251#
244# Advanced setup 252# Advanced setup
@@ -248,11 +256,11 @@ CONFIG_PCI_LEGACY=y
248# 256#
249# Default settings for advanced configuration options are used 257# Default settings for advanced configuration options are used
250# 258#
251CONFIG_HIGHMEM_START=0xfe000000
252CONFIG_LOWMEM_SIZE=0x30000000 259CONFIG_LOWMEM_SIZE=0x30000000
260CONFIG_PAGE_OFFSET=0xc0000000
253CONFIG_KERNEL_START=0xc0000000 261CONFIG_KERNEL_START=0xc0000000
262CONFIG_PHYSICAL_START=0x00000000
254CONFIG_TASK_SIZE=0xc0000000 263CONFIG_TASK_SIZE=0xc0000000
255CONFIG_BOOT_LOAD=0x00800000
256 264
257# 265#
258# Networking 266# Networking
@@ -300,8 +308,6 @@ CONFIG_TCP_CONG_CUBIC=y
300CONFIG_DEFAULT_TCP_CONG="cubic" 308CONFIG_DEFAULT_TCP_CONG="cubic"
301# CONFIG_TCP_MD5SIG is not set 309# CONFIG_TCP_MD5SIG is not set
302# CONFIG_IPV6 is not set 310# CONFIG_IPV6 is not set
303# CONFIG_INET6_XFRM_TUNNEL is not set
304# CONFIG_INET6_TUNNEL is not set
305# CONFIG_NETWORK_SECMARK is not set 311# CONFIG_NETWORK_SECMARK is not set
306# CONFIG_NETFILTER is not set 312# CONFIG_NETFILTER is not set
307# CONFIG_IP_DCCP is not set 313# CONFIG_IP_DCCP is not set
@@ -355,6 +361,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
355# CONFIG_CONNECTOR is not set 361# CONFIG_CONNECTOR is not set
356# CONFIG_MTD is not set 362# CONFIG_MTD is not set
357CONFIG_OF_DEVICE=y 363CONFIG_OF_DEVICE=y
364CONFIG_OF_I2C=y
358# CONFIG_PARPORT is not set 365# CONFIG_PARPORT is not set
359CONFIG_BLK_DEV=y 366CONFIG_BLK_DEV=y
360# CONFIG_BLK_DEV_FD is not set 367# CONFIG_BLK_DEV_FD is not set
@@ -526,7 +533,6 @@ CONFIG_E1000=y
526# CONFIG_SIS190 is not set 533# CONFIG_SIS190 is not set
527# CONFIG_SKGE is not set 534# CONFIG_SKGE is not set
528# CONFIG_SKY2 is not set 535# CONFIG_SKY2 is not set
529# CONFIG_SK98LIN is not set
530# CONFIG_VIA_VELOCITY is not set 536# CONFIG_VIA_VELOCITY is not set
531# CONFIG_TIGON3 is not set 537# CONFIG_TIGON3 is not set
532# CONFIG_BNX2 is not set 538# CONFIG_BNX2 is not set
@@ -550,6 +556,7 @@ CONFIG_NETDEV_10000=y
550# CONFIG_MLX4_CORE is not set 556# CONFIG_MLX4_CORE is not set
551# CONFIG_TEHUTI is not set 557# CONFIG_TEHUTI is not set
552# CONFIG_BNX2X is not set 558# CONFIG_BNX2X is not set
559# CONFIG_SFC is not set
553# CONFIG_TR is not set 560# CONFIG_TR is not set
554 561
555# 562#
@@ -557,6 +564,7 @@ CONFIG_NETDEV_10000=y
557# 564#
558# CONFIG_WLAN_PRE80211 is not set 565# CONFIG_WLAN_PRE80211 is not set
559# CONFIG_WLAN_80211 is not set 566# CONFIG_WLAN_80211 is not set
567# CONFIG_IWLWIFI_LEDS is not set
560 568
561# 569#
562# USB Network Adapters 570# USB Network Adapters
@@ -613,6 +621,7 @@ CONFIG_INPUT=y
613# Character devices 621# Character devices
614# 622#
615# CONFIG_VT is not set 623# CONFIG_VT is not set
624CONFIG_DEVKMEM=y
616# CONFIG_SERIAL_NONSTANDARD is not set 625# CONFIG_SERIAL_NONSTANDARD is not set
617# CONFIG_NOZOMI is not set 626# CONFIG_NOZOMI is not set
618 627
@@ -653,13 +662,6 @@ CONFIG_I2C_BOARDINFO=y
653CONFIG_I2C_CHARDEV=y 662CONFIG_I2C_CHARDEV=y
654 663
655# 664#
656# I2C Algorithms
657#
658# CONFIG_I2C_ALGOBIT is not set
659# CONFIG_I2C_ALGOPCF is not set
660# CONFIG_I2C_ALGOPCA is not set
661
662#
663# I2C Hardware Bus support 665# I2C Hardware Bus support
664# 666#
665# CONFIG_I2C_ALI1535 is not set 667# CONFIG_I2C_ALI1535 is not set
@@ -686,6 +688,7 @@ CONFIG_I2C_MPC=y
686# CONFIG_I2C_VIA is not set 688# CONFIG_I2C_VIA is not set
687# CONFIG_I2C_VIAPRO is not set 689# CONFIG_I2C_VIAPRO is not set
688# CONFIG_I2C_VOODOO3 is not set 690# CONFIG_I2C_VOODOO3 is not set
691# CONFIG_I2C_PCA_PLATFORM is not set
689 692
690# 693#
691# Miscellaneous I2C Chip support 694# Miscellaneous I2C Chip support
@@ -695,17 +698,12 @@ CONFIG_I2C_MPC=y
695# CONFIG_SENSORS_PCF8574 is not set 698# CONFIG_SENSORS_PCF8574 is not set
696# CONFIG_PCF8575 is not set 699# CONFIG_PCF8575 is not set
697# CONFIG_SENSORS_PCF8591 is not set 700# CONFIG_SENSORS_PCF8591 is not set
698# CONFIG_TPS65010 is not set
699# CONFIG_SENSORS_MAX6875 is not set 701# CONFIG_SENSORS_MAX6875 is not set
700# CONFIG_SENSORS_TSL2550 is not set 702# CONFIG_SENSORS_TSL2550 is not set
701# CONFIG_I2C_DEBUG_CORE is not set 703# CONFIG_I2C_DEBUG_CORE is not set
702# CONFIG_I2C_DEBUG_ALGO is not set 704# CONFIG_I2C_DEBUG_ALGO is not set
703# CONFIG_I2C_DEBUG_BUS is not set 705# CONFIG_I2C_DEBUG_BUS is not set
704# CONFIG_I2C_DEBUG_CHIP is not set 706# CONFIG_I2C_DEBUG_CHIP is not set
705
706#
707# SPI support
708#
709CONFIG_SPI=y 707CONFIG_SPI=y
710CONFIG_SPI_MASTER=y 708CONFIG_SPI_MASTER=y
711 709
@@ -809,12 +807,22 @@ CONFIG_SSB_POSSIBLE=y
809# Multifunction device drivers 807# Multifunction device drivers
810# 808#
811# CONFIG_MFD_SM501 is not set 809# CONFIG_MFD_SM501 is not set
810# CONFIG_HTC_PASIC3 is not set
812 811
813# 812#
814# Multimedia devices 813# Multimedia devices
815# 814#
815
816#
817# Multimedia core support
818#
816# CONFIG_VIDEO_DEV is not set 819# CONFIG_VIDEO_DEV is not set
817# CONFIG_DVB_CORE is not set 820# CONFIG_DVB_CORE is not set
821# CONFIG_VIDEO_MEDIA is not set
822
823#
824# Multimedia drivers
825#
818CONFIG_DAB=y 826CONFIG_DAB=y
819# CONFIG_USB_DABUSB is not set 827# CONFIG_USB_DABUSB is not set
820 828
@@ -867,16 +875,20 @@ CONFIG_USB_DEVICEFS=y
867CONFIG_USB_DEVICE_CLASS=y 875CONFIG_USB_DEVICE_CLASS=y
868# CONFIG_USB_DYNAMIC_MINORS is not set 876# CONFIG_USB_DYNAMIC_MINORS is not set
869# CONFIG_USB_OTG is not set 877# CONFIG_USB_OTG is not set
878# CONFIG_USB_OTG_WHITELIST is not set
879# CONFIG_USB_OTG_BLACKLIST_HUB is not set
870 880
871# 881#
872# USB Host Controller Drivers 882# USB Host Controller Drivers
873# 883#
884# CONFIG_USB_C67X00_HCD is not set
874CONFIG_USB_EHCI_HCD=y 885CONFIG_USB_EHCI_HCD=y
875# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 886# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
876# CONFIG_USB_EHCI_TT_NEWSCHED is not set 887# CONFIG_USB_EHCI_TT_NEWSCHED is not set
877# CONFIG_USB_EHCI_FSL is not set 888# CONFIG_USB_EHCI_FSL is not set
878CONFIG_USB_EHCI_HCD_PPC_OF=y 889CONFIG_USB_EHCI_HCD_PPC_OF=y
879# CONFIG_USB_ISP116X_HCD is not set 890# CONFIG_USB_ISP116X_HCD is not set
891# CONFIG_USB_ISP1760_HCD is not set
880CONFIG_USB_OHCI_HCD=y 892CONFIG_USB_OHCI_HCD=y
881CONFIG_USB_OHCI_HCD_PPC_OF=y 893CONFIG_USB_OHCI_HCD_PPC_OF=y
882CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 894CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
@@ -894,6 +906,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
894# 906#
895# CONFIG_USB_ACM is not set 907# CONFIG_USB_ACM is not set
896# CONFIG_USB_PRINTER is not set 908# CONFIG_USB_PRINTER is not set
909# CONFIG_USB_WDM is not set
897 910
898# 911#
899# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 912# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -913,7 +926,9 @@ CONFIG_USB_STORAGE=y
913# CONFIG_USB_STORAGE_SDDR55 is not set 926# CONFIG_USB_STORAGE_SDDR55 is not set
914# CONFIG_USB_STORAGE_JUMPSHOT is not set 927# CONFIG_USB_STORAGE_JUMPSHOT is not set
915# CONFIG_USB_STORAGE_ALAUDA is not set 928# CONFIG_USB_STORAGE_ALAUDA is not set
929# CONFIG_USB_STORAGE_ONETOUCH is not set
916# CONFIG_USB_STORAGE_KARMA is not set 930# CONFIG_USB_STORAGE_KARMA is not set
931# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
917# CONFIG_USB_LIBUSUAL is not set 932# CONFIG_USB_LIBUSUAL is not set
918 933
919# 934#
@@ -951,6 +966,7 @@ CONFIG_USB_MON=y
951# CONFIG_USB_TRANCEVIBRATOR is not set 966# CONFIG_USB_TRANCEVIBRATOR is not set
952# CONFIG_USB_IOWARRIOR is not set 967# CONFIG_USB_IOWARRIOR is not set
953# CONFIG_USB_TEST is not set 968# CONFIG_USB_TEST is not set
969# CONFIG_USB_ISIGHTFW is not set
954# CONFIG_USB_GADGET is not set 970# CONFIG_USB_GADGET is not set
955CONFIG_MMC=y 971CONFIG_MMC=y
956# CONFIG_MMC_DEBUG is not set 972# CONFIG_MMC_DEBUG is not set
@@ -962,6 +978,7 @@ CONFIG_MMC=y
962CONFIG_MMC_BLOCK=y 978CONFIG_MMC_BLOCK=y
963CONFIG_MMC_BLOCK_BOUNCE=y 979CONFIG_MMC_BLOCK_BOUNCE=y
964# CONFIG_SDIO_UART is not set 980# CONFIG_SDIO_UART is not set
981# CONFIG_MMC_TEST is not set
965 982
966# 983#
967# MMC/SD Host Controller Drivers 984# MMC/SD Host Controller Drivers
@@ -972,14 +989,11 @@ CONFIG_MMC_BLOCK_BOUNCE=y
972CONFIG_MMC_SPI=y 989CONFIG_MMC_SPI=y
973# CONFIG_MEMSTICK is not set 990# CONFIG_MEMSTICK is not set
974# CONFIG_NEW_LEDS is not set 991# CONFIG_NEW_LEDS is not set
992# CONFIG_ACCESSIBILITY is not set
975# CONFIG_INFINIBAND is not set 993# CONFIG_INFINIBAND is not set
976# CONFIG_EDAC is not set 994# CONFIG_EDAC is not set
977# CONFIG_RTC_CLASS is not set 995# CONFIG_RTC_CLASS is not set
978# CONFIG_DMADEVICES is not set 996# CONFIG_DMADEVICES is not set
979
980#
981# Userspace I/O
982#
983# CONFIG_UIO is not set 997# CONFIG_UIO is not set
984 998
985# 999#
@@ -999,7 +1013,6 @@ CONFIG_FS_MBCACHE=y
999# CONFIG_JFS_FS is not set 1013# CONFIG_JFS_FS is not set
1000# CONFIG_FS_POSIX_ACL is not set 1014# CONFIG_FS_POSIX_ACL is not set
1001# CONFIG_XFS_FS is not set 1015# CONFIG_XFS_FS is not set
1002# CONFIG_GFS2_FS is not set
1003# CONFIG_OCFS2_FS is not set 1016# CONFIG_OCFS2_FS is not set
1004CONFIG_DNOTIFY=y 1017CONFIG_DNOTIFY=y
1005CONFIG_INOTIFY=y 1018CONFIG_INOTIFY=y
@@ -1060,7 +1073,6 @@ CONFIG_NFS_FS=y
1060CONFIG_NFS_V3=y 1073CONFIG_NFS_V3=y
1061# CONFIG_NFS_V3_ACL is not set 1074# CONFIG_NFS_V3_ACL is not set
1062CONFIG_NFS_V4=y 1075CONFIG_NFS_V4=y
1063# CONFIG_NFS_DIRECTIO is not set
1064# CONFIG_NFSD is not set 1076# CONFIG_NFSD is not set
1065CONFIG_ROOT_NFS=y 1077CONFIG_ROOT_NFS=y
1066CONFIG_LOCKD=y 1078CONFIG_LOCKD=y
@@ -1147,6 +1159,7 @@ CONFIG_UCC=y
1147# Library routines 1159# Library routines
1148# 1160#
1149CONFIG_BITREVERSE=y 1161CONFIG_BITREVERSE=y
1162# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1150# CONFIG_CRC_CCITT is not set 1163# CONFIG_CRC_CCITT is not set
1151# CONFIG_CRC16 is not set 1164# CONFIG_CRC16 is not set
1152CONFIG_CRC_ITU_T=y 1165CONFIG_CRC_ITU_T=y
@@ -1157,6 +1170,7 @@ CONFIG_PLIST=y
1157CONFIG_HAS_IOMEM=y 1170CONFIG_HAS_IOMEM=y
1158CONFIG_HAS_IOPORT=y 1171CONFIG_HAS_IOPORT=y
1159CONFIG_HAS_DMA=y 1172CONFIG_HAS_DMA=y
1173CONFIG_HAVE_LMB=y
1160 1174
1161# 1175#
1162# Kernel hacking 1176# Kernel hacking
@@ -1164,6 +1178,7 @@ CONFIG_HAS_DMA=y
1164# CONFIG_PRINTK_TIME is not set 1178# CONFIG_PRINTK_TIME is not set
1165CONFIG_ENABLE_WARN_DEPRECATED=y 1179CONFIG_ENABLE_WARN_DEPRECATED=y
1166CONFIG_ENABLE_MUST_CHECK=y 1180CONFIG_ENABLE_MUST_CHECK=y
1181CONFIG_FRAME_WARN=1024
1167# CONFIG_MAGIC_SYSRQ is not set 1182# CONFIG_MAGIC_SYSRQ is not set
1168# CONFIG_UNUSED_SYMBOLS is not set 1183# CONFIG_UNUSED_SYMBOLS is not set
1169# CONFIG_DEBUG_FS is not set 1184# CONFIG_DEBUG_FS is not set
@@ -1173,6 +1188,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1173# CONFIG_SLUB_STATS is not set 1188# CONFIG_SLUB_STATS is not set
1174# CONFIG_DEBUG_BUGVERBOSE is not set 1189# CONFIG_DEBUG_BUGVERBOSE is not set
1175# CONFIG_SAMPLES is not set 1190# CONFIG_SAMPLES is not set
1191# CONFIG_IRQSTACKS is not set
1176# CONFIG_PPC_EARLY_DEBUG is not set 1192# CONFIG_PPC_EARLY_DEBUG is not set
1177 1193
1178# 1194#
@@ -1182,52 +1198,82 @@ CONFIG_ENABLE_MUST_CHECK=y
1182# CONFIG_SECURITY is not set 1198# CONFIG_SECURITY is not set
1183# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1199# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1184CONFIG_CRYPTO=y 1200CONFIG_CRYPTO=y
1201
1202#
1203# Crypto core or helper
1204#
1185CONFIG_CRYPTO_ALGAPI=y 1205CONFIG_CRYPTO_ALGAPI=y
1186CONFIG_CRYPTO_BLKCIPHER=y 1206CONFIG_CRYPTO_BLKCIPHER=y
1187# CONFIG_CRYPTO_SEQIV is not set
1188CONFIG_CRYPTO_MANAGER=y 1207CONFIG_CRYPTO_MANAGER=y
1208# CONFIG_CRYPTO_GF128MUL is not set
1209# CONFIG_CRYPTO_NULL is not set
1210# CONFIG_CRYPTO_CRYPTD is not set
1211# CONFIG_CRYPTO_AUTHENC is not set
1212# CONFIG_CRYPTO_TEST is not set
1213
1214#
1215# Authenticated Encryption with Associated Data
1216#
1217# CONFIG_CRYPTO_CCM is not set
1218# CONFIG_CRYPTO_GCM is not set
1219# CONFIG_CRYPTO_SEQIV is not set
1220
1221#
1222# Block modes
1223#
1224CONFIG_CRYPTO_CBC=y
1225# CONFIG_CRYPTO_CTR is not set
1226# CONFIG_CRYPTO_CTS is not set
1227CONFIG_CRYPTO_ECB=m
1228# CONFIG_CRYPTO_LRW is not set
1229CONFIG_CRYPTO_PCBC=m
1230# CONFIG_CRYPTO_XTS is not set
1231
1232#
1233# Hash modes
1234#
1189# CONFIG_CRYPTO_HMAC is not set 1235# CONFIG_CRYPTO_HMAC is not set
1190# CONFIG_CRYPTO_XCBC is not set 1236# CONFIG_CRYPTO_XCBC is not set
1191# CONFIG_CRYPTO_NULL is not set 1237
1238#
1239# Digest
1240#
1241# CONFIG_CRYPTO_CRC32C is not set
1192# CONFIG_CRYPTO_MD4 is not set 1242# CONFIG_CRYPTO_MD4 is not set
1193CONFIG_CRYPTO_MD5=y 1243CONFIG_CRYPTO_MD5=y
1244# CONFIG_CRYPTO_MICHAEL_MIC is not set
1194# CONFIG_CRYPTO_SHA1 is not set 1245# CONFIG_CRYPTO_SHA1 is not set
1195# CONFIG_CRYPTO_SHA256 is not set 1246# CONFIG_CRYPTO_SHA256 is not set
1196# CONFIG_CRYPTO_SHA512 is not set 1247# CONFIG_CRYPTO_SHA512 is not set
1197# CONFIG_CRYPTO_WP512 is not set
1198# CONFIG_CRYPTO_TGR192 is not set 1248# CONFIG_CRYPTO_TGR192 is not set
1199# CONFIG_CRYPTO_GF128MUL is not set 1249# CONFIG_CRYPTO_WP512 is not set
1200CONFIG_CRYPTO_ECB=m 1250
1201CONFIG_CRYPTO_CBC=y 1251#
1202CONFIG_CRYPTO_PCBC=m 1252# Ciphers
1203# CONFIG_CRYPTO_LRW is not set 1253#
1204# CONFIG_CRYPTO_XTS is not set
1205# CONFIG_CRYPTO_CTR is not set
1206# CONFIG_CRYPTO_GCM is not set
1207# CONFIG_CRYPTO_CCM is not set
1208# CONFIG_CRYPTO_CRYPTD is not set
1209CONFIG_CRYPTO_DES=y
1210# CONFIG_CRYPTO_FCRYPT is not set
1211# CONFIG_CRYPTO_BLOWFISH is not set
1212# CONFIG_CRYPTO_TWOFISH is not set
1213# CONFIG_CRYPTO_SERPENT is not set
1214# CONFIG_CRYPTO_AES is not set 1254# CONFIG_CRYPTO_AES is not set
1255# CONFIG_CRYPTO_ANUBIS is not set
1256# CONFIG_CRYPTO_ARC4 is not set
1257# CONFIG_CRYPTO_BLOWFISH is not set
1258# CONFIG_CRYPTO_CAMELLIA is not set
1215# CONFIG_CRYPTO_CAST5 is not set 1259# CONFIG_CRYPTO_CAST5 is not set
1216# CONFIG_CRYPTO_CAST6 is not set 1260# CONFIG_CRYPTO_CAST6 is not set
1217# CONFIG_CRYPTO_TEA is not set 1261CONFIG_CRYPTO_DES=y
1218# CONFIG_CRYPTO_ARC4 is not set 1262# CONFIG_CRYPTO_FCRYPT is not set
1219# CONFIG_CRYPTO_KHAZAD is not set 1263# CONFIG_CRYPTO_KHAZAD is not set
1220# CONFIG_CRYPTO_ANUBIS is not set
1221# CONFIG_CRYPTO_SEED is not set
1222# CONFIG_CRYPTO_SALSA20 is not set 1264# CONFIG_CRYPTO_SALSA20 is not set
1265# CONFIG_CRYPTO_SEED is not set
1266# CONFIG_CRYPTO_SERPENT is not set
1267# CONFIG_CRYPTO_TEA is not set
1268# CONFIG_CRYPTO_TWOFISH is not set
1269
1270#
1271# Compression
1272#
1223# CONFIG_CRYPTO_DEFLATE is not set 1273# CONFIG_CRYPTO_DEFLATE is not set
1224# CONFIG_CRYPTO_MICHAEL_MIC is not set
1225# CONFIG_CRYPTO_CRC32C is not set
1226# CONFIG_CRYPTO_CAMELLIA is not set
1227# CONFIG_CRYPTO_TEST is not set
1228# CONFIG_CRYPTO_AUTHENC is not set
1229# CONFIG_CRYPTO_LZO is not set 1274# CONFIG_CRYPTO_LZO is not set
1230CONFIG_CRYPTO_HW=y 1275CONFIG_CRYPTO_HW=y
1231# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1276# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1232# CONFIG_PPC_CLOCK is not set 1277# CONFIG_PPC_CLOCK is not set
1233CONFIG_PPC_LIB_RHEAP=y 1278CONFIG_PPC_LIB_RHEAP=y
1279# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig
index e1de399a7bdd..b47fc9185708 100644
--- a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig
+++ b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:17 2008 4# Mon Jun 9 08:52:25 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89# CONFIG_KALLSYMS is not set 92# CONFIG_KALLSYMS is not set
90CONFIG_HOTPLUG=y 93CONFIG_HOTPLUG=y
91CONFIG_PRINTK=y 94CONFIG_PRINTK=y
@@ -110,12 +113,14 @@ CONFIG_SLUB=y
110CONFIG_HAVE_OPROFILE=y 113CONFIG_HAVE_OPROFILE=y
111CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
112CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
116# CONFIG_HAVE_DMA_ATTRS is not set
113CONFIG_PROC_PAGE_MONITOR=y 117CONFIG_PROC_PAGE_MONITOR=y
114CONFIG_SLABINFO=y 118CONFIG_SLABINFO=y
115CONFIG_RT_MUTEXES=y 119CONFIG_RT_MUTEXES=y
116# CONFIG_TINY_SHMEM is not set 120# CONFIG_TINY_SHMEM is not set
117CONFIG_BASE_SMALL=0 121CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 122CONFIG_MODULES=y
123# CONFIG_MODULE_FORCE_LOAD is not set
119CONFIG_MODULE_UNLOAD=y 124CONFIG_MODULE_UNLOAD=y
120# CONFIG_MODULE_FORCE_UNLOAD is not set 125# CONFIG_MODULE_FORCE_UNLOAD is not set
121# CONFIG_MODVERSIONS is not set 126# CONFIG_MODVERSIONS is not set
@@ -210,11 +215,13 @@ CONFIG_FLATMEM=y
210CONFIG_FLAT_NODE_MEM_MAP=y 215CONFIG_FLAT_NODE_MEM_MAP=y
211# CONFIG_SPARSEMEM_STATIC is not set 216# CONFIG_SPARSEMEM_STATIC is not set
212# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
218CONFIG_PAGEFLAGS_EXTENDED=y
213CONFIG_SPLIT_PTLOCK_CPUS=4 219CONFIG_SPLIT_PTLOCK_CPUS=4
214# CONFIG_RESOURCES_64BIT is not set 220# CONFIG_RESOURCES_64BIT is not set
215CONFIG_ZONE_DMA_FLAG=1 221CONFIG_ZONE_DMA_FLAG=1
216CONFIG_BOUNCE=y 222CONFIG_BOUNCE=y
217CONFIG_VIRT_TO_BUS=y 223CONFIG_VIRT_TO_BUS=y
224CONFIG_FORCE_MAX_ZONEORDER=11
218CONFIG_PROC_DEVICETREE=y 225CONFIG_PROC_DEVICETREE=y
219# CONFIG_CMDLINE_BOOL is not set 226# CONFIG_CMDLINE_BOOL is not set
220# CONFIG_PM is not set 227# CONFIG_PM is not set
@@ -237,6 +244,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
237CONFIG_PCI_LEGACY=y 244CONFIG_PCI_LEGACY=y
238# CONFIG_PCCARD is not set 245# CONFIG_PCCARD is not set
239# CONFIG_HOTPLUG_PCI is not set 246# CONFIG_HOTPLUG_PCI is not set
247# CONFIG_HAS_RAPIDIO is not set
240 248
241# 249#
242# Advanced setup 250# Advanced setup
@@ -246,11 +254,11 @@ CONFIG_PCI_LEGACY=y
246# 254#
247# Default settings for advanced configuration options are used 255# Default settings for advanced configuration options are used
248# 256#
249CONFIG_HIGHMEM_START=0xfe000000
250CONFIG_LOWMEM_SIZE=0x30000000 257CONFIG_LOWMEM_SIZE=0x30000000
258CONFIG_PAGE_OFFSET=0xc0000000
251CONFIG_KERNEL_START=0xc0000000 259CONFIG_KERNEL_START=0xc0000000
260CONFIG_PHYSICAL_START=0x00000000
252CONFIG_TASK_SIZE=0xc0000000 261CONFIG_TASK_SIZE=0xc0000000
253CONFIG_BOOT_LOAD=0x00800000
254 262
255# 263#
256# Networking 264# Networking
@@ -298,8 +306,6 @@ CONFIG_TCP_CONG_CUBIC=y
298CONFIG_DEFAULT_TCP_CONG="cubic" 306CONFIG_DEFAULT_TCP_CONG="cubic"
299# CONFIG_TCP_MD5SIG is not set 307# CONFIG_TCP_MD5SIG is not set
300# CONFIG_IPV6 is not set 308# CONFIG_IPV6 is not set
301# CONFIG_INET6_XFRM_TUNNEL is not set
302# CONFIG_INET6_TUNNEL is not set
303# CONFIG_NETWORK_SECMARK is not set 309# CONFIG_NETWORK_SECMARK is not set
304# CONFIG_NETFILTER is not set 310# CONFIG_NETFILTER is not set
305# CONFIG_IP_DCCP is not set 311# CONFIG_IP_DCCP is not set
@@ -432,6 +438,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
432# 438#
433# CONFIG_MTD_UBI is not set 439# CONFIG_MTD_UBI is not set
434CONFIG_OF_DEVICE=y 440CONFIG_OF_DEVICE=y
441CONFIG_OF_I2C=y
435# CONFIG_PARPORT is not set 442# CONFIG_PARPORT is not set
436CONFIG_BLK_DEV=y 443CONFIG_BLK_DEV=y
437# CONFIG_BLK_DEV_FD is not set 444# CONFIG_BLK_DEV_FD is not set
@@ -541,7 +548,11 @@ CONFIG_SCSI_LOWLEVEL=y
541# CONFIG_SCSI_SRP is not set 548# CONFIG_SCSI_SRP is not set
542CONFIG_ATA=y 549CONFIG_ATA=y
543# CONFIG_ATA_NONSTANDARD is not set 550# CONFIG_ATA_NONSTANDARD is not set
551CONFIG_SATA_PMP=y
544# CONFIG_SATA_AHCI is not set 552# CONFIG_SATA_AHCI is not set
553# CONFIG_SATA_SIL24 is not set
554# CONFIG_SATA_FSL is not set
555CONFIG_ATA_SFF=y
545# CONFIG_SATA_SVW is not set 556# CONFIG_SATA_SVW is not set
546# CONFIG_ATA_PIIX is not set 557# CONFIG_ATA_PIIX is not set
547# CONFIG_SATA_MV is not set 558# CONFIG_SATA_MV is not set
@@ -551,13 +562,11 @@ CONFIG_ATA=y
551# CONFIG_SATA_PROMISE is not set 562# CONFIG_SATA_PROMISE is not set
552# CONFIG_SATA_SX4 is not set 563# CONFIG_SATA_SX4 is not set
553CONFIG_SATA_SIL=y 564CONFIG_SATA_SIL=y
554# CONFIG_SATA_SIL24 is not set
555# CONFIG_SATA_SIS is not set 565# CONFIG_SATA_SIS is not set
556# CONFIG_SATA_ULI is not set 566# CONFIG_SATA_ULI is not set
557# CONFIG_SATA_VIA is not set 567# CONFIG_SATA_VIA is not set
558# CONFIG_SATA_VITESSE is not set 568# CONFIG_SATA_VITESSE is not set
559# CONFIG_SATA_INIC162X is not set 569# CONFIG_SATA_INIC162X is not set
560# CONFIG_SATA_FSL is not set
561# CONFIG_PATA_ALI is not set 570# CONFIG_PATA_ALI is not set
562# CONFIG_PATA_AMD is not set 571# CONFIG_PATA_AMD is not set
563# CONFIG_PATA_ARTOP is not set 572# CONFIG_PATA_ARTOP is not set
@@ -598,6 +607,7 @@ CONFIG_SATA_SIL=y
598# CONFIG_PATA_WINBOND is not set 607# CONFIG_PATA_WINBOND is not set
599CONFIG_PATA_PLATFORM=y 608CONFIG_PATA_PLATFORM=y
600CONFIG_PATA_OF_PLATFORM=y 609CONFIG_PATA_OF_PLATFORM=y
610# CONFIG_PATA_SCH is not set
601CONFIG_MD=y 611CONFIG_MD=y
602CONFIG_BLK_DEV_MD=y 612CONFIG_BLK_DEV_MD=y
603CONFIG_MD_LINEAR=y 613CONFIG_MD_LINEAR=y
@@ -659,7 +669,6 @@ CONFIG_NETDEV_1000=y
659# CONFIG_SIS190 is not set 669# CONFIG_SIS190 is not set
660# CONFIG_SKGE is not set 670# CONFIG_SKGE is not set
661# CONFIG_SKY2 is not set 671# CONFIG_SKY2 is not set
662# CONFIG_SK98LIN is not set
663# CONFIG_VIA_VELOCITY is not set 672# CONFIG_VIA_VELOCITY is not set
664# CONFIG_TIGON3 is not set 673# CONFIG_TIGON3 is not set
665# CONFIG_BNX2 is not set 674# CONFIG_BNX2 is not set
@@ -679,6 +688,7 @@ CONFIG_NETDEV_10000=y
679# CONFIG_MLX4_CORE is not set 688# CONFIG_MLX4_CORE is not set
680# CONFIG_TEHUTI is not set 689# CONFIG_TEHUTI is not set
681# CONFIG_BNX2X is not set 690# CONFIG_BNX2X is not set
691# CONFIG_SFC is not set
682# CONFIG_TR is not set 692# CONFIG_TR is not set
683 693
684# 694#
@@ -686,6 +696,7 @@ CONFIG_NETDEV_10000=y
686# 696#
687# CONFIG_WLAN_PRE80211 is not set 697# CONFIG_WLAN_PRE80211 is not set
688# CONFIG_WLAN_80211 is not set 698# CONFIG_WLAN_80211 is not set
699# CONFIG_IWLWIFI_LEDS is not set
689 700
690# 701#
691# USB Network Adapters 702# USB Network Adapters
@@ -722,6 +733,7 @@ CONFIG_NETDEV_10000=y
722# Character devices 733# Character devices
723# 734#
724# CONFIG_VT is not set 735# CONFIG_VT is not set
736CONFIG_DEVKMEM=y
725# CONFIG_SERIAL_NONSTANDARD is not set 737# CONFIG_SERIAL_NONSTANDARD is not set
726# CONFIG_NOZOMI is not set 738# CONFIG_NOZOMI is not set
727 739
@@ -749,7 +761,6 @@ CONFIG_LEGACY_PTY_COUNT=256
749# CONFIG_IPMI_HANDLER is not set 761# CONFIG_IPMI_HANDLER is not set
750CONFIG_HW_RANDOM=y 762CONFIG_HW_RANDOM=y
751# CONFIG_NVRAM is not set 763# CONFIG_NVRAM is not set
752# CONFIG_GEN_RTC is not set
753# CONFIG_R3964 is not set 764# CONFIG_R3964 is not set
754# CONFIG_APPLICOM is not set 765# CONFIG_APPLICOM is not set
755# CONFIG_RAW_DRIVER is not set 766# CONFIG_RAW_DRIVER is not set
@@ -760,13 +771,6 @@ CONFIG_I2C_BOARDINFO=y
760CONFIG_I2C_CHARDEV=y 771CONFIG_I2C_CHARDEV=y
761 772
762# 773#
763# I2C Algorithms
764#
765# CONFIG_I2C_ALGOBIT is not set
766# CONFIG_I2C_ALGOPCF is not set
767# CONFIG_I2C_ALGOPCA is not set
768
769#
770# I2C Hardware Bus support 774# I2C Hardware Bus support
771# 775#
772# CONFIG_I2C_ALI1535 is not set 776# CONFIG_I2C_ALI1535 is not set
@@ -793,6 +797,7 @@ CONFIG_I2C_MPC=y
793# CONFIG_I2C_VIA is not set 797# CONFIG_I2C_VIA is not set
794# CONFIG_I2C_VIAPRO is not set 798# CONFIG_I2C_VIAPRO is not set
795# CONFIG_I2C_VOODOO3 is not set 799# CONFIG_I2C_VOODOO3 is not set
800# CONFIG_I2C_PCA_PLATFORM is not set
796 801
797# 802#
798# Miscellaneous I2C Chip support 803# Miscellaneous I2C Chip support
@@ -802,17 +807,12 @@ CONFIG_I2C_MPC=y
802CONFIG_SENSORS_PCF8574=y 807CONFIG_SENSORS_PCF8574=y
803# CONFIG_PCF8575 is not set 808# CONFIG_PCF8575 is not set
804# CONFIG_SENSORS_PCF8591 is not set 809# CONFIG_SENSORS_PCF8591 is not set
805# CONFIG_TPS65010 is not set
806# CONFIG_SENSORS_MAX6875 is not set 810# CONFIG_SENSORS_MAX6875 is not set
807# CONFIG_SENSORS_TSL2550 is not set 811# CONFIG_SENSORS_TSL2550 is not set
808# CONFIG_I2C_DEBUG_CORE is not set 812# CONFIG_I2C_DEBUG_CORE is not set
809# CONFIG_I2C_DEBUG_ALGO is not set 813# CONFIG_I2C_DEBUG_ALGO is not set
810# CONFIG_I2C_DEBUG_BUS is not set 814# CONFIG_I2C_DEBUG_BUS is not set
811# CONFIG_I2C_DEBUG_CHIP is not set 815# CONFIG_I2C_DEBUG_CHIP is not set
812
813#
814# SPI support
815#
816CONFIG_SPI=y 816CONFIG_SPI=y
817CONFIG_SPI_MASTER=y 817CONFIG_SPI_MASTER=y
818 818
@@ -862,12 +862,22 @@ CONFIG_SSB_POSSIBLE=y
862# Multifunction device drivers 862# Multifunction device drivers
863# 863#
864# CONFIG_MFD_SM501 is not set 864# CONFIG_MFD_SM501 is not set
865# CONFIG_HTC_PASIC3 is not set
865 866
866# 867#
867# Multimedia devices 868# Multimedia devices
868# 869#
870
871#
872# Multimedia core support
873#
869# CONFIG_VIDEO_DEV is not set 874# CONFIG_VIDEO_DEV is not set
870# CONFIG_DVB_CORE is not set 875# CONFIG_DVB_CORE is not set
876# CONFIG_VIDEO_MEDIA is not set
877
878#
879# Multimedia drivers
880#
871CONFIG_DAB=y 881CONFIG_DAB=y
872# CONFIG_USB_DABUSB is not set 882# CONFIG_USB_DABUSB is not set
873 883
@@ -905,16 +915,20 @@ CONFIG_USB_DEVICEFS=y
905CONFIG_USB_DEVICE_CLASS=y 915CONFIG_USB_DEVICE_CLASS=y
906# CONFIG_USB_DYNAMIC_MINORS is not set 916# CONFIG_USB_DYNAMIC_MINORS is not set
907# CONFIG_USB_OTG is not set 917# CONFIG_USB_OTG is not set
918# CONFIG_USB_OTG_WHITELIST is not set
919# CONFIG_USB_OTG_BLACKLIST_HUB is not set
908 920
909# 921#
910# USB Host Controller Drivers 922# USB Host Controller Drivers
911# 923#
924# CONFIG_USB_C67X00_HCD is not set
912CONFIG_USB_EHCI_HCD=y 925CONFIG_USB_EHCI_HCD=y
913CONFIG_USB_EHCI_ROOT_HUB_TT=y 926CONFIG_USB_EHCI_ROOT_HUB_TT=y
914# CONFIG_USB_EHCI_TT_NEWSCHED is not set 927# CONFIG_USB_EHCI_TT_NEWSCHED is not set
915CONFIG_USB_EHCI_FSL=y 928CONFIG_USB_EHCI_FSL=y
916CONFIG_USB_EHCI_HCD_PPC_OF=y 929CONFIG_USB_EHCI_HCD_PPC_OF=y
917# CONFIG_USB_ISP116X_HCD is not set 930# CONFIG_USB_ISP116X_HCD is not set
931# CONFIG_USB_ISP1760_HCD is not set
918# CONFIG_USB_OHCI_HCD is not set 932# CONFIG_USB_OHCI_HCD is not set
919CONFIG_USB_UHCI_HCD=y 933CONFIG_USB_UHCI_HCD=y
920# CONFIG_USB_SL811_HCD is not set 934# CONFIG_USB_SL811_HCD is not set
@@ -925,6 +939,7 @@ CONFIG_USB_UHCI_HCD=y
925# 939#
926# CONFIG_USB_ACM is not set 940# CONFIG_USB_ACM is not set
927# CONFIG_USB_PRINTER is not set 941# CONFIG_USB_PRINTER is not set
942# CONFIG_USB_WDM is not set
928 943
929# 944#
930# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 945# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -945,6 +960,7 @@ CONFIG_USB_STORAGE=y
945# CONFIG_USB_STORAGE_JUMPSHOT is not set 960# CONFIG_USB_STORAGE_JUMPSHOT is not set
946# CONFIG_USB_STORAGE_ALAUDA is not set 961# CONFIG_USB_STORAGE_ALAUDA is not set
947# CONFIG_USB_STORAGE_KARMA is not set 962# CONFIG_USB_STORAGE_KARMA is not set
963# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
948# CONFIG_USB_LIBUSUAL is not set 964# CONFIG_USB_LIBUSUAL is not set
949 965
950# 966#
@@ -982,10 +998,12 @@ CONFIG_USB_MON=y
982# CONFIG_USB_TRANCEVIBRATOR is not set 998# CONFIG_USB_TRANCEVIBRATOR is not set
983# CONFIG_USB_IOWARRIOR is not set 999# CONFIG_USB_IOWARRIOR is not set
984# CONFIG_USB_TEST is not set 1000# CONFIG_USB_TEST is not set
1001# CONFIG_USB_ISIGHTFW is not set
985# CONFIG_USB_GADGET is not set 1002# CONFIG_USB_GADGET is not set
986# CONFIG_MMC is not set 1003# CONFIG_MMC is not set
987# CONFIG_MEMSTICK is not set 1004# CONFIG_MEMSTICK is not set
988# CONFIG_NEW_LEDS is not set 1005# CONFIG_NEW_LEDS is not set
1006# CONFIG_ACCESSIBILITY is not set
989# CONFIG_INFINIBAND is not set 1007# CONFIG_INFINIBAND is not set
990# CONFIG_EDAC is not set 1008# CONFIG_EDAC is not set
991CONFIG_RTC_LIB=y 1009CONFIG_RTC_LIB=y
@@ -1040,11 +1058,8 @@ CONFIG_RTC_DRV_DS1307=y
1040# 1058#
1041# on-CPU RTC drivers 1059# on-CPU RTC drivers
1042# 1060#
1061# CONFIG_RTC_DRV_PPC is not set
1043# CONFIG_DMADEVICES is not set 1062# CONFIG_DMADEVICES is not set
1044
1045#
1046# Userspace I/O
1047#
1048# CONFIG_UIO is not set 1063# CONFIG_UIO is not set
1049 1064
1050# 1065#
@@ -1064,7 +1079,6 @@ CONFIG_FS_MBCACHE=y
1064# CONFIG_JFS_FS is not set 1079# CONFIG_JFS_FS is not set
1065# CONFIG_FS_POSIX_ACL is not set 1080# CONFIG_FS_POSIX_ACL is not set
1066# CONFIG_XFS_FS is not set 1081# CONFIG_XFS_FS is not set
1067# CONFIG_GFS2_FS is not set
1068# CONFIG_OCFS2_FS is not set 1082# CONFIG_OCFS2_FS is not set
1069CONFIG_DNOTIFY=y 1083CONFIG_DNOTIFY=y
1070CONFIG_INOTIFY=y 1084CONFIG_INOTIFY=y
@@ -1126,7 +1140,6 @@ CONFIG_NFS_FS=y
1126CONFIG_NFS_V3=y 1140CONFIG_NFS_V3=y
1127# CONFIG_NFS_V3_ACL is not set 1141# CONFIG_NFS_V3_ACL is not set
1128CONFIG_NFS_V4=y 1142CONFIG_NFS_V4=y
1129# CONFIG_NFS_DIRECTIO is not set
1130# CONFIG_NFSD is not set 1143# CONFIG_NFSD is not set
1131CONFIG_ROOT_NFS=y 1144CONFIG_ROOT_NFS=y
1132CONFIG_LOCKD=y 1145CONFIG_LOCKD=y
@@ -1210,6 +1223,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1210# Library routines 1223# Library routines
1211# 1224#
1212CONFIG_BITREVERSE=y 1225CONFIG_BITREVERSE=y
1226# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1213# CONFIG_CRC_CCITT is not set 1227# CONFIG_CRC_CCITT is not set
1214# CONFIG_CRC16 is not set 1228# CONFIG_CRC16 is not set
1215# CONFIG_CRC_ITU_T is not set 1229# CONFIG_CRC_ITU_T is not set
@@ -1220,6 +1234,7 @@ CONFIG_PLIST=y
1220CONFIG_HAS_IOMEM=y 1234CONFIG_HAS_IOMEM=y
1221CONFIG_HAS_IOPORT=y 1235CONFIG_HAS_IOPORT=y
1222CONFIG_HAS_DMA=y 1236CONFIG_HAS_DMA=y
1237CONFIG_HAVE_LMB=y
1223 1238
1224# 1239#
1225# Kernel hacking 1240# Kernel hacking
@@ -1227,6 +1242,7 @@ CONFIG_HAS_DMA=y
1227# CONFIG_PRINTK_TIME is not set 1242# CONFIG_PRINTK_TIME is not set
1228CONFIG_ENABLE_WARN_DEPRECATED=y 1243CONFIG_ENABLE_WARN_DEPRECATED=y
1229CONFIG_ENABLE_MUST_CHECK=y 1244CONFIG_ENABLE_MUST_CHECK=y
1245CONFIG_FRAME_WARN=1024
1230# CONFIG_MAGIC_SYSRQ is not set 1246# CONFIG_MAGIC_SYSRQ is not set
1231# CONFIG_UNUSED_SYMBOLS is not set 1247# CONFIG_UNUSED_SYMBOLS is not set
1232# CONFIG_DEBUG_FS is not set 1248# CONFIG_DEBUG_FS is not set
@@ -1236,6 +1252,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1236# CONFIG_SLUB_STATS is not set 1252# CONFIG_SLUB_STATS is not set
1237# CONFIG_DEBUG_BUGVERBOSE is not set 1253# CONFIG_DEBUG_BUGVERBOSE is not set
1238# CONFIG_SAMPLES is not set 1254# CONFIG_SAMPLES is not set
1255# CONFIG_IRQSTACKS is not set
1239# CONFIG_PPC_EARLY_DEBUG is not set 1256# CONFIG_PPC_EARLY_DEBUG is not set
1240 1257
1241# 1258#
@@ -1245,51 +1262,81 @@ CONFIG_ENABLE_MUST_CHECK=y
1245# CONFIG_SECURITY is not set 1262# CONFIG_SECURITY is not set
1246# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1263# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1247CONFIG_CRYPTO=y 1264CONFIG_CRYPTO=y
1265
1266#
1267# Crypto core or helper
1268#
1248CONFIG_CRYPTO_ALGAPI=y 1269CONFIG_CRYPTO_ALGAPI=y
1249CONFIG_CRYPTO_BLKCIPHER=y 1270CONFIG_CRYPTO_BLKCIPHER=y
1250# CONFIG_CRYPTO_SEQIV is not set
1251CONFIG_CRYPTO_MANAGER=y 1271CONFIG_CRYPTO_MANAGER=y
1272# CONFIG_CRYPTO_GF128MUL is not set
1273# CONFIG_CRYPTO_NULL is not set
1274# CONFIG_CRYPTO_CRYPTD is not set
1275# CONFIG_CRYPTO_AUTHENC is not set
1276# CONFIG_CRYPTO_TEST is not set
1277
1278#
1279# Authenticated Encryption with Associated Data
1280#
1281# CONFIG_CRYPTO_CCM is not set
1282# CONFIG_CRYPTO_GCM is not set
1283# CONFIG_CRYPTO_SEQIV is not set
1284
1285#
1286# Block modes
1287#
1288CONFIG_CRYPTO_CBC=y
1289# CONFIG_CRYPTO_CTR is not set
1290# CONFIG_CRYPTO_CTS is not set
1291# CONFIG_CRYPTO_ECB is not set
1292# CONFIG_CRYPTO_LRW is not set
1293CONFIG_CRYPTO_PCBC=m
1294# CONFIG_CRYPTO_XTS is not set
1295
1296#
1297# Hash modes
1298#
1252# CONFIG_CRYPTO_HMAC is not set 1299# CONFIG_CRYPTO_HMAC is not set
1253# CONFIG_CRYPTO_XCBC is not set 1300# CONFIG_CRYPTO_XCBC is not set
1254# CONFIG_CRYPTO_NULL is not set 1301
1302#
1303# Digest
1304#
1305# CONFIG_CRYPTO_CRC32C is not set
1255# CONFIG_CRYPTO_MD4 is not set 1306# CONFIG_CRYPTO_MD4 is not set
1256CONFIG_CRYPTO_MD5=y 1307CONFIG_CRYPTO_MD5=y
1308# CONFIG_CRYPTO_MICHAEL_MIC is not set
1257# CONFIG_CRYPTO_SHA1 is not set 1309# CONFIG_CRYPTO_SHA1 is not set
1258# CONFIG_CRYPTO_SHA256 is not set 1310# CONFIG_CRYPTO_SHA256 is not set
1259# CONFIG_CRYPTO_SHA512 is not set 1311# CONFIG_CRYPTO_SHA512 is not set
1260# CONFIG_CRYPTO_WP512 is not set
1261# CONFIG_CRYPTO_TGR192 is not set 1312# CONFIG_CRYPTO_TGR192 is not set
1262# CONFIG_CRYPTO_GF128MUL is not set 1313# CONFIG_CRYPTO_WP512 is not set
1263# CONFIG_CRYPTO_ECB is not set 1314
1264CONFIG_CRYPTO_CBC=y 1315#
1265CONFIG_CRYPTO_PCBC=m 1316# Ciphers
1266# CONFIG_CRYPTO_LRW is not set 1317#
1267# CONFIG_CRYPTO_XTS is not set
1268# CONFIG_CRYPTO_CTR is not set
1269# CONFIG_CRYPTO_GCM is not set
1270# CONFIG_CRYPTO_CCM is not set
1271# CONFIG_CRYPTO_CRYPTD is not set
1272CONFIG_CRYPTO_DES=y
1273# CONFIG_CRYPTO_FCRYPT is not set
1274# CONFIG_CRYPTO_BLOWFISH is not set
1275# CONFIG_CRYPTO_TWOFISH is not set
1276# CONFIG_CRYPTO_SERPENT is not set
1277# CONFIG_CRYPTO_AES is not set 1318# CONFIG_CRYPTO_AES is not set
1319# CONFIG_CRYPTO_ANUBIS is not set
1320# CONFIG_CRYPTO_ARC4 is not set
1321# CONFIG_CRYPTO_BLOWFISH is not set
1322# CONFIG_CRYPTO_CAMELLIA is not set
1278# CONFIG_CRYPTO_CAST5 is not set 1323# CONFIG_CRYPTO_CAST5 is not set
1279# CONFIG_CRYPTO_CAST6 is not set 1324# CONFIG_CRYPTO_CAST6 is not set
1280# CONFIG_CRYPTO_TEA is not set 1325CONFIG_CRYPTO_DES=y
1281# CONFIG_CRYPTO_ARC4 is not set 1326# CONFIG_CRYPTO_FCRYPT is not set
1282# CONFIG_CRYPTO_KHAZAD is not set 1327# CONFIG_CRYPTO_KHAZAD is not set
1283# CONFIG_CRYPTO_ANUBIS is not set
1284# CONFIG_CRYPTO_SEED is not set
1285# CONFIG_CRYPTO_SALSA20 is not set 1328# CONFIG_CRYPTO_SALSA20 is not set
1329# CONFIG_CRYPTO_SEED is not set
1330# CONFIG_CRYPTO_SERPENT is not set
1331# CONFIG_CRYPTO_TEA is not set
1332# CONFIG_CRYPTO_TWOFISH is not set
1333
1334#
1335# Compression
1336#
1286# CONFIG_CRYPTO_DEFLATE is not set 1337# CONFIG_CRYPTO_DEFLATE is not set
1287# CONFIG_CRYPTO_MICHAEL_MIC is not set
1288# CONFIG_CRYPTO_CRC32C is not set
1289# CONFIG_CRYPTO_CAMELLIA is not set
1290# CONFIG_CRYPTO_TEST is not set
1291# CONFIG_CRYPTO_AUTHENC is not set
1292# CONFIG_CRYPTO_LZO is not set 1338# CONFIG_CRYPTO_LZO is not set
1293CONFIG_CRYPTO_HW=y 1339CONFIG_CRYPTO_HW=y
1294# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1340# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1295# CONFIG_PPC_CLOCK is not set 1341# CONFIG_PPC_CLOCK is not set
1342# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig b/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig
index b4e39cf82a8c..fdac4845bad9 100644
--- a/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig
+++ b/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:18 2008 4# Mon Jun 9 08:52:26 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89# CONFIG_KALLSYMS is not set 92# CONFIG_KALLSYMS is not set
90CONFIG_HOTPLUG=y 93CONFIG_HOTPLUG=y
91CONFIG_PRINTK=y 94CONFIG_PRINTK=y
@@ -110,12 +113,14 @@ CONFIG_SLUB=y
110CONFIG_HAVE_OPROFILE=y 113CONFIG_HAVE_OPROFILE=y
111CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
112CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
116# CONFIG_HAVE_DMA_ATTRS is not set
113CONFIG_PROC_PAGE_MONITOR=y 117CONFIG_PROC_PAGE_MONITOR=y
114CONFIG_SLABINFO=y 118CONFIG_SLABINFO=y
115CONFIG_RT_MUTEXES=y 119CONFIG_RT_MUTEXES=y
116# CONFIG_TINY_SHMEM is not set 120# CONFIG_TINY_SHMEM is not set
117CONFIG_BASE_SMALL=0 121CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 122CONFIG_MODULES=y
123# CONFIG_MODULE_FORCE_LOAD is not set
119CONFIG_MODULE_UNLOAD=y 124CONFIG_MODULE_UNLOAD=y
120# CONFIG_MODULE_FORCE_UNLOAD is not set 125# CONFIG_MODULE_FORCE_UNLOAD is not set
121# CONFIG_MODVERSIONS is not set 126# CONFIG_MODVERSIONS is not set
@@ -210,11 +215,13 @@ CONFIG_FLATMEM=y
210CONFIG_FLAT_NODE_MEM_MAP=y 215CONFIG_FLAT_NODE_MEM_MAP=y
211# CONFIG_SPARSEMEM_STATIC is not set 216# CONFIG_SPARSEMEM_STATIC is not set
212# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
218CONFIG_PAGEFLAGS_EXTENDED=y
213CONFIG_SPLIT_PTLOCK_CPUS=4 219CONFIG_SPLIT_PTLOCK_CPUS=4
214# CONFIG_RESOURCES_64BIT is not set 220# CONFIG_RESOURCES_64BIT is not set
215CONFIG_ZONE_DMA_FLAG=1 221CONFIG_ZONE_DMA_FLAG=1
216CONFIG_BOUNCE=y 222CONFIG_BOUNCE=y
217CONFIG_VIRT_TO_BUS=y 223CONFIG_VIRT_TO_BUS=y
224CONFIG_FORCE_MAX_ZONEORDER=11
218CONFIG_PROC_DEVICETREE=y 225CONFIG_PROC_DEVICETREE=y
219# CONFIG_CMDLINE_BOOL is not set 226# CONFIG_CMDLINE_BOOL is not set
220# CONFIG_PM is not set 227# CONFIG_PM is not set
@@ -237,6 +244,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
237CONFIG_PCI_LEGACY=y 244CONFIG_PCI_LEGACY=y
238# CONFIG_PCCARD is not set 245# CONFIG_PCCARD is not set
239# CONFIG_HOTPLUG_PCI is not set 246# CONFIG_HOTPLUG_PCI is not set
247# CONFIG_HAS_RAPIDIO is not set
240 248
241# 249#
242# Advanced setup 250# Advanced setup
@@ -246,11 +254,11 @@ CONFIG_PCI_LEGACY=y
246# 254#
247# Default settings for advanced configuration options are used 255# Default settings for advanced configuration options are used
248# 256#
249CONFIG_HIGHMEM_START=0xfe000000
250CONFIG_LOWMEM_SIZE=0x30000000 257CONFIG_LOWMEM_SIZE=0x30000000
258CONFIG_PAGE_OFFSET=0xc0000000
251CONFIG_KERNEL_START=0xc0000000 259CONFIG_KERNEL_START=0xc0000000
260CONFIG_PHYSICAL_START=0x00000000
252CONFIG_TASK_SIZE=0xc0000000 261CONFIG_TASK_SIZE=0xc0000000
253CONFIG_BOOT_LOAD=0x00800000
254 262
255# 263#
256# Networking 264# Networking
@@ -298,8 +306,6 @@ CONFIG_TCP_CONG_CUBIC=y
298CONFIG_DEFAULT_TCP_CONG="cubic" 306CONFIG_DEFAULT_TCP_CONG="cubic"
299# CONFIG_TCP_MD5SIG is not set 307# CONFIG_TCP_MD5SIG is not set
300# CONFIG_IPV6 is not set 308# CONFIG_IPV6 is not set
301# CONFIG_INET6_XFRM_TUNNEL is not set
302# CONFIG_INET6_TUNNEL is not set
303# CONFIG_NETWORK_SECMARK is not set 309# CONFIG_NETWORK_SECMARK is not set
304# CONFIG_NETFILTER is not set 310# CONFIG_NETFILTER is not set
305# CONFIG_IP_DCCP is not set 311# CONFIG_IP_DCCP is not set
@@ -432,6 +438,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
432# 438#
433# CONFIG_MTD_UBI is not set 439# CONFIG_MTD_UBI is not set
434CONFIG_OF_DEVICE=y 440CONFIG_OF_DEVICE=y
441CONFIG_OF_I2C=y
435# CONFIG_PARPORT is not set 442# CONFIG_PARPORT is not set
436CONFIG_BLK_DEV=y 443CONFIG_BLK_DEV=y
437# CONFIG_BLK_DEV_FD is not set 444# CONFIG_BLK_DEV_FD is not set
@@ -587,7 +594,6 @@ CONFIG_NETDEV_1000=y
587# CONFIG_SIS190 is not set 594# CONFIG_SIS190 is not set
588# CONFIG_SKGE is not set 595# CONFIG_SKGE is not set
589# CONFIG_SKY2 is not set 596# CONFIG_SKY2 is not set
590# CONFIG_SK98LIN is not set
591# CONFIG_VIA_VELOCITY is not set 597# CONFIG_VIA_VELOCITY is not set
592# CONFIG_TIGON3 is not set 598# CONFIG_TIGON3 is not set
593# CONFIG_BNX2 is not set 599# CONFIG_BNX2 is not set
@@ -607,6 +613,7 @@ CONFIG_NETDEV_10000=y
607# CONFIG_MLX4_CORE is not set 613# CONFIG_MLX4_CORE is not set
608# CONFIG_TEHUTI is not set 614# CONFIG_TEHUTI is not set
609# CONFIG_BNX2X is not set 615# CONFIG_BNX2X is not set
616# CONFIG_SFC is not set
610# CONFIG_TR is not set 617# CONFIG_TR is not set
611 618
612# 619#
@@ -614,6 +621,7 @@ CONFIG_NETDEV_10000=y
614# 621#
615# CONFIG_WLAN_PRE80211 is not set 622# CONFIG_WLAN_PRE80211 is not set
616# CONFIG_WLAN_80211 is not set 623# CONFIG_WLAN_80211 is not set
624# CONFIG_IWLWIFI_LEDS is not set
617 625
618# 626#
619# USB Network Adapters 627# USB Network Adapters
@@ -650,6 +658,7 @@ CONFIG_NETDEV_10000=y
650# Character devices 658# Character devices
651# 659#
652# CONFIG_VT is not set 660# CONFIG_VT is not set
661CONFIG_DEVKMEM=y
653# CONFIG_SERIAL_NONSTANDARD is not set 662# CONFIG_SERIAL_NONSTANDARD is not set
654# CONFIG_NOZOMI is not set 663# CONFIG_NOZOMI is not set
655 664
@@ -677,7 +686,6 @@ CONFIG_LEGACY_PTY_COUNT=256
677# CONFIG_IPMI_HANDLER is not set 686# CONFIG_IPMI_HANDLER is not set
678CONFIG_HW_RANDOM=y 687CONFIG_HW_RANDOM=y
679# CONFIG_NVRAM is not set 688# CONFIG_NVRAM is not set
680# CONFIG_GEN_RTC is not set
681# CONFIG_R3964 is not set 689# CONFIG_R3964 is not set
682# CONFIG_APPLICOM is not set 690# CONFIG_APPLICOM is not set
683# CONFIG_RAW_DRIVER is not set 691# CONFIG_RAW_DRIVER is not set
@@ -688,13 +696,6 @@ CONFIG_I2C_BOARDINFO=y
688CONFIG_I2C_CHARDEV=y 696CONFIG_I2C_CHARDEV=y
689 697
690# 698#
691# I2C Algorithms
692#
693# CONFIG_I2C_ALGOBIT is not set
694# CONFIG_I2C_ALGOPCF is not set
695# CONFIG_I2C_ALGOPCA is not set
696
697#
698# I2C Hardware Bus support 699# I2C Hardware Bus support
699# 700#
700# CONFIG_I2C_ALI1535 is not set 701# CONFIG_I2C_ALI1535 is not set
@@ -721,6 +722,7 @@ CONFIG_I2C_MPC=y
721# CONFIG_I2C_VIA is not set 722# CONFIG_I2C_VIA is not set
722# CONFIG_I2C_VIAPRO is not set 723# CONFIG_I2C_VIAPRO is not set
723# CONFIG_I2C_VOODOO3 is not set 724# CONFIG_I2C_VOODOO3 is not set
725# CONFIG_I2C_PCA_PLATFORM is not set
724 726
725# 727#
726# Miscellaneous I2C Chip support 728# Miscellaneous I2C Chip support
@@ -730,17 +732,12 @@ CONFIG_I2C_MPC=y
730CONFIG_SENSORS_PCF8574=y 732CONFIG_SENSORS_PCF8574=y
731# CONFIG_PCF8575 is not set 733# CONFIG_PCF8575 is not set
732# CONFIG_SENSORS_PCF8591 is not set 734# CONFIG_SENSORS_PCF8591 is not set
733# CONFIG_TPS65010 is not set
734# CONFIG_SENSORS_MAX6875 is not set 735# CONFIG_SENSORS_MAX6875 is not set
735# CONFIG_SENSORS_TSL2550 is not set 736# CONFIG_SENSORS_TSL2550 is not set
736# CONFIG_I2C_DEBUG_CORE is not set 737# CONFIG_I2C_DEBUG_CORE is not set
737# CONFIG_I2C_DEBUG_ALGO is not set 738# CONFIG_I2C_DEBUG_ALGO is not set
738# CONFIG_I2C_DEBUG_BUS is not set 739# CONFIG_I2C_DEBUG_BUS is not set
739# CONFIG_I2C_DEBUG_CHIP is not set 740# CONFIG_I2C_DEBUG_CHIP is not set
740
741#
742# SPI support
743#
744CONFIG_SPI=y 741CONFIG_SPI=y
745CONFIG_SPI_MASTER=y 742CONFIG_SPI_MASTER=y
746 743
@@ -790,12 +787,22 @@ CONFIG_SSB_POSSIBLE=y
790# Multifunction device drivers 787# Multifunction device drivers
791# 788#
792# CONFIG_MFD_SM501 is not set 789# CONFIG_MFD_SM501 is not set
790# CONFIG_HTC_PASIC3 is not set
793 791
794# 792#
795# Multimedia devices 793# Multimedia devices
796# 794#
795
796#
797# Multimedia core support
798#
797# CONFIG_VIDEO_DEV is not set 799# CONFIG_VIDEO_DEV is not set
798# CONFIG_DVB_CORE is not set 800# CONFIG_DVB_CORE is not set
801# CONFIG_VIDEO_MEDIA is not set
802
803#
804# Multimedia drivers
805#
799CONFIG_DAB=y 806CONFIG_DAB=y
800# CONFIG_USB_DABUSB is not set 807# CONFIG_USB_DABUSB is not set
801 808
@@ -833,16 +840,20 @@ CONFIG_USB=y
833CONFIG_USB_DEVICE_CLASS=y 840CONFIG_USB_DEVICE_CLASS=y
834# CONFIG_USB_DYNAMIC_MINORS is not set 841# CONFIG_USB_DYNAMIC_MINORS is not set
835# CONFIG_USB_OTG is not set 842# CONFIG_USB_OTG is not set
843# CONFIG_USB_OTG_WHITELIST is not set
844# CONFIG_USB_OTG_BLACKLIST_HUB is not set
836 845
837# 846#
838# USB Host Controller Drivers 847# USB Host Controller Drivers
839# 848#
849# CONFIG_USB_C67X00_HCD is not set
840CONFIG_USB_EHCI_HCD=y 850CONFIG_USB_EHCI_HCD=y
841CONFIG_USB_EHCI_ROOT_HUB_TT=y 851CONFIG_USB_EHCI_ROOT_HUB_TT=y
842# CONFIG_USB_EHCI_TT_NEWSCHED is not set 852# CONFIG_USB_EHCI_TT_NEWSCHED is not set
843CONFIG_USB_EHCI_FSL=y 853CONFIG_USB_EHCI_FSL=y
844CONFIG_USB_EHCI_HCD_PPC_OF=y 854CONFIG_USB_EHCI_HCD_PPC_OF=y
845# CONFIG_USB_ISP116X_HCD is not set 855# CONFIG_USB_ISP116X_HCD is not set
856# CONFIG_USB_ISP1760_HCD is not set
846# CONFIG_USB_OHCI_HCD is not set 857# CONFIG_USB_OHCI_HCD is not set
847CONFIG_USB_UHCI_HCD=y 858CONFIG_USB_UHCI_HCD=y
848# CONFIG_USB_SL811_HCD is not set 859# CONFIG_USB_SL811_HCD is not set
@@ -853,6 +864,7 @@ CONFIG_USB_UHCI_HCD=y
853# 864#
854# CONFIG_USB_ACM is not set 865# CONFIG_USB_ACM is not set
855# CONFIG_USB_PRINTER is not set 866# CONFIG_USB_PRINTER is not set
867# CONFIG_USB_WDM is not set
856 868
857# 869#
858# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 870# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -873,6 +885,7 @@ CONFIG_USB_STORAGE=y
873# CONFIG_USB_STORAGE_JUMPSHOT is not set 885# CONFIG_USB_STORAGE_JUMPSHOT is not set
874# CONFIG_USB_STORAGE_ALAUDA is not set 886# CONFIG_USB_STORAGE_ALAUDA is not set
875# CONFIG_USB_STORAGE_KARMA is not set 887# CONFIG_USB_STORAGE_KARMA is not set
888# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
876# CONFIG_USB_LIBUSUAL is not set 889# CONFIG_USB_LIBUSUAL is not set
877 890
878# 891#
@@ -909,10 +922,12 @@ CONFIG_USB_MON=y
909# CONFIG_USB_LD is not set 922# CONFIG_USB_LD is not set
910# CONFIG_USB_TRANCEVIBRATOR is not set 923# CONFIG_USB_TRANCEVIBRATOR is not set
911# CONFIG_USB_IOWARRIOR is not set 924# CONFIG_USB_IOWARRIOR is not set
925# CONFIG_USB_ISIGHTFW is not set
912# CONFIG_USB_GADGET is not set 926# CONFIG_USB_GADGET is not set
913# CONFIG_MMC is not set 927# CONFIG_MMC is not set
914# CONFIG_MEMSTICK is not set 928# CONFIG_MEMSTICK is not set
915# CONFIG_NEW_LEDS is not set 929# CONFIG_NEW_LEDS is not set
930# CONFIG_ACCESSIBILITY is not set
916# CONFIG_INFINIBAND is not set 931# CONFIG_INFINIBAND is not set
917# CONFIG_EDAC is not set 932# CONFIG_EDAC is not set
918CONFIG_RTC_LIB=y 933CONFIG_RTC_LIB=y
@@ -967,11 +982,8 @@ CONFIG_RTC_DRV_DS1307=y
967# 982#
968# on-CPU RTC drivers 983# on-CPU RTC drivers
969# 984#
985# CONFIG_RTC_DRV_PPC is not set
970# CONFIG_DMADEVICES is not set 986# CONFIG_DMADEVICES is not set
971
972#
973# Userspace I/O
974#
975# CONFIG_UIO is not set 987# CONFIG_UIO is not set
976 988
977# 989#
@@ -991,7 +1003,6 @@ CONFIG_FS_MBCACHE=y
991# CONFIG_JFS_FS is not set 1003# CONFIG_JFS_FS is not set
992# CONFIG_FS_POSIX_ACL is not set 1004# CONFIG_FS_POSIX_ACL is not set
993# CONFIG_XFS_FS is not set 1005# CONFIG_XFS_FS is not set
994# CONFIG_GFS2_FS is not set
995# CONFIG_OCFS2_FS is not set 1006# CONFIG_OCFS2_FS is not set
996CONFIG_DNOTIFY=y 1007CONFIG_DNOTIFY=y
997CONFIG_INOTIFY=y 1008CONFIG_INOTIFY=y
@@ -1053,7 +1064,6 @@ CONFIG_NFS_FS=y
1053CONFIG_NFS_V3=y 1064CONFIG_NFS_V3=y
1054# CONFIG_NFS_V3_ACL is not set 1065# CONFIG_NFS_V3_ACL is not set
1055CONFIG_NFS_V4=y 1066CONFIG_NFS_V4=y
1056# CONFIG_NFS_DIRECTIO is not set
1057# CONFIG_NFSD is not set 1067# CONFIG_NFSD is not set
1058CONFIG_ROOT_NFS=y 1068CONFIG_ROOT_NFS=y
1059CONFIG_LOCKD=y 1069CONFIG_LOCKD=y
@@ -1137,6 +1147,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1137# Library routines 1147# Library routines
1138# 1148#
1139CONFIG_BITREVERSE=y 1149CONFIG_BITREVERSE=y
1150# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1140# CONFIG_CRC_CCITT is not set 1151# CONFIG_CRC_CCITT is not set
1141# CONFIG_CRC16 is not set 1152# CONFIG_CRC16 is not set
1142# CONFIG_CRC_ITU_T is not set 1153# CONFIG_CRC_ITU_T is not set
@@ -1147,6 +1158,7 @@ CONFIG_PLIST=y
1147CONFIG_HAS_IOMEM=y 1158CONFIG_HAS_IOMEM=y
1148CONFIG_HAS_IOPORT=y 1159CONFIG_HAS_IOPORT=y
1149CONFIG_HAS_DMA=y 1160CONFIG_HAS_DMA=y
1161CONFIG_HAVE_LMB=y
1150 1162
1151# 1163#
1152# Kernel hacking 1164# Kernel hacking
@@ -1154,6 +1166,7 @@ CONFIG_HAS_DMA=y
1154# CONFIG_PRINTK_TIME is not set 1166# CONFIG_PRINTK_TIME is not set
1155CONFIG_ENABLE_WARN_DEPRECATED=y 1167CONFIG_ENABLE_WARN_DEPRECATED=y
1156CONFIG_ENABLE_MUST_CHECK=y 1168CONFIG_ENABLE_MUST_CHECK=y
1169CONFIG_FRAME_WARN=1024
1157# CONFIG_MAGIC_SYSRQ is not set 1170# CONFIG_MAGIC_SYSRQ is not set
1158# CONFIG_UNUSED_SYMBOLS is not set 1171# CONFIG_UNUSED_SYMBOLS is not set
1159# CONFIG_DEBUG_FS is not set 1172# CONFIG_DEBUG_FS is not set
@@ -1163,6 +1176,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1163# CONFIG_SLUB_STATS is not set 1176# CONFIG_SLUB_STATS is not set
1164# CONFIG_DEBUG_BUGVERBOSE is not set 1177# CONFIG_DEBUG_BUGVERBOSE is not set
1165# CONFIG_SAMPLES is not set 1178# CONFIG_SAMPLES is not set
1179# CONFIG_IRQSTACKS is not set
1166# CONFIG_PPC_EARLY_DEBUG is not set 1180# CONFIG_PPC_EARLY_DEBUG is not set
1167 1181
1168# 1182#
@@ -1172,51 +1186,81 @@ CONFIG_ENABLE_MUST_CHECK=y
1172# CONFIG_SECURITY is not set 1186# CONFIG_SECURITY is not set
1173# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1187# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1174CONFIG_CRYPTO=y 1188CONFIG_CRYPTO=y
1189
1190#
1191# Crypto core or helper
1192#
1175CONFIG_CRYPTO_ALGAPI=y 1193CONFIG_CRYPTO_ALGAPI=y
1176CONFIG_CRYPTO_BLKCIPHER=y 1194CONFIG_CRYPTO_BLKCIPHER=y
1177# CONFIG_CRYPTO_SEQIV is not set
1178CONFIG_CRYPTO_MANAGER=y 1195CONFIG_CRYPTO_MANAGER=y
1196# CONFIG_CRYPTO_GF128MUL is not set
1197# CONFIG_CRYPTO_NULL is not set
1198# CONFIG_CRYPTO_CRYPTD is not set
1199# CONFIG_CRYPTO_AUTHENC is not set
1200# CONFIG_CRYPTO_TEST is not set
1201
1202#
1203# Authenticated Encryption with Associated Data
1204#
1205# CONFIG_CRYPTO_CCM is not set
1206# CONFIG_CRYPTO_GCM is not set
1207# CONFIG_CRYPTO_SEQIV is not set
1208
1209#
1210# Block modes
1211#
1212CONFIG_CRYPTO_CBC=y
1213# CONFIG_CRYPTO_CTR is not set
1214# CONFIG_CRYPTO_CTS is not set
1215# CONFIG_CRYPTO_ECB is not set
1216# CONFIG_CRYPTO_LRW is not set
1217CONFIG_CRYPTO_PCBC=m
1218# CONFIG_CRYPTO_XTS is not set
1219
1220#
1221# Hash modes
1222#
1179# CONFIG_CRYPTO_HMAC is not set 1223# CONFIG_CRYPTO_HMAC is not set
1180# CONFIG_CRYPTO_XCBC is not set 1224# CONFIG_CRYPTO_XCBC is not set
1181# CONFIG_CRYPTO_NULL is not set 1225
1226#
1227# Digest
1228#
1229# CONFIG_CRYPTO_CRC32C is not set
1182# CONFIG_CRYPTO_MD4 is not set 1230# CONFIG_CRYPTO_MD4 is not set
1183CONFIG_CRYPTO_MD5=y 1231CONFIG_CRYPTO_MD5=y
1232# CONFIG_CRYPTO_MICHAEL_MIC is not set
1184# CONFIG_CRYPTO_SHA1 is not set 1233# CONFIG_CRYPTO_SHA1 is not set
1185# CONFIG_CRYPTO_SHA256 is not set 1234# CONFIG_CRYPTO_SHA256 is not set
1186# CONFIG_CRYPTO_SHA512 is not set 1235# CONFIG_CRYPTO_SHA512 is not set
1187# CONFIG_CRYPTO_WP512 is not set
1188# CONFIG_CRYPTO_TGR192 is not set 1236# CONFIG_CRYPTO_TGR192 is not set
1189# CONFIG_CRYPTO_GF128MUL is not set 1237# CONFIG_CRYPTO_WP512 is not set
1190# CONFIG_CRYPTO_ECB is not set 1238
1191CONFIG_CRYPTO_CBC=y 1239#
1192CONFIG_CRYPTO_PCBC=m 1240# Ciphers
1193# CONFIG_CRYPTO_LRW is not set 1241#
1194# CONFIG_CRYPTO_XTS is not set
1195# CONFIG_CRYPTO_CTR is not set
1196# CONFIG_CRYPTO_GCM is not set
1197# CONFIG_CRYPTO_CCM is not set
1198# CONFIG_CRYPTO_CRYPTD is not set
1199CONFIG_CRYPTO_DES=y
1200# CONFIG_CRYPTO_FCRYPT is not set
1201# CONFIG_CRYPTO_BLOWFISH is not set
1202# CONFIG_CRYPTO_TWOFISH is not set
1203# CONFIG_CRYPTO_SERPENT is not set
1204# CONFIG_CRYPTO_AES is not set 1242# CONFIG_CRYPTO_AES is not set
1243# CONFIG_CRYPTO_ANUBIS is not set
1244# CONFIG_CRYPTO_ARC4 is not set
1245# CONFIG_CRYPTO_BLOWFISH is not set
1246# CONFIG_CRYPTO_CAMELLIA is not set
1205# CONFIG_CRYPTO_CAST5 is not set 1247# CONFIG_CRYPTO_CAST5 is not set
1206# CONFIG_CRYPTO_CAST6 is not set 1248# CONFIG_CRYPTO_CAST6 is not set
1207# CONFIG_CRYPTO_TEA is not set 1249CONFIG_CRYPTO_DES=y
1208# CONFIG_CRYPTO_ARC4 is not set 1250# CONFIG_CRYPTO_FCRYPT is not set
1209# CONFIG_CRYPTO_KHAZAD is not set 1251# CONFIG_CRYPTO_KHAZAD is not set
1210# CONFIG_CRYPTO_ANUBIS is not set
1211# CONFIG_CRYPTO_SEED is not set
1212# CONFIG_CRYPTO_SALSA20 is not set 1252# CONFIG_CRYPTO_SALSA20 is not set
1253# CONFIG_CRYPTO_SEED is not set
1254# CONFIG_CRYPTO_SERPENT is not set
1255# CONFIG_CRYPTO_TEA is not set
1256# CONFIG_CRYPTO_TWOFISH is not set
1257
1258#
1259# Compression
1260#
1213# CONFIG_CRYPTO_DEFLATE is not set 1261# CONFIG_CRYPTO_DEFLATE is not set
1214# CONFIG_CRYPTO_MICHAEL_MIC is not set
1215# CONFIG_CRYPTO_CRC32C is not set
1216# CONFIG_CRYPTO_CAMELLIA is not set
1217# CONFIG_CRYPTO_TEST is not set
1218# CONFIG_CRYPTO_AUTHENC is not set
1219# CONFIG_CRYPTO_LZO is not set 1262# CONFIG_CRYPTO_LZO is not set
1220CONFIG_CRYPTO_HW=y 1263CONFIG_CRYPTO_HW=y
1221# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1264# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1222# CONFIG_PPC_CLOCK is not set 1265# CONFIG_PPC_CLOCK is not set
1266# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/mpc834x_mds_defconfig b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig
index b4e82c0e2be7..c82e96e984fc 100644
--- a/arch/powerpc/configs/83xx/mpc834x_mds_defconfig
+++ b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:36:56 2008 4# Mon Jun 9 08:52:26 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89# CONFIG_KALLSYMS is not set 92# CONFIG_KALLSYMS is not set
90CONFIG_HOTPLUG=y 93CONFIG_HOTPLUG=y
91CONFIG_PRINTK=y 94CONFIG_PRINTK=y
@@ -110,12 +113,14 @@ CONFIG_SLUB=y
110CONFIG_HAVE_OPROFILE=y 113CONFIG_HAVE_OPROFILE=y
111CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
112CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
116# CONFIG_HAVE_DMA_ATTRS is not set
113CONFIG_PROC_PAGE_MONITOR=y 117CONFIG_PROC_PAGE_MONITOR=y
114CONFIG_SLABINFO=y 118CONFIG_SLABINFO=y
115CONFIG_RT_MUTEXES=y 119CONFIG_RT_MUTEXES=y
116# CONFIG_TINY_SHMEM is not set 120# CONFIG_TINY_SHMEM is not set
117CONFIG_BASE_SMALL=0 121CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 122CONFIG_MODULES=y
123# CONFIG_MODULE_FORCE_LOAD is not set
119CONFIG_MODULE_UNLOAD=y 124CONFIG_MODULE_UNLOAD=y
120# CONFIG_MODULE_FORCE_UNLOAD is not set 125# CONFIG_MODULE_FORCE_UNLOAD is not set
121# CONFIG_MODVERSIONS is not set 126# CONFIG_MODVERSIONS is not set
@@ -210,11 +215,13 @@ CONFIG_FLATMEM=y
210CONFIG_FLAT_NODE_MEM_MAP=y 215CONFIG_FLAT_NODE_MEM_MAP=y
211# CONFIG_SPARSEMEM_STATIC is not set 216# CONFIG_SPARSEMEM_STATIC is not set
212# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
218CONFIG_PAGEFLAGS_EXTENDED=y
213CONFIG_SPLIT_PTLOCK_CPUS=4 219CONFIG_SPLIT_PTLOCK_CPUS=4
214# CONFIG_RESOURCES_64BIT is not set 220# CONFIG_RESOURCES_64BIT is not set
215CONFIG_ZONE_DMA_FLAG=1 221CONFIG_ZONE_DMA_FLAG=1
216CONFIG_BOUNCE=y 222CONFIG_BOUNCE=y
217CONFIG_VIRT_TO_BUS=y 223CONFIG_VIRT_TO_BUS=y
224CONFIG_FORCE_MAX_ZONEORDER=11
218CONFIG_PROC_DEVICETREE=y 225CONFIG_PROC_DEVICETREE=y
219# CONFIG_CMDLINE_BOOL is not set 226# CONFIG_CMDLINE_BOOL is not set
220# CONFIG_PM is not set 227# CONFIG_PM is not set
@@ -237,6 +244,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
237CONFIG_PCI_LEGACY=y 244CONFIG_PCI_LEGACY=y
238# CONFIG_PCCARD is not set 245# CONFIG_PCCARD is not set
239# CONFIG_HOTPLUG_PCI is not set 246# CONFIG_HOTPLUG_PCI is not set
247# CONFIG_HAS_RAPIDIO is not set
240 248
241# 249#
242# Advanced setup 250# Advanced setup
@@ -246,11 +254,11 @@ CONFIG_PCI_LEGACY=y
246# 254#
247# Default settings for advanced configuration options are used 255# Default settings for advanced configuration options are used
248# 256#
249CONFIG_HIGHMEM_START=0xfe000000
250CONFIG_LOWMEM_SIZE=0x30000000 257CONFIG_LOWMEM_SIZE=0x30000000
258CONFIG_PAGE_OFFSET=0xc0000000
251CONFIG_KERNEL_START=0xc0000000 259CONFIG_KERNEL_START=0xc0000000
260CONFIG_PHYSICAL_START=0x00000000
252CONFIG_TASK_SIZE=0xc0000000 261CONFIG_TASK_SIZE=0xc0000000
253CONFIG_BOOT_LOAD=0x00800000
254 262
255# 263#
256# Networking 264# Networking
@@ -298,8 +306,6 @@ CONFIG_TCP_CONG_CUBIC=y
298CONFIG_DEFAULT_TCP_CONG="cubic" 306CONFIG_DEFAULT_TCP_CONG="cubic"
299# CONFIG_TCP_MD5SIG is not set 307# CONFIG_TCP_MD5SIG is not set
300# CONFIG_IPV6 is not set 308# CONFIG_IPV6 is not set
301# CONFIG_INET6_XFRM_TUNNEL is not set
302# CONFIG_INET6_TUNNEL is not set
303# CONFIG_NETWORK_SECMARK is not set 309# CONFIG_NETWORK_SECMARK is not set
304# CONFIG_NETFILTER is not set 310# CONFIG_NETFILTER is not set
305# CONFIG_IP_DCCP is not set 311# CONFIG_IP_DCCP is not set
@@ -353,6 +359,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
353# CONFIG_CONNECTOR is not set 359# CONFIG_CONNECTOR is not set
354# CONFIG_MTD is not set 360# CONFIG_MTD is not set
355CONFIG_OF_DEVICE=y 361CONFIG_OF_DEVICE=y
362CONFIG_OF_I2C=y
356# CONFIG_PARPORT is not set 363# CONFIG_PARPORT is not set
357CONFIG_BLK_DEV=y 364CONFIG_BLK_DEV=y
358# CONFIG_BLK_DEV_FD is not set 365# CONFIG_BLK_DEV_FD is not set
@@ -471,7 +478,6 @@ CONFIG_NETDEV_1000=y
471# CONFIG_SIS190 is not set 478# CONFIG_SIS190 is not set
472# CONFIG_SKGE is not set 479# CONFIG_SKGE is not set
473# CONFIG_SKY2 is not set 480# CONFIG_SKY2 is not set
474# CONFIG_SK98LIN is not set
475# CONFIG_VIA_VELOCITY is not set 481# CONFIG_VIA_VELOCITY is not set
476# CONFIG_TIGON3 is not set 482# CONFIG_TIGON3 is not set
477# CONFIG_BNX2 is not set 483# CONFIG_BNX2 is not set
@@ -491,6 +497,7 @@ CONFIG_NETDEV_10000=y
491# CONFIG_MLX4_CORE is not set 497# CONFIG_MLX4_CORE is not set
492# CONFIG_TEHUTI is not set 498# CONFIG_TEHUTI is not set
493# CONFIG_BNX2X is not set 499# CONFIG_BNX2X is not set
500# CONFIG_SFC is not set
494# CONFIG_TR is not set 501# CONFIG_TR is not set
495 502
496# 503#
@@ -498,6 +505,7 @@ CONFIG_NETDEV_10000=y
498# 505#
499# CONFIG_WLAN_PRE80211 is not set 506# CONFIG_WLAN_PRE80211 is not set
500# CONFIG_WLAN_80211 is not set 507# CONFIG_WLAN_80211 is not set
508# CONFIG_IWLWIFI_LEDS is not set
501# CONFIG_WAN is not set 509# CONFIG_WAN is not set
502# CONFIG_FDDI is not set 510# CONFIG_FDDI is not set
503# CONFIG_HIPPI is not set 511# CONFIG_HIPPI is not set
@@ -544,6 +552,7 @@ CONFIG_INPUT=y
544# Character devices 552# Character devices
545# 553#
546# CONFIG_VT is not set 554# CONFIG_VT is not set
555CONFIG_DEVKMEM=y
547# CONFIG_SERIAL_NONSTANDARD is not set 556# CONFIG_SERIAL_NONSTANDARD is not set
548# CONFIG_NOZOMI is not set 557# CONFIG_NOZOMI is not set
549 558
@@ -571,7 +580,6 @@ CONFIG_LEGACY_PTY_COUNT=256
571# CONFIG_IPMI_HANDLER is not set 580# CONFIG_IPMI_HANDLER is not set
572# CONFIG_HW_RANDOM is not set 581# CONFIG_HW_RANDOM is not set
573# CONFIG_NVRAM is not set 582# CONFIG_NVRAM is not set
574# CONFIG_GEN_RTC is not set
575# CONFIG_R3964 is not set 583# CONFIG_R3964 is not set
576# CONFIG_APPLICOM is not set 584# CONFIG_APPLICOM is not set
577# CONFIG_RAW_DRIVER is not set 585# CONFIG_RAW_DRIVER is not set
@@ -582,13 +590,6 @@ CONFIG_I2C_BOARDINFO=y
582CONFIG_I2C_CHARDEV=y 590CONFIG_I2C_CHARDEV=y
583 591
584# 592#
585# I2C Algorithms
586#
587# CONFIG_I2C_ALGOBIT is not set
588# CONFIG_I2C_ALGOPCF is not set
589# CONFIG_I2C_ALGOPCA is not set
590
591#
592# I2C Hardware Bus support 593# I2C Hardware Bus support
593# 594#
594# CONFIG_I2C_ALI1535 is not set 595# CONFIG_I2C_ALI1535 is not set
@@ -614,6 +615,7 @@ CONFIG_I2C_MPC=y
614# CONFIG_I2C_VIA is not set 615# CONFIG_I2C_VIA is not set
615# CONFIG_I2C_VIAPRO is not set 616# CONFIG_I2C_VIAPRO is not set
616# CONFIG_I2C_VOODOO3 is not set 617# CONFIG_I2C_VOODOO3 is not set
618# CONFIG_I2C_PCA_PLATFORM is not set
617 619
618# 620#
619# Miscellaneous I2C Chip support 621# Miscellaneous I2C Chip support
@@ -623,19 +625,13 @@ CONFIG_I2C_MPC=y
623# CONFIG_SENSORS_PCF8574 is not set 625# CONFIG_SENSORS_PCF8574 is not set
624# CONFIG_PCF8575 is not set 626# CONFIG_PCF8575 is not set
625# CONFIG_SENSORS_PCF8591 is not set 627# CONFIG_SENSORS_PCF8591 is not set
626# CONFIG_TPS65010 is not set
627# CONFIG_SENSORS_MAX6875 is not set 628# CONFIG_SENSORS_MAX6875 is not set
628# CONFIG_SENSORS_TSL2550 is not set 629# CONFIG_SENSORS_TSL2550 is not set
629# CONFIG_I2C_DEBUG_CORE is not set 630# CONFIG_I2C_DEBUG_CORE is not set
630# CONFIG_I2C_DEBUG_ALGO is not set 631# CONFIG_I2C_DEBUG_ALGO is not set
631# CONFIG_I2C_DEBUG_BUS is not set 632# CONFIG_I2C_DEBUG_BUS is not set
632# CONFIG_I2C_DEBUG_CHIP is not set 633# CONFIG_I2C_DEBUG_CHIP is not set
633
634#
635# SPI support
636#
637# CONFIG_SPI is not set 634# CONFIG_SPI is not set
638# CONFIG_SPI_MASTER is not set
639# CONFIG_W1 is not set 635# CONFIG_W1 is not set
640# CONFIG_POWER_SUPPLY is not set 636# CONFIG_POWER_SUPPLY is not set
641CONFIG_HWMON=y 637CONFIG_HWMON=y
@@ -718,12 +714,22 @@ CONFIG_SSB_POSSIBLE=y
718# Multifunction device drivers 714# Multifunction device drivers
719# 715#
720# CONFIG_MFD_SM501 is not set 716# CONFIG_MFD_SM501 is not set
717# CONFIG_HTC_PASIC3 is not set
721 718
722# 719#
723# Multimedia devices 720# Multimedia devices
724# 721#
722
723#
724# Multimedia core support
725#
725# CONFIG_VIDEO_DEV is not set 726# CONFIG_VIDEO_DEV is not set
726# CONFIG_DVB_CORE is not set 727# CONFIG_DVB_CORE is not set
728# CONFIG_VIDEO_MEDIA is not set
729
730#
731# Multimedia drivers
732#
727CONFIG_DAB=y 733CONFIG_DAB=y
728 734
729# 735#
@@ -754,6 +760,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
754CONFIG_USB_ARCH_HAS_OHCI=y 760CONFIG_USB_ARCH_HAS_OHCI=y
755CONFIG_USB_ARCH_HAS_EHCI=y 761CONFIG_USB_ARCH_HAS_EHCI=y
756# CONFIG_USB is not set 762# CONFIG_USB is not set
763# CONFIG_USB_OTG_WHITELIST is not set
764# CONFIG_USB_OTG_BLACKLIST_HUB is not set
757 765
758# 766#
759# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 767# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -762,6 +770,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
762# CONFIG_MMC is not set 770# CONFIG_MMC is not set
763# CONFIG_MEMSTICK is not set 771# CONFIG_MEMSTICK is not set
764# CONFIG_NEW_LEDS is not set 772# CONFIG_NEW_LEDS is not set
773# CONFIG_ACCESSIBILITY is not set
765# CONFIG_INFINIBAND is not set 774# CONFIG_INFINIBAND is not set
766# CONFIG_EDAC is not set 775# CONFIG_EDAC is not set
767CONFIG_RTC_LIB=y 776CONFIG_RTC_LIB=y
@@ -813,11 +822,8 @@ CONFIG_RTC_DRV_DS1374=y
813# 822#
814# on-CPU RTC drivers 823# on-CPU RTC drivers
815# 824#
825# CONFIG_RTC_DRV_PPC is not set
816# CONFIG_DMADEVICES is not set 826# CONFIG_DMADEVICES is not set
817
818#
819# Userspace I/O
820#
821# CONFIG_UIO is not set 827# CONFIG_UIO is not set
822 828
823# 829#
@@ -837,7 +843,6 @@ CONFIG_FS_MBCACHE=y
837# CONFIG_JFS_FS is not set 843# CONFIG_JFS_FS is not set
838# CONFIG_FS_POSIX_ACL is not set 844# CONFIG_FS_POSIX_ACL is not set
839# CONFIG_XFS_FS is not set 845# CONFIG_XFS_FS is not set
840# CONFIG_GFS2_FS is not set
841# CONFIG_OCFS2_FS is not set 846# CONFIG_OCFS2_FS is not set
842CONFIG_DNOTIFY=y 847CONFIG_DNOTIFY=y
843CONFIG_INOTIFY=y 848CONFIG_INOTIFY=y
@@ -895,7 +900,6 @@ CONFIG_NFS_FS=y
895CONFIG_NFS_V3=y 900CONFIG_NFS_V3=y
896# CONFIG_NFS_V3_ACL is not set 901# CONFIG_NFS_V3_ACL is not set
897CONFIG_NFS_V4=y 902CONFIG_NFS_V4=y
898# CONFIG_NFS_DIRECTIO is not set
899# CONFIG_NFSD is not set 903# CONFIG_NFSD is not set
900CONFIG_ROOT_NFS=y 904CONFIG_ROOT_NFS=y
901CONFIG_LOCKD=y 905CONFIG_LOCKD=y
@@ -936,6 +940,7 @@ CONFIG_PARTITION_ADVANCED=y
936# Library routines 940# Library routines
937# 941#
938CONFIG_BITREVERSE=y 942CONFIG_BITREVERSE=y
943# CONFIG_GENERIC_FIND_FIRST_BIT is not set
939# CONFIG_CRC_CCITT is not set 944# CONFIG_CRC_CCITT is not set
940# CONFIG_CRC16 is not set 945# CONFIG_CRC16 is not set
941# CONFIG_CRC_ITU_T is not set 946# CONFIG_CRC_ITU_T is not set
@@ -946,6 +951,7 @@ CONFIG_PLIST=y
946CONFIG_HAS_IOMEM=y 951CONFIG_HAS_IOMEM=y
947CONFIG_HAS_IOPORT=y 952CONFIG_HAS_IOPORT=y
948CONFIG_HAS_DMA=y 953CONFIG_HAS_DMA=y
954CONFIG_HAVE_LMB=y
949 955
950# 956#
951# Kernel hacking 957# Kernel hacking
@@ -953,6 +959,7 @@ CONFIG_HAS_DMA=y
953# CONFIG_PRINTK_TIME is not set 959# CONFIG_PRINTK_TIME is not set
954CONFIG_ENABLE_WARN_DEPRECATED=y 960CONFIG_ENABLE_WARN_DEPRECATED=y
955CONFIG_ENABLE_MUST_CHECK=y 961CONFIG_ENABLE_MUST_CHECK=y
962CONFIG_FRAME_WARN=1024
956# CONFIG_MAGIC_SYSRQ is not set 963# CONFIG_MAGIC_SYSRQ is not set
957# CONFIG_UNUSED_SYMBOLS is not set 964# CONFIG_UNUSED_SYMBOLS is not set
958# CONFIG_DEBUG_FS is not set 965# CONFIG_DEBUG_FS is not set
@@ -962,6 +969,7 @@ CONFIG_ENABLE_MUST_CHECK=y
962# CONFIG_SLUB_STATS is not set 969# CONFIG_SLUB_STATS is not set
963# CONFIG_DEBUG_BUGVERBOSE is not set 970# CONFIG_DEBUG_BUGVERBOSE is not set
964# CONFIG_SAMPLES is not set 971# CONFIG_SAMPLES is not set
972# CONFIG_IRQSTACKS is not set
965# CONFIG_PPC_EARLY_DEBUG is not set 973# CONFIG_PPC_EARLY_DEBUG is not set
966 974
967# 975#
@@ -971,51 +979,81 @@ CONFIG_ENABLE_MUST_CHECK=y
971# CONFIG_SECURITY is not set 979# CONFIG_SECURITY is not set
972# CONFIG_SECURITY_FILE_CAPABILITIES is not set 980# CONFIG_SECURITY_FILE_CAPABILITIES is not set
973CONFIG_CRYPTO=y 981CONFIG_CRYPTO=y
982
983#
984# Crypto core or helper
985#
974CONFIG_CRYPTO_ALGAPI=y 986CONFIG_CRYPTO_ALGAPI=y
975CONFIG_CRYPTO_BLKCIPHER=y 987CONFIG_CRYPTO_BLKCIPHER=y
976# CONFIG_CRYPTO_SEQIV is not set
977CONFIG_CRYPTO_MANAGER=y 988CONFIG_CRYPTO_MANAGER=y
989# CONFIG_CRYPTO_GF128MUL is not set
990# CONFIG_CRYPTO_NULL is not set
991# CONFIG_CRYPTO_CRYPTD is not set
992# CONFIG_CRYPTO_AUTHENC is not set
993# CONFIG_CRYPTO_TEST is not set
994
995#
996# Authenticated Encryption with Associated Data
997#
998# CONFIG_CRYPTO_CCM is not set
999# CONFIG_CRYPTO_GCM is not set
1000# CONFIG_CRYPTO_SEQIV is not set
1001
1002#
1003# Block modes
1004#
1005CONFIG_CRYPTO_CBC=y
1006# CONFIG_CRYPTO_CTR is not set
1007# CONFIG_CRYPTO_CTS is not set
1008CONFIG_CRYPTO_ECB=m
1009# CONFIG_CRYPTO_LRW is not set
1010CONFIG_CRYPTO_PCBC=m
1011# CONFIG_CRYPTO_XTS is not set
1012
1013#
1014# Hash modes
1015#
978# CONFIG_CRYPTO_HMAC is not set 1016# CONFIG_CRYPTO_HMAC is not set
979# CONFIG_CRYPTO_XCBC is not set 1017# CONFIG_CRYPTO_XCBC is not set
980# CONFIG_CRYPTO_NULL is not set 1018
1019#
1020# Digest
1021#
1022# CONFIG_CRYPTO_CRC32C is not set
981# CONFIG_CRYPTO_MD4 is not set 1023# CONFIG_CRYPTO_MD4 is not set
982CONFIG_CRYPTO_MD5=y 1024CONFIG_CRYPTO_MD5=y
1025# CONFIG_CRYPTO_MICHAEL_MIC is not set
983# CONFIG_CRYPTO_SHA1 is not set 1026# CONFIG_CRYPTO_SHA1 is not set
984# CONFIG_CRYPTO_SHA256 is not set 1027# CONFIG_CRYPTO_SHA256 is not set
985# CONFIG_CRYPTO_SHA512 is not set 1028# CONFIG_CRYPTO_SHA512 is not set
986# CONFIG_CRYPTO_WP512 is not set
987# CONFIG_CRYPTO_TGR192 is not set 1029# CONFIG_CRYPTO_TGR192 is not set
988# CONFIG_CRYPTO_GF128MUL is not set 1030# CONFIG_CRYPTO_WP512 is not set
989CONFIG_CRYPTO_ECB=m 1031
990CONFIG_CRYPTO_CBC=y 1032#
991CONFIG_CRYPTO_PCBC=m 1033# Ciphers
992# CONFIG_CRYPTO_LRW is not set 1034#
993# CONFIG_CRYPTO_XTS is not set
994# CONFIG_CRYPTO_CTR is not set
995# CONFIG_CRYPTO_GCM is not set
996# CONFIG_CRYPTO_CCM is not set
997# CONFIG_CRYPTO_CRYPTD is not set
998CONFIG_CRYPTO_DES=y
999# CONFIG_CRYPTO_FCRYPT is not set
1000# CONFIG_CRYPTO_BLOWFISH is not set
1001# CONFIG_CRYPTO_TWOFISH is not set
1002# CONFIG_CRYPTO_SERPENT is not set
1003# CONFIG_CRYPTO_AES is not set 1035# CONFIG_CRYPTO_AES is not set
1036# CONFIG_CRYPTO_ANUBIS is not set
1037# CONFIG_CRYPTO_ARC4 is not set
1038# CONFIG_CRYPTO_BLOWFISH is not set
1039# CONFIG_CRYPTO_CAMELLIA is not set
1004# CONFIG_CRYPTO_CAST5 is not set 1040# CONFIG_CRYPTO_CAST5 is not set
1005# CONFIG_CRYPTO_CAST6 is not set 1041# CONFIG_CRYPTO_CAST6 is not set
1006# CONFIG_CRYPTO_TEA is not set 1042CONFIG_CRYPTO_DES=y
1007# CONFIG_CRYPTO_ARC4 is not set 1043# CONFIG_CRYPTO_FCRYPT is not set
1008# CONFIG_CRYPTO_KHAZAD is not set 1044# CONFIG_CRYPTO_KHAZAD is not set
1009# CONFIG_CRYPTO_ANUBIS is not set
1010# CONFIG_CRYPTO_SEED is not set
1011# CONFIG_CRYPTO_SALSA20 is not set 1045# CONFIG_CRYPTO_SALSA20 is not set
1046# CONFIG_CRYPTO_SEED is not set
1047# CONFIG_CRYPTO_SERPENT is not set
1048# CONFIG_CRYPTO_TEA is not set
1049# CONFIG_CRYPTO_TWOFISH is not set
1050
1051#
1052# Compression
1053#
1012# CONFIG_CRYPTO_DEFLATE is not set 1054# CONFIG_CRYPTO_DEFLATE is not set
1013# CONFIG_CRYPTO_MICHAEL_MIC is not set
1014# CONFIG_CRYPTO_CRC32C is not set
1015# CONFIG_CRYPTO_CAMELLIA is not set
1016# CONFIG_CRYPTO_TEST is not set
1017# CONFIG_CRYPTO_AUTHENC is not set
1018# CONFIG_CRYPTO_LZO is not set 1055# CONFIG_CRYPTO_LZO is not set
1019CONFIG_CRYPTO_HW=y 1056CONFIG_CRYPTO_HW=y
1020# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1057# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1021# CONFIG_PPC_CLOCK is not set 1058# CONFIG_PPC_CLOCK is not set
1059# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/mpc836x_mds_defconfig b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig
index d50a96eddcdc..20fd9f58cf42 100644
--- a/arch/powerpc/configs/83xx/mpc836x_mds_defconfig
+++ b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:36:57 2008 4# Mon Jun 9 08:52:27 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89# CONFIG_KALLSYMS is not set 92# CONFIG_KALLSYMS is not set
90CONFIG_HOTPLUG=y 93CONFIG_HOTPLUG=y
91CONFIG_PRINTK=y 94CONFIG_PRINTK=y
@@ -110,12 +113,14 @@ CONFIG_SLUB=y
110CONFIG_HAVE_OPROFILE=y 113CONFIG_HAVE_OPROFILE=y
111CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
112CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
116# CONFIG_HAVE_DMA_ATTRS is not set
113CONFIG_PROC_PAGE_MONITOR=y 117CONFIG_PROC_PAGE_MONITOR=y
114CONFIG_SLABINFO=y 118CONFIG_SLABINFO=y
115CONFIG_RT_MUTEXES=y 119CONFIG_RT_MUTEXES=y
116# CONFIG_TINY_SHMEM is not set 120# CONFIG_TINY_SHMEM is not set
117CONFIG_BASE_SMALL=0 121CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 122CONFIG_MODULES=y
123# CONFIG_MODULE_FORCE_LOAD is not set
119CONFIG_MODULE_UNLOAD=y 124CONFIG_MODULE_UNLOAD=y
120# CONFIG_MODULE_FORCE_UNLOAD is not set 125# CONFIG_MODULE_FORCE_UNLOAD is not set
121# CONFIG_MODVERSIONS is not set 126# CONFIG_MODVERSIONS is not set
@@ -210,11 +215,13 @@ CONFIG_FLATMEM=y
210CONFIG_FLAT_NODE_MEM_MAP=y 215CONFIG_FLAT_NODE_MEM_MAP=y
211# CONFIG_SPARSEMEM_STATIC is not set 216# CONFIG_SPARSEMEM_STATIC is not set
212# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
218CONFIG_PAGEFLAGS_EXTENDED=y
213CONFIG_SPLIT_PTLOCK_CPUS=4 219CONFIG_SPLIT_PTLOCK_CPUS=4
214# CONFIG_RESOURCES_64BIT is not set 220# CONFIG_RESOURCES_64BIT is not set
215CONFIG_ZONE_DMA_FLAG=1 221CONFIG_ZONE_DMA_FLAG=1
216CONFIG_BOUNCE=y 222CONFIG_BOUNCE=y
217CONFIG_VIRT_TO_BUS=y 223CONFIG_VIRT_TO_BUS=y
224CONFIG_FORCE_MAX_ZONEORDER=11
218CONFIG_PROC_DEVICETREE=y 225CONFIG_PROC_DEVICETREE=y
219# CONFIG_CMDLINE_BOOL is not set 226# CONFIG_CMDLINE_BOOL is not set
220# CONFIG_PM is not set 227# CONFIG_PM is not set
@@ -237,6 +244,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
237CONFIG_PCI_LEGACY=y 244CONFIG_PCI_LEGACY=y
238# CONFIG_PCCARD is not set 245# CONFIG_PCCARD is not set
239# CONFIG_HOTPLUG_PCI is not set 246# CONFIG_HOTPLUG_PCI is not set
247# CONFIG_HAS_RAPIDIO is not set
240 248
241# 249#
242# Advanced setup 250# Advanced setup
@@ -246,11 +254,11 @@ CONFIG_PCI_LEGACY=y
246# 254#
247# Default settings for advanced configuration options are used 255# Default settings for advanced configuration options are used
248# 256#
249CONFIG_HIGHMEM_START=0xfe000000
250CONFIG_LOWMEM_SIZE=0x30000000 257CONFIG_LOWMEM_SIZE=0x30000000
258CONFIG_PAGE_OFFSET=0xc0000000
251CONFIG_KERNEL_START=0xc0000000 259CONFIG_KERNEL_START=0xc0000000
260CONFIG_PHYSICAL_START=0x00000000
252CONFIG_TASK_SIZE=0xc0000000 261CONFIG_TASK_SIZE=0xc0000000
253CONFIG_BOOT_LOAD=0x00800000
254 262
255# 263#
256# Networking 264# Networking
@@ -298,8 +306,6 @@ CONFIG_TCP_CONG_CUBIC=y
298CONFIG_DEFAULT_TCP_CONG="cubic" 306CONFIG_DEFAULT_TCP_CONG="cubic"
299# CONFIG_TCP_MD5SIG is not set 307# CONFIG_TCP_MD5SIG is not set
300# CONFIG_IPV6 is not set 308# CONFIG_IPV6 is not set
301# CONFIG_INET6_XFRM_TUNNEL is not set
302# CONFIG_INET6_TUNNEL is not set
303# CONFIG_NETWORK_SECMARK is not set 309# CONFIG_NETWORK_SECMARK is not set
304# CONFIG_NETFILTER is not set 310# CONFIG_NETFILTER is not set
305# CONFIG_IP_DCCP is not set 311# CONFIG_IP_DCCP is not set
@@ -353,6 +359,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
353# CONFIG_CONNECTOR is not set 359# CONFIG_CONNECTOR is not set
354# CONFIG_MTD is not set 360# CONFIG_MTD is not set
355CONFIG_OF_DEVICE=y 361CONFIG_OF_DEVICE=y
362CONFIG_OF_I2C=y
356# CONFIG_PARPORT is not set 363# CONFIG_PARPORT is not set
357CONFIG_BLK_DEV=y 364CONFIG_BLK_DEV=y
358# CONFIG_BLK_DEV_FD is not set 365# CONFIG_BLK_DEV_FD is not set
@@ -520,7 +527,6 @@ CONFIG_NETDEV_1000=y
520# CONFIG_SIS190 is not set 527# CONFIG_SIS190 is not set
521# CONFIG_SKGE is not set 528# CONFIG_SKGE is not set
522# CONFIG_SKY2 is not set 529# CONFIG_SKY2 is not set
523# CONFIG_SK98LIN is not set
524# CONFIG_VIA_VELOCITY is not set 530# CONFIG_VIA_VELOCITY is not set
525# CONFIG_TIGON3 is not set 531# CONFIG_TIGON3 is not set
526# CONFIG_BNX2 is not set 532# CONFIG_BNX2 is not set
@@ -544,6 +550,7 @@ CONFIG_NETDEV_10000=y
544# CONFIG_MLX4_CORE is not set 550# CONFIG_MLX4_CORE is not set
545# CONFIG_TEHUTI is not set 551# CONFIG_TEHUTI is not set
546# CONFIG_BNX2X is not set 552# CONFIG_BNX2X is not set
553# CONFIG_SFC is not set
547# CONFIG_TR is not set 554# CONFIG_TR is not set
548 555
549# 556#
@@ -551,6 +558,7 @@ CONFIG_NETDEV_10000=y
551# 558#
552# CONFIG_WLAN_PRE80211 is not set 559# CONFIG_WLAN_PRE80211 is not set
553# CONFIG_WLAN_80211 is not set 560# CONFIG_WLAN_80211 is not set
561# CONFIG_IWLWIFI_LEDS is not set
554# CONFIG_WAN is not set 562# CONFIG_WAN is not set
555# CONFIG_FDDI is not set 563# CONFIG_FDDI is not set
556# CONFIG_HIPPI is not set 564# CONFIG_HIPPI is not set
@@ -598,6 +606,7 @@ CONFIG_INPUT=y
598# Character devices 606# Character devices
599# 607#
600# CONFIG_VT is not set 608# CONFIG_VT is not set
609CONFIG_DEVKMEM=y
601# CONFIG_SERIAL_NONSTANDARD is not set 610# CONFIG_SERIAL_NONSTANDARD is not set
602# CONFIG_NOZOMI is not set 611# CONFIG_NOZOMI is not set
603 612
@@ -626,7 +635,6 @@ CONFIG_LEGACY_PTY_COUNT=256
626# CONFIG_IPMI_HANDLER is not set 635# CONFIG_IPMI_HANDLER is not set
627CONFIG_HW_RANDOM=y 636CONFIG_HW_RANDOM=y
628# CONFIG_NVRAM is not set 637# CONFIG_NVRAM is not set
629# CONFIG_GEN_RTC is not set
630# CONFIG_R3964 is not set 638# CONFIG_R3964 is not set
631# CONFIG_APPLICOM is not set 639# CONFIG_APPLICOM is not set
632# CONFIG_RAW_DRIVER is not set 640# CONFIG_RAW_DRIVER is not set
@@ -637,13 +645,6 @@ CONFIG_I2C_BOARDINFO=y
637CONFIG_I2C_CHARDEV=y 645CONFIG_I2C_CHARDEV=y
638 646
639# 647#
640# I2C Algorithms
641#
642# CONFIG_I2C_ALGOBIT is not set
643# CONFIG_I2C_ALGOPCF is not set
644# CONFIG_I2C_ALGOPCA is not set
645
646#
647# I2C Hardware Bus support 648# I2C Hardware Bus support
648# 649#
649# CONFIG_I2C_ALI1535 is not set 650# CONFIG_I2C_ALI1535 is not set
@@ -669,6 +670,7 @@ CONFIG_I2C_MPC=y
669# CONFIG_I2C_VIA is not set 670# CONFIG_I2C_VIA is not set
670# CONFIG_I2C_VIAPRO is not set 671# CONFIG_I2C_VIAPRO is not set
671# CONFIG_I2C_VOODOO3 is not set 672# CONFIG_I2C_VOODOO3 is not set
673# CONFIG_I2C_PCA_PLATFORM is not set
672 674
673# 675#
674# Miscellaneous I2C Chip support 676# Miscellaneous I2C Chip support
@@ -678,19 +680,13 @@ CONFIG_I2C_MPC=y
678# CONFIG_SENSORS_PCF8574 is not set 680# CONFIG_SENSORS_PCF8574 is not set
679# CONFIG_PCF8575 is not set 681# CONFIG_PCF8575 is not set
680# CONFIG_SENSORS_PCF8591 is not set 682# CONFIG_SENSORS_PCF8591 is not set
681# CONFIG_TPS65010 is not set
682# CONFIG_SENSORS_MAX6875 is not set 683# CONFIG_SENSORS_MAX6875 is not set
683# CONFIG_SENSORS_TSL2550 is not set 684# CONFIG_SENSORS_TSL2550 is not set
684# CONFIG_I2C_DEBUG_CORE is not set 685# CONFIG_I2C_DEBUG_CORE is not set
685# CONFIG_I2C_DEBUG_ALGO is not set 686# CONFIG_I2C_DEBUG_ALGO is not set
686# CONFIG_I2C_DEBUG_BUS is not set 687# CONFIG_I2C_DEBUG_BUS is not set
687# CONFIG_I2C_DEBUG_CHIP is not set 688# CONFIG_I2C_DEBUG_CHIP is not set
688
689#
690# SPI support
691#
692# CONFIG_SPI is not set 689# CONFIG_SPI is not set
693# CONFIG_SPI_MASTER is not set
694# CONFIG_W1 is not set 690# CONFIG_W1 is not set
695# CONFIG_POWER_SUPPLY is not set 691# CONFIG_POWER_SUPPLY is not set
696CONFIG_HWMON=y 692CONFIG_HWMON=y
@@ -773,12 +769,22 @@ CONFIG_SSB_POSSIBLE=y
773# Multifunction device drivers 769# Multifunction device drivers
774# 770#
775# CONFIG_MFD_SM501 is not set 771# CONFIG_MFD_SM501 is not set
772# CONFIG_HTC_PASIC3 is not set
776 773
777# 774#
778# Multimedia devices 775# Multimedia devices
779# 776#
777
778#
779# Multimedia core support
780#
780# CONFIG_VIDEO_DEV is not set 781# CONFIG_VIDEO_DEV is not set
781# CONFIG_DVB_CORE is not set 782# CONFIG_DVB_CORE is not set
783# CONFIG_VIDEO_MEDIA is not set
784
785#
786# Multimedia drivers
787#
782CONFIG_DAB=y 788CONFIG_DAB=y
783 789
784# 790#
@@ -809,6 +815,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
809CONFIG_USB_ARCH_HAS_OHCI=y 815CONFIG_USB_ARCH_HAS_OHCI=y
810CONFIG_USB_ARCH_HAS_EHCI=y 816CONFIG_USB_ARCH_HAS_EHCI=y
811# CONFIG_USB is not set 817# CONFIG_USB is not set
818# CONFIG_USB_OTG_WHITELIST is not set
819# CONFIG_USB_OTG_BLACKLIST_HUB is not set
812 820
813# 821#
814# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 822# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -817,6 +825,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
817# CONFIG_MMC is not set 825# CONFIG_MMC is not set
818# CONFIG_MEMSTICK is not set 826# CONFIG_MEMSTICK is not set
819# CONFIG_NEW_LEDS is not set 827# CONFIG_NEW_LEDS is not set
828# CONFIG_ACCESSIBILITY is not set
820# CONFIG_INFINIBAND is not set 829# CONFIG_INFINIBAND is not set
821# CONFIG_EDAC is not set 830# CONFIG_EDAC is not set
822CONFIG_RTC_LIB=y 831CONFIG_RTC_LIB=y
@@ -868,11 +877,8 @@ CONFIG_RTC_DRV_DS1374=y
868# 877#
869# on-CPU RTC drivers 878# on-CPU RTC drivers
870# 879#
880# CONFIG_RTC_DRV_PPC is not set
871# CONFIG_DMADEVICES is not set 881# CONFIG_DMADEVICES is not set
872
873#
874# Userspace I/O
875#
876# CONFIG_UIO is not set 882# CONFIG_UIO is not set
877 883
878# 884#
@@ -892,7 +898,6 @@ CONFIG_FS_MBCACHE=y
892# CONFIG_JFS_FS is not set 898# CONFIG_JFS_FS is not set
893# CONFIG_FS_POSIX_ACL is not set 899# CONFIG_FS_POSIX_ACL is not set
894# CONFIG_XFS_FS is not set 900# CONFIG_XFS_FS is not set
895# CONFIG_GFS2_FS is not set
896# CONFIG_OCFS2_FS is not set 901# CONFIG_OCFS2_FS is not set
897CONFIG_DNOTIFY=y 902CONFIG_DNOTIFY=y
898CONFIG_INOTIFY=y 903CONFIG_INOTIFY=y
@@ -950,7 +955,6 @@ CONFIG_NFS_FS=y
950CONFIG_NFS_V3=y 955CONFIG_NFS_V3=y
951# CONFIG_NFS_V3_ACL is not set 956# CONFIG_NFS_V3_ACL is not set
952CONFIG_NFS_V4=y 957CONFIG_NFS_V4=y
953# CONFIG_NFS_DIRECTIO is not set
954# CONFIG_NFSD is not set 958# CONFIG_NFSD is not set
955CONFIG_ROOT_NFS=y 959CONFIG_ROOT_NFS=y
956CONFIG_LOCKD=y 960CONFIG_LOCKD=y
@@ -993,6 +997,7 @@ CONFIG_UCC=y
993# Library routines 997# Library routines
994# 998#
995CONFIG_BITREVERSE=y 999CONFIG_BITREVERSE=y
1000# CONFIG_GENERIC_FIND_FIRST_BIT is not set
996# CONFIG_CRC_CCITT is not set 1001# CONFIG_CRC_CCITT is not set
997# CONFIG_CRC16 is not set 1002# CONFIG_CRC16 is not set
998# CONFIG_CRC_ITU_T is not set 1003# CONFIG_CRC_ITU_T is not set
@@ -1003,6 +1008,7 @@ CONFIG_PLIST=y
1003CONFIG_HAS_IOMEM=y 1008CONFIG_HAS_IOMEM=y
1004CONFIG_HAS_IOPORT=y 1009CONFIG_HAS_IOPORT=y
1005CONFIG_HAS_DMA=y 1010CONFIG_HAS_DMA=y
1011CONFIG_HAVE_LMB=y
1006 1012
1007# 1013#
1008# Kernel hacking 1014# Kernel hacking
@@ -1010,6 +1016,7 @@ CONFIG_HAS_DMA=y
1010# CONFIG_PRINTK_TIME is not set 1016# CONFIG_PRINTK_TIME is not set
1011CONFIG_ENABLE_WARN_DEPRECATED=y 1017CONFIG_ENABLE_WARN_DEPRECATED=y
1012CONFIG_ENABLE_MUST_CHECK=y 1018CONFIG_ENABLE_MUST_CHECK=y
1019CONFIG_FRAME_WARN=1024
1013# CONFIG_MAGIC_SYSRQ is not set 1020# CONFIG_MAGIC_SYSRQ is not set
1014# CONFIG_UNUSED_SYMBOLS is not set 1021# CONFIG_UNUSED_SYMBOLS is not set
1015# CONFIG_DEBUG_FS is not set 1022# CONFIG_DEBUG_FS is not set
@@ -1019,6 +1026,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1019# CONFIG_SLUB_STATS is not set 1026# CONFIG_SLUB_STATS is not set
1020# CONFIG_DEBUG_BUGVERBOSE is not set 1027# CONFIG_DEBUG_BUGVERBOSE is not set
1021# CONFIG_SAMPLES is not set 1028# CONFIG_SAMPLES is not set
1029# CONFIG_IRQSTACKS is not set
1022# CONFIG_PPC_EARLY_DEBUG is not set 1030# CONFIG_PPC_EARLY_DEBUG is not set
1023 1031
1024# 1032#
@@ -1028,52 +1036,82 @@ CONFIG_ENABLE_MUST_CHECK=y
1028# CONFIG_SECURITY is not set 1036# CONFIG_SECURITY is not set
1029# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1037# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1030CONFIG_CRYPTO=y 1038CONFIG_CRYPTO=y
1039
1040#
1041# Crypto core or helper
1042#
1031CONFIG_CRYPTO_ALGAPI=y 1043CONFIG_CRYPTO_ALGAPI=y
1032CONFIG_CRYPTO_BLKCIPHER=y 1044CONFIG_CRYPTO_BLKCIPHER=y
1033# CONFIG_CRYPTO_SEQIV is not set
1034CONFIG_CRYPTO_MANAGER=y 1045CONFIG_CRYPTO_MANAGER=y
1046# CONFIG_CRYPTO_GF128MUL is not set
1047# CONFIG_CRYPTO_NULL is not set
1048# CONFIG_CRYPTO_CRYPTD is not set
1049# CONFIG_CRYPTO_AUTHENC is not set
1050# CONFIG_CRYPTO_TEST is not set
1051
1052#
1053# Authenticated Encryption with Associated Data
1054#
1055# CONFIG_CRYPTO_CCM is not set
1056# CONFIG_CRYPTO_GCM is not set
1057# CONFIG_CRYPTO_SEQIV is not set
1058
1059#
1060# Block modes
1061#
1062CONFIG_CRYPTO_CBC=y
1063# CONFIG_CRYPTO_CTR is not set
1064# CONFIG_CRYPTO_CTS is not set
1065CONFIG_CRYPTO_ECB=m
1066# CONFIG_CRYPTO_LRW is not set
1067CONFIG_CRYPTO_PCBC=m
1068# CONFIG_CRYPTO_XTS is not set
1069
1070#
1071# Hash modes
1072#
1035# CONFIG_CRYPTO_HMAC is not set 1073# CONFIG_CRYPTO_HMAC is not set
1036# CONFIG_CRYPTO_XCBC is not set 1074# CONFIG_CRYPTO_XCBC is not set
1037# CONFIG_CRYPTO_NULL is not set 1075
1076#
1077# Digest
1078#
1079# CONFIG_CRYPTO_CRC32C is not set
1038# CONFIG_CRYPTO_MD4 is not set 1080# CONFIG_CRYPTO_MD4 is not set
1039CONFIG_CRYPTO_MD5=y 1081CONFIG_CRYPTO_MD5=y
1082# CONFIG_CRYPTO_MICHAEL_MIC is not set
1040# CONFIG_CRYPTO_SHA1 is not set 1083# CONFIG_CRYPTO_SHA1 is not set
1041# CONFIG_CRYPTO_SHA256 is not set 1084# CONFIG_CRYPTO_SHA256 is not set
1042# CONFIG_CRYPTO_SHA512 is not set 1085# CONFIG_CRYPTO_SHA512 is not set
1043# CONFIG_CRYPTO_WP512 is not set
1044# CONFIG_CRYPTO_TGR192 is not set 1086# CONFIG_CRYPTO_TGR192 is not set
1045# CONFIG_CRYPTO_GF128MUL is not set 1087# CONFIG_CRYPTO_WP512 is not set
1046CONFIG_CRYPTO_ECB=m 1088
1047CONFIG_CRYPTO_CBC=y 1089#
1048CONFIG_CRYPTO_PCBC=m 1090# Ciphers
1049# CONFIG_CRYPTO_LRW is not set 1091#
1050# CONFIG_CRYPTO_XTS is not set
1051# CONFIG_CRYPTO_CTR is not set
1052# CONFIG_CRYPTO_GCM is not set
1053# CONFIG_CRYPTO_CCM is not set
1054# CONFIG_CRYPTO_CRYPTD is not set
1055CONFIG_CRYPTO_DES=y
1056# CONFIG_CRYPTO_FCRYPT is not set
1057# CONFIG_CRYPTO_BLOWFISH is not set
1058# CONFIG_CRYPTO_TWOFISH is not set
1059# CONFIG_CRYPTO_SERPENT is not set
1060# CONFIG_CRYPTO_AES is not set 1092# CONFIG_CRYPTO_AES is not set
1093# CONFIG_CRYPTO_ANUBIS is not set
1094# CONFIG_CRYPTO_ARC4 is not set
1095# CONFIG_CRYPTO_BLOWFISH is not set
1096# CONFIG_CRYPTO_CAMELLIA is not set
1061# CONFIG_CRYPTO_CAST5 is not set 1097# CONFIG_CRYPTO_CAST5 is not set
1062# CONFIG_CRYPTO_CAST6 is not set 1098# CONFIG_CRYPTO_CAST6 is not set
1063# CONFIG_CRYPTO_TEA is not set 1099CONFIG_CRYPTO_DES=y
1064# CONFIG_CRYPTO_ARC4 is not set 1100# CONFIG_CRYPTO_FCRYPT is not set
1065# CONFIG_CRYPTO_KHAZAD is not set 1101# CONFIG_CRYPTO_KHAZAD is not set
1066# CONFIG_CRYPTO_ANUBIS is not set
1067# CONFIG_CRYPTO_SEED is not set
1068# CONFIG_CRYPTO_SALSA20 is not set 1102# CONFIG_CRYPTO_SALSA20 is not set
1103# CONFIG_CRYPTO_SEED is not set
1104# CONFIG_CRYPTO_SERPENT is not set
1105# CONFIG_CRYPTO_TEA is not set
1106# CONFIG_CRYPTO_TWOFISH is not set
1107
1108#
1109# Compression
1110#
1069# CONFIG_CRYPTO_DEFLATE is not set 1111# CONFIG_CRYPTO_DEFLATE is not set
1070# CONFIG_CRYPTO_MICHAEL_MIC is not set
1071# CONFIG_CRYPTO_CRC32C is not set
1072# CONFIG_CRYPTO_CAMELLIA is not set
1073# CONFIG_CRYPTO_TEST is not set
1074# CONFIG_CRYPTO_AUTHENC is not set
1075# CONFIG_CRYPTO_LZO is not set 1112# CONFIG_CRYPTO_LZO is not set
1076CONFIG_CRYPTO_HW=y 1113CONFIG_CRYPTO_HW=y
1077# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1114# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1078# CONFIG_PPC_CLOCK is not set 1115# CONFIG_PPC_CLOCK is not set
1079CONFIG_PPC_LIB_RHEAP=y 1116CONFIG_PPC_LIB_RHEAP=y
1117# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/mpc837x_mds_defconfig b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig
index f377cde785b0..0f94d9f56beb 100644
--- a/arch/powerpc/configs/83xx/mpc837x_mds_defconfig
+++ b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:23 2008 4# Mon Jun 9 08:52:28 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89CONFIG_KALLSYMS=y 92CONFIG_KALLSYMS=y
90# CONFIG_KALLSYMS_EXTRA_PASS is not set 93# CONFIG_KALLSYMS_EXTRA_PASS is not set
91CONFIG_HOTPLUG=y 94CONFIG_HOTPLUG=y
@@ -111,12 +114,14 @@ CONFIG_HAVE_OPROFILE=y
111# CONFIG_KPROBES is not set 114# CONFIG_KPROBES is not set
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
117# CONFIG_TINY_SHMEM is not set 121# CONFIG_TINY_SHMEM is not set
118CONFIG_BASE_SMALL=0 122CONFIG_BASE_SMALL=0
119CONFIG_MODULES=y 123CONFIG_MODULES=y
124# CONFIG_MODULE_FORCE_LOAD is not set
120CONFIG_MODULE_UNLOAD=y 125CONFIG_MODULE_UNLOAD=y
121# CONFIG_MODULE_FORCE_UNLOAD is not set 126# CONFIG_MODULE_FORCE_UNLOAD is not set
122# CONFIG_MODVERSIONS is not set 127# CONFIG_MODVERSIONS is not set
@@ -211,11 +216,13 @@ CONFIG_FLATMEM=y
211CONFIG_FLAT_NODE_MEM_MAP=y 216CONFIG_FLAT_NODE_MEM_MAP=y
212# CONFIG_SPARSEMEM_STATIC is not set 217# CONFIG_SPARSEMEM_STATIC is not set
213# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 218# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
219CONFIG_PAGEFLAGS_EXTENDED=y
214CONFIG_SPLIT_PTLOCK_CPUS=4 220CONFIG_SPLIT_PTLOCK_CPUS=4
215# CONFIG_RESOURCES_64BIT is not set 221# CONFIG_RESOURCES_64BIT is not set
216CONFIG_ZONE_DMA_FLAG=1 222CONFIG_ZONE_DMA_FLAG=1
217CONFIG_BOUNCE=y 223CONFIG_BOUNCE=y
218CONFIG_VIRT_TO_BUS=y 224CONFIG_VIRT_TO_BUS=y
225CONFIG_FORCE_MAX_ZONEORDER=11
219CONFIG_PROC_DEVICETREE=y 226CONFIG_PROC_DEVICETREE=y
220# CONFIG_CMDLINE_BOOL is not set 227# CONFIG_CMDLINE_BOOL is not set
221# CONFIG_PM is not set 228# CONFIG_PM is not set
@@ -234,6 +241,7 @@ CONFIG_FSL_SOC=y
234# CONFIG_PCI_SYSCALL is not set 241# CONFIG_PCI_SYSCALL is not set
235# CONFIG_ARCH_SUPPORTS_MSI is not set 242# CONFIG_ARCH_SUPPORTS_MSI is not set
236# CONFIG_PCCARD is not set 243# CONFIG_PCCARD is not set
244# CONFIG_HAS_RAPIDIO is not set
237 245
238# 246#
239# Advanced setup 247# Advanced setup
@@ -243,11 +251,11 @@ CONFIG_FSL_SOC=y
243# 251#
244# Default settings for advanced configuration options are used 252# Default settings for advanced configuration options are used
245# 253#
246CONFIG_HIGHMEM_START=0xfe000000
247CONFIG_LOWMEM_SIZE=0x30000000 254CONFIG_LOWMEM_SIZE=0x30000000
255CONFIG_PAGE_OFFSET=0xc0000000
248CONFIG_KERNEL_START=0xc0000000 256CONFIG_KERNEL_START=0xc0000000
257CONFIG_PHYSICAL_START=0x00000000
249CONFIG_TASK_SIZE=0xc0000000 258CONFIG_TASK_SIZE=0xc0000000
250CONFIG_BOOT_LOAD=0x00800000
251 259
252# 260#
253# Networking 261# Networking
@@ -295,8 +303,6 @@ CONFIG_TCP_CONG_CUBIC=y
295CONFIG_DEFAULT_TCP_CONG="cubic" 303CONFIG_DEFAULT_TCP_CONG="cubic"
296# CONFIG_TCP_MD5SIG is not set 304# CONFIG_TCP_MD5SIG is not set
297# CONFIG_IPV6 is not set 305# CONFIG_IPV6 is not set
298# CONFIG_INET6_XFRM_TUNNEL is not set
299# CONFIG_INET6_TUNNEL is not set
300# CONFIG_NETWORK_SECMARK is not set 306# CONFIG_NETWORK_SECMARK is not set
301# CONFIG_NETFILTER is not set 307# CONFIG_NETFILTER is not set
302# CONFIG_IP_DCCP is not set 308# CONFIG_IP_DCCP is not set
@@ -350,6 +356,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
350# CONFIG_CONNECTOR is not set 356# CONFIG_CONNECTOR is not set
351# CONFIG_MTD is not set 357# CONFIG_MTD is not set
352CONFIG_OF_DEVICE=y 358CONFIG_OF_DEVICE=y
359CONFIG_OF_I2C=y
353# CONFIG_PARPORT is not set 360# CONFIG_PARPORT is not set
354CONFIG_BLK_DEV=y 361CONFIG_BLK_DEV=y
355# CONFIG_BLK_DEV_FD is not set 362# CONFIG_BLK_DEV_FD is not set
@@ -411,8 +418,10 @@ CONFIG_SCSI_LOWLEVEL=y
411# CONFIG_SCSI_DEBUG is not set 418# CONFIG_SCSI_DEBUG is not set
412CONFIG_ATA=y 419CONFIG_ATA=y
413# CONFIG_ATA_NONSTANDARD is not set 420# CONFIG_ATA_NONSTANDARD is not set
414# CONFIG_SATA_MV is not set 421CONFIG_SATA_PMP=y
415CONFIG_SATA_FSL=y 422CONFIG_SATA_FSL=y
423CONFIG_ATA_SFF=y
424# CONFIG_SATA_MV is not set
416# CONFIG_PATA_PLATFORM is not set 425# CONFIG_PATA_PLATFORM is not set
417# CONFIG_MD is not set 426# CONFIG_MD is not set
418# CONFIG_MACINTOSH_DRIVERS is not set 427# CONFIG_MACINTOSH_DRIVERS is not set
@@ -459,6 +468,7 @@ CONFIG_NETDEV_10000=y
459# 468#
460# CONFIG_WLAN_PRE80211 is not set 469# CONFIG_WLAN_PRE80211 is not set
461# CONFIG_WLAN_80211 is not set 470# CONFIG_WLAN_80211 is not set
471# CONFIG_IWLWIFI_LEDS is not set
462# CONFIG_WAN is not set 472# CONFIG_WAN is not set
463# CONFIG_PPP is not set 473# CONFIG_PPP is not set
464# CONFIG_SLIP is not set 474# CONFIG_SLIP is not set
@@ -503,6 +513,7 @@ CONFIG_INPUT=y
503# Character devices 513# Character devices
504# 514#
505# CONFIG_VT is not set 515# CONFIG_VT is not set
516CONFIG_DEVKMEM=y
506# CONFIG_SERIAL_NONSTANDARD is not set 517# CONFIG_SERIAL_NONSTANDARD is not set
507 518
508# 519#
@@ -537,13 +548,6 @@ CONFIG_I2C_BOARDINFO=y
537CONFIG_I2C_CHARDEV=y 548CONFIG_I2C_CHARDEV=y
538 549
539# 550#
540# I2C Algorithms
541#
542# CONFIG_I2C_ALGOBIT is not set
543# CONFIG_I2C_ALGOPCF is not set
544# CONFIG_I2C_ALGOPCA is not set
545
546#
547# I2C Hardware Bus support 551# I2C Hardware Bus support
548# 552#
549CONFIG_I2C_MPC=y 553CONFIG_I2C_MPC=y
@@ -552,6 +556,7 @@ CONFIG_I2C_MPC=y
552# CONFIG_I2C_SIMTEC is not set 556# CONFIG_I2C_SIMTEC is not set
553# CONFIG_I2C_TAOS_EVM is not set 557# CONFIG_I2C_TAOS_EVM is not set
554# CONFIG_I2C_STUB is not set 558# CONFIG_I2C_STUB is not set
559# CONFIG_I2C_PCA_PLATFORM is not set
555 560
556# 561#
557# Miscellaneous I2C Chip support 562# Miscellaneous I2C Chip support
@@ -561,19 +566,13 @@ CONFIG_I2C_MPC=y
561# CONFIG_SENSORS_PCF8574 is not set 566# CONFIG_SENSORS_PCF8574 is not set
562# CONFIG_PCF8575 is not set 567# CONFIG_PCF8575 is not set
563# CONFIG_SENSORS_PCF8591 is not set 568# CONFIG_SENSORS_PCF8591 is not set
564# CONFIG_TPS65010 is not set
565# CONFIG_SENSORS_MAX6875 is not set 569# CONFIG_SENSORS_MAX6875 is not set
566# CONFIG_SENSORS_TSL2550 is not set 570# CONFIG_SENSORS_TSL2550 is not set
567# CONFIG_I2C_DEBUG_CORE is not set 571# CONFIG_I2C_DEBUG_CORE is not set
568# CONFIG_I2C_DEBUG_ALGO is not set 572# CONFIG_I2C_DEBUG_ALGO is not set
569# CONFIG_I2C_DEBUG_BUS is not set 573# CONFIG_I2C_DEBUG_BUS is not set
570# CONFIG_I2C_DEBUG_CHIP is not set 574# CONFIG_I2C_DEBUG_CHIP is not set
571
572#
573# SPI support
574#
575# CONFIG_SPI is not set 575# CONFIG_SPI is not set
576# CONFIG_SPI_MASTER is not set
577# CONFIG_W1 is not set 576# CONFIG_W1 is not set
578# CONFIG_POWER_SUPPLY is not set 577# CONFIG_POWER_SUPPLY is not set
579CONFIG_HWMON=y 578CONFIG_HWMON=y
@@ -646,12 +645,22 @@ CONFIG_SSB_POSSIBLE=y
646# Multifunction device drivers 645# Multifunction device drivers
647# 646#
648# CONFIG_MFD_SM501 is not set 647# CONFIG_MFD_SM501 is not set
648# CONFIG_HTC_PASIC3 is not set
649 649
650# 650#
651# Multimedia devices 651# Multimedia devices
652# 652#
653
654#
655# Multimedia core support
656#
653# CONFIG_VIDEO_DEV is not set 657# CONFIG_VIDEO_DEV is not set
654# CONFIG_DVB_CORE is not set 658# CONFIG_DVB_CORE is not set
659# CONFIG_VIDEO_MEDIA is not set
660
661#
662# Multimedia drivers
663#
655CONFIG_DAB=y 664CONFIG_DAB=y
656 665
657# 666#
@@ -680,6 +689,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
680# CONFIG_USB_ARCH_HAS_OHCI is not set 689# CONFIG_USB_ARCH_HAS_OHCI is not set
681CONFIG_USB_ARCH_HAS_EHCI=y 690CONFIG_USB_ARCH_HAS_EHCI=y
682# CONFIG_USB is not set 691# CONFIG_USB is not set
692# CONFIG_USB_OTG_WHITELIST is not set
693# CONFIG_USB_OTG_BLACKLIST_HUB is not set
683 694
684# 695#
685# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 696# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -688,13 +699,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
688# CONFIG_MMC is not set 699# CONFIG_MMC is not set
689# CONFIG_MEMSTICK is not set 700# CONFIG_MEMSTICK is not set
690# CONFIG_NEW_LEDS is not set 701# CONFIG_NEW_LEDS is not set
702# CONFIG_ACCESSIBILITY is not set
691# CONFIG_EDAC is not set 703# CONFIG_EDAC is not set
692# CONFIG_RTC_CLASS is not set 704# CONFIG_RTC_CLASS is not set
693# CONFIG_DMADEVICES is not set 705# CONFIG_DMADEVICES is not set
694
695#
696# Userspace I/O
697#
698# CONFIG_UIO is not set 706# CONFIG_UIO is not set
699 707
700# 708#
@@ -714,7 +722,6 @@ CONFIG_FS_MBCACHE=y
714# CONFIG_JFS_FS is not set 722# CONFIG_JFS_FS is not set
715# CONFIG_FS_POSIX_ACL is not set 723# CONFIG_FS_POSIX_ACL is not set
716# CONFIG_XFS_FS is not set 724# CONFIG_XFS_FS is not set
717# CONFIG_GFS2_FS is not set
718# CONFIG_OCFS2_FS is not set 725# CONFIG_OCFS2_FS is not set
719CONFIG_DNOTIFY=y 726CONFIG_DNOTIFY=y
720CONFIG_INOTIFY=y 727CONFIG_INOTIFY=y
@@ -772,7 +779,6 @@ CONFIG_NFS_FS=y
772CONFIG_NFS_V3=y 779CONFIG_NFS_V3=y
773# CONFIG_NFS_V3_ACL is not set 780# CONFIG_NFS_V3_ACL is not set
774CONFIG_NFS_V4=y 781CONFIG_NFS_V4=y
775# CONFIG_NFS_DIRECTIO is not set
776# CONFIG_NFSD is not set 782# CONFIG_NFSD is not set
777CONFIG_ROOT_NFS=y 783CONFIG_ROOT_NFS=y
778CONFIG_LOCKD=y 784CONFIG_LOCKD=y
@@ -817,6 +823,7 @@ CONFIG_MSDOS_PARTITION=y
817# Library routines 823# Library routines
818# 824#
819CONFIG_BITREVERSE=y 825CONFIG_BITREVERSE=y
826# CONFIG_GENERIC_FIND_FIRST_BIT is not set
820# CONFIG_CRC_CCITT is not set 827# CONFIG_CRC_CCITT is not set
821# CONFIG_CRC16 is not set 828# CONFIG_CRC16 is not set
822# CONFIG_CRC_ITU_T is not set 829# CONFIG_CRC_ITU_T is not set
@@ -827,6 +834,7 @@ CONFIG_PLIST=y
827CONFIG_HAS_IOMEM=y 834CONFIG_HAS_IOMEM=y
828CONFIG_HAS_IOPORT=y 835CONFIG_HAS_IOPORT=y
829CONFIG_HAS_DMA=y 836CONFIG_HAS_DMA=y
837CONFIG_HAVE_LMB=y
830 838
831# 839#
832# Kernel hacking 840# Kernel hacking
@@ -834,6 +842,7 @@ CONFIG_HAS_DMA=y
834# CONFIG_PRINTK_TIME is not set 842# CONFIG_PRINTK_TIME is not set
835CONFIG_ENABLE_WARN_DEPRECATED=y 843CONFIG_ENABLE_WARN_DEPRECATED=y
836CONFIG_ENABLE_MUST_CHECK=y 844CONFIG_ENABLE_MUST_CHECK=y
845CONFIG_FRAME_WARN=1024
837# CONFIG_MAGIC_SYSRQ is not set 846# CONFIG_MAGIC_SYSRQ is not set
838# CONFIG_UNUSED_SYMBOLS is not set 847# CONFIG_UNUSED_SYMBOLS is not set
839# CONFIG_DEBUG_FS is not set 848# CONFIG_DEBUG_FS is not set
@@ -841,6 +850,7 @@ CONFIG_ENABLE_MUST_CHECK=y
841# CONFIG_DEBUG_KERNEL is not set 850# CONFIG_DEBUG_KERNEL is not set
842# CONFIG_DEBUG_BUGVERBOSE is not set 851# CONFIG_DEBUG_BUGVERBOSE is not set
843# CONFIG_SAMPLES is not set 852# CONFIG_SAMPLES is not set
853# CONFIG_IRQSTACKS is not set
844# CONFIG_PPC_EARLY_DEBUG is not set 854# CONFIG_PPC_EARLY_DEBUG is not set
845 855
846# 856#
@@ -850,50 +860,80 @@ CONFIG_ENABLE_MUST_CHECK=y
850# CONFIG_SECURITY is not set 860# CONFIG_SECURITY is not set
851# CONFIG_SECURITY_FILE_CAPABILITIES is not set 861# CONFIG_SECURITY_FILE_CAPABILITIES is not set
852CONFIG_CRYPTO=y 862CONFIG_CRYPTO=y
863
864#
865# Crypto core or helper
866#
853CONFIG_CRYPTO_ALGAPI=y 867CONFIG_CRYPTO_ALGAPI=y
854CONFIG_CRYPTO_BLKCIPHER=y 868CONFIG_CRYPTO_BLKCIPHER=y
855# CONFIG_CRYPTO_SEQIV is not set
856CONFIG_CRYPTO_MANAGER=y 869CONFIG_CRYPTO_MANAGER=y
870# CONFIG_CRYPTO_GF128MUL is not set
871# CONFIG_CRYPTO_NULL is not set
872# CONFIG_CRYPTO_CRYPTD is not set
873# CONFIG_CRYPTO_AUTHENC is not set
874# CONFIG_CRYPTO_TEST is not set
875
876#
877# Authenticated Encryption with Associated Data
878#
879# CONFIG_CRYPTO_CCM is not set
880# CONFIG_CRYPTO_GCM is not set
881# CONFIG_CRYPTO_SEQIV is not set
882
883#
884# Block modes
885#
886CONFIG_CRYPTO_CBC=y
887# CONFIG_CRYPTO_CTR is not set
888# CONFIG_CRYPTO_CTS is not set
889CONFIG_CRYPTO_ECB=m
890# CONFIG_CRYPTO_LRW is not set
891CONFIG_CRYPTO_PCBC=m
892# CONFIG_CRYPTO_XTS is not set
893
894#
895# Hash modes
896#
857# CONFIG_CRYPTO_HMAC is not set 897# CONFIG_CRYPTO_HMAC is not set
858# CONFIG_CRYPTO_XCBC is not set 898# CONFIG_CRYPTO_XCBC is not set
859# CONFIG_CRYPTO_NULL is not set 899
900#
901# Digest
902#
903# CONFIG_CRYPTO_CRC32C is not set
860# CONFIG_CRYPTO_MD4 is not set 904# CONFIG_CRYPTO_MD4 is not set
861CONFIG_CRYPTO_MD5=y 905CONFIG_CRYPTO_MD5=y
906# CONFIG_CRYPTO_MICHAEL_MIC is not set
862# CONFIG_CRYPTO_SHA1 is not set 907# CONFIG_CRYPTO_SHA1 is not set
863# CONFIG_CRYPTO_SHA256 is not set 908# CONFIG_CRYPTO_SHA256 is not set
864# CONFIG_CRYPTO_SHA512 is not set 909# CONFIG_CRYPTO_SHA512 is not set
865# CONFIG_CRYPTO_WP512 is not set
866# CONFIG_CRYPTO_TGR192 is not set 910# CONFIG_CRYPTO_TGR192 is not set
867# CONFIG_CRYPTO_GF128MUL is not set 911# CONFIG_CRYPTO_WP512 is not set
868CONFIG_CRYPTO_ECB=m 912
869CONFIG_CRYPTO_CBC=y 913#
870CONFIG_CRYPTO_PCBC=m 914# Ciphers
871# CONFIG_CRYPTO_LRW is not set 915#
872# CONFIG_CRYPTO_XTS is not set
873# CONFIG_CRYPTO_CTR is not set
874# CONFIG_CRYPTO_GCM is not set
875# CONFIG_CRYPTO_CCM is not set
876# CONFIG_CRYPTO_CRYPTD is not set
877CONFIG_CRYPTO_DES=y
878# CONFIG_CRYPTO_FCRYPT is not set
879# CONFIG_CRYPTO_BLOWFISH is not set
880# CONFIG_CRYPTO_TWOFISH is not set
881# CONFIG_CRYPTO_SERPENT is not set
882# CONFIG_CRYPTO_AES is not set 916# CONFIG_CRYPTO_AES is not set
917# CONFIG_CRYPTO_ANUBIS is not set
918# CONFIG_CRYPTO_ARC4 is not set
919# CONFIG_CRYPTO_BLOWFISH is not set
920# CONFIG_CRYPTO_CAMELLIA is not set
883# CONFIG_CRYPTO_CAST5 is not set 921# CONFIG_CRYPTO_CAST5 is not set
884# CONFIG_CRYPTO_CAST6 is not set 922# CONFIG_CRYPTO_CAST6 is not set
885# CONFIG_CRYPTO_TEA is not set 923CONFIG_CRYPTO_DES=y
886# CONFIG_CRYPTO_ARC4 is not set 924# CONFIG_CRYPTO_FCRYPT is not set
887# CONFIG_CRYPTO_KHAZAD is not set 925# CONFIG_CRYPTO_KHAZAD is not set
888# CONFIG_CRYPTO_ANUBIS is not set
889# CONFIG_CRYPTO_SEED is not set
890# CONFIG_CRYPTO_SALSA20 is not set 926# CONFIG_CRYPTO_SALSA20 is not set
927# CONFIG_CRYPTO_SEED is not set
928# CONFIG_CRYPTO_SERPENT is not set
929# CONFIG_CRYPTO_TEA is not set
930# CONFIG_CRYPTO_TWOFISH is not set
931
932#
933# Compression
934#
891# CONFIG_CRYPTO_DEFLATE is not set 935# CONFIG_CRYPTO_DEFLATE is not set
892# CONFIG_CRYPTO_MICHAEL_MIC is not set
893# CONFIG_CRYPTO_CRC32C is not set
894# CONFIG_CRYPTO_CAMELLIA is not set
895# CONFIG_CRYPTO_TEST is not set
896# CONFIG_CRYPTO_AUTHENC is not set
897# CONFIG_CRYPTO_LZO is not set 936# CONFIG_CRYPTO_LZO is not set
898CONFIG_CRYPTO_HW=y 937CONFIG_CRYPTO_HW=y
899# CONFIG_PPC_CLOCK is not set 938# CONFIG_PPC_CLOCK is not set
939# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig
index a6331769d88f..0d448556f53a 100644
--- a/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig
+++ b/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:24 2008 4# Tue Jun 10 09:17:12 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89CONFIG_KALLSYMS=y 92CONFIG_KALLSYMS=y
90# CONFIG_KALLSYMS_EXTRA_PASS is not set 93# CONFIG_KALLSYMS_EXTRA_PASS is not set
91CONFIG_HOTPLUG=y 94CONFIG_HOTPLUG=y
@@ -111,12 +114,14 @@ CONFIG_HAVE_OPROFILE=y
111# CONFIG_KPROBES is not set 114# CONFIG_KPROBES is not set
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
117# CONFIG_TINY_SHMEM is not set 121# CONFIG_TINY_SHMEM is not set
118CONFIG_BASE_SMALL=0 122CONFIG_BASE_SMALL=0
119CONFIG_MODULES=y 123CONFIG_MODULES=y
124# CONFIG_MODULE_FORCE_LOAD is not set
120CONFIG_MODULE_UNLOAD=y 125CONFIG_MODULE_UNLOAD=y
121# CONFIG_MODULE_FORCE_UNLOAD is not set 126# CONFIG_MODULE_FORCE_UNLOAD is not set
122# CONFIG_MODVERSIONS is not set 127# CONFIG_MODVERSIONS is not set
@@ -211,11 +216,13 @@ CONFIG_FLATMEM=y
211CONFIG_FLAT_NODE_MEM_MAP=y 216CONFIG_FLAT_NODE_MEM_MAP=y
212# CONFIG_SPARSEMEM_STATIC is not set 217# CONFIG_SPARSEMEM_STATIC is not set
213# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 218# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
219CONFIG_PAGEFLAGS_EXTENDED=y
214CONFIG_SPLIT_PTLOCK_CPUS=4 220CONFIG_SPLIT_PTLOCK_CPUS=4
215# CONFIG_RESOURCES_64BIT is not set 221# CONFIG_RESOURCES_64BIT is not set
216CONFIG_ZONE_DMA_FLAG=1 222CONFIG_ZONE_DMA_FLAG=1
217CONFIG_BOUNCE=y 223CONFIG_BOUNCE=y
218CONFIG_VIRT_TO_BUS=y 224CONFIG_VIRT_TO_BUS=y
225CONFIG_FORCE_MAX_ZONEORDER=11
219CONFIG_PROC_DEVICETREE=y 226CONFIG_PROC_DEVICETREE=y
220# CONFIG_CMDLINE_BOOL is not set 227# CONFIG_CMDLINE_BOOL is not set
221# CONFIG_PM is not set 228# CONFIG_PM is not set
@@ -234,6 +241,7 @@ CONFIG_FSL_SOC=y
234# CONFIG_PCI_SYSCALL is not set 241# CONFIG_PCI_SYSCALL is not set
235# CONFIG_ARCH_SUPPORTS_MSI is not set 242# CONFIG_ARCH_SUPPORTS_MSI is not set
236# CONFIG_PCCARD is not set 243# CONFIG_PCCARD is not set
244# CONFIG_HAS_RAPIDIO is not set
237 245
238# 246#
239# Advanced setup 247# Advanced setup
@@ -243,11 +251,11 @@ CONFIG_FSL_SOC=y
243# 251#
244# Default settings for advanced configuration options are used 252# Default settings for advanced configuration options are used
245# 253#
246CONFIG_HIGHMEM_START=0xfe000000
247CONFIG_LOWMEM_SIZE=0x30000000 254CONFIG_LOWMEM_SIZE=0x30000000
255CONFIG_PAGE_OFFSET=0xc0000000
248CONFIG_KERNEL_START=0xc0000000 256CONFIG_KERNEL_START=0xc0000000
257CONFIG_PHYSICAL_START=0x00000000
249CONFIG_TASK_SIZE=0xc0000000 258CONFIG_TASK_SIZE=0xc0000000
250CONFIG_BOOT_LOAD=0x00800000
251 259
252# 260#
253# Networking 261# Networking
@@ -290,8 +298,6 @@ CONFIG_TCP_CONG_CUBIC=y
290CONFIG_DEFAULT_TCP_CONG="cubic" 298CONFIG_DEFAULT_TCP_CONG="cubic"
291# CONFIG_TCP_MD5SIG is not set 299# CONFIG_TCP_MD5SIG is not set
292# CONFIG_IPV6 is not set 300# CONFIG_IPV6 is not set
293# CONFIG_INET6_XFRM_TUNNEL is not set
294# CONFIG_INET6_TUNNEL is not set
295# CONFIG_NETWORK_SECMARK is not set 301# CONFIG_NETWORK_SECMARK is not set
296# CONFIG_NETFILTER is not set 302# CONFIG_NETFILTER is not set
297# CONFIG_IP_DCCP is not set 303# CONFIG_IP_DCCP is not set
@@ -345,6 +351,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
345# CONFIG_CONNECTOR is not set 351# CONFIG_CONNECTOR is not set
346# CONFIG_MTD is not set 352# CONFIG_MTD is not set
347CONFIG_OF_DEVICE=y 353CONFIG_OF_DEVICE=y
354CONFIG_OF_I2C=y
348# CONFIG_PARPORT is not set 355# CONFIG_PARPORT is not set
349CONFIG_BLK_DEV=y 356CONFIG_BLK_DEV=y
350# CONFIG_BLK_DEV_FD is not set 357# CONFIG_BLK_DEV_FD is not set
@@ -352,6 +359,7 @@ CONFIG_BLK_DEV=y
352CONFIG_BLK_DEV_LOOP=y 359CONFIG_BLK_DEV_LOOP=y
353# CONFIG_BLK_DEV_CRYPTOLOOP is not set 360# CONFIG_BLK_DEV_CRYPTOLOOP is not set
354# CONFIG_BLK_DEV_NBD is not set 361# CONFIG_BLK_DEV_NBD is not set
362# CONFIG_BLK_DEV_UB is not set
355CONFIG_BLK_DEV_RAM=y 363CONFIG_BLK_DEV_RAM=y
356CONFIG_BLK_DEV_RAM_COUNT=16 364CONFIG_BLK_DEV_RAM_COUNT=16
357CONFIG_BLK_DEV_RAM_SIZE=32768 365CONFIG_BLK_DEV_RAM_SIZE=32768
@@ -406,8 +414,10 @@ CONFIG_SCSI_LOWLEVEL=y
406# CONFIG_SCSI_DEBUG is not set 414# CONFIG_SCSI_DEBUG is not set
407CONFIG_ATA=y 415CONFIG_ATA=y
408# CONFIG_ATA_NONSTANDARD is not set 416# CONFIG_ATA_NONSTANDARD is not set
409# CONFIG_SATA_MV is not set 417CONFIG_SATA_PMP=y
410CONFIG_SATA_FSL=y 418CONFIG_SATA_FSL=y
419CONFIG_ATA_SFF=y
420# CONFIG_SATA_MV is not set
411# CONFIG_PATA_PLATFORM is not set 421# CONFIG_PATA_PLATFORM is not set
412CONFIG_MD=y 422CONFIG_MD=y
413CONFIG_BLK_DEV_MD=y 423CONFIG_BLK_DEV_MD=y
@@ -444,7 +454,7 @@ CONFIG_MARVELL_PHY=y
444# CONFIG_BROADCOM_PHY is not set 454# CONFIG_BROADCOM_PHY is not set
445# CONFIG_ICPLUS_PHY is not set 455# CONFIG_ICPLUS_PHY is not set
446# CONFIG_REALTEK_PHY is not set 456# CONFIG_REALTEK_PHY is not set
447# CONFIG_FIXED_PHY is not set 457CONFIG_FIXED_PHY=y
448# CONFIG_MDIO_BITBANG is not set 458# CONFIG_MDIO_BITBANG is not set
449CONFIG_NET_ETHERNET=y 459CONFIG_NET_ETHERNET=y
450CONFIG_MII=y 460CONFIG_MII=y
@@ -464,6 +474,16 @@ CONFIG_GFAR_NAPI=y
464# 474#
465# CONFIG_WLAN_PRE80211 is not set 475# CONFIG_WLAN_PRE80211 is not set
466# CONFIG_WLAN_80211 is not set 476# CONFIG_WLAN_80211 is not set
477# CONFIG_IWLWIFI_LEDS is not set
478
479#
480# USB Network Adapters
481#
482# CONFIG_USB_CATC is not set
483# CONFIG_USB_KAWETH is not set
484# CONFIG_USB_PEGASUS is not set
485# CONFIG_USB_RTL8150 is not set
486# CONFIG_USB_USBNET is not set
467# CONFIG_WAN is not set 487# CONFIG_WAN is not set
468# CONFIG_PPP is not set 488# CONFIG_PPP is not set
469# CONFIG_SLIP is not set 489# CONFIG_SLIP is not set
@@ -508,6 +528,7 @@ CONFIG_INPUT=y
508# Character devices 528# Character devices
509# 529#
510# CONFIG_VT is not set 530# CONFIG_VT is not set
531CONFIG_DEVKMEM=y
511# CONFIG_SERIAL_NONSTANDARD is not set 532# CONFIG_SERIAL_NONSTANDARD is not set
512 533
513# 534#
@@ -542,13 +563,6 @@ CONFIG_I2C_BOARDINFO=y
542CONFIG_I2C_CHARDEV=y 563CONFIG_I2C_CHARDEV=y
543 564
544# 565#
545# I2C Algorithms
546#
547# CONFIG_I2C_ALGOBIT is not set
548# CONFIG_I2C_ALGOPCF is not set
549# CONFIG_I2C_ALGOPCA is not set
550
551#
552# I2C Hardware Bus support 566# I2C Hardware Bus support
553# 567#
554CONFIG_I2C_MPC=y 568CONFIG_I2C_MPC=y
@@ -557,6 +571,8 @@ CONFIG_I2C_MPC=y
557# CONFIG_I2C_SIMTEC is not set 571# CONFIG_I2C_SIMTEC is not set
558# CONFIG_I2C_TAOS_EVM is not set 572# CONFIG_I2C_TAOS_EVM is not set
559# CONFIG_I2C_STUB is not set 573# CONFIG_I2C_STUB is not set
574# CONFIG_I2C_TINY_USB is not set
575# CONFIG_I2C_PCA_PLATFORM is not set
560 576
561# 577#
562# Miscellaneous I2C Chip support 578# Miscellaneous I2C Chip support
@@ -566,19 +582,13 @@ CONFIG_I2C_MPC=y
566# CONFIG_SENSORS_PCF8574 is not set 582# CONFIG_SENSORS_PCF8574 is not set
567# CONFIG_PCF8575 is not set 583# CONFIG_PCF8575 is not set
568# CONFIG_SENSORS_PCF8591 is not set 584# CONFIG_SENSORS_PCF8591 is not set
569# CONFIG_TPS65010 is not set
570# CONFIG_SENSORS_MAX6875 is not set 585# CONFIG_SENSORS_MAX6875 is not set
571# CONFIG_SENSORS_TSL2550 is not set 586# CONFIG_SENSORS_TSL2550 is not set
572# CONFIG_I2C_DEBUG_CORE is not set 587# CONFIG_I2C_DEBUG_CORE is not set
573# CONFIG_I2C_DEBUG_ALGO is not set 588# CONFIG_I2C_DEBUG_ALGO is not set
574# CONFIG_I2C_DEBUG_BUS is not set 589# CONFIG_I2C_DEBUG_BUS is not set
575# CONFIG_I2C_DEBUG_CHIP is not set 590# CONFIG_I2C_DEBUG_CHIP is not set
576
577#
578# SPI support
579#
580# CONFIG_SPI is not set 591# CONFIG_SPI is not set
581# CONFIG_SPI_MASTER is not set
582# CONFIG_W1 is not set 592# CONFIG_W1 is not set
583# CONFIG_POWER_SUPPLY is not set 593# CONFIG_POWER_SUPPLY is not set
584CONFIG_HWMON=y 594CONFIG_HWMON=y
@@ -642,6 +652,11 @@ CONFIG_WATCHDOG=y
642CONFIG_83xx_WDT=y 652CONFIG_83xx_WDT=y
643 653
644# 654#
655# USB-based Watchdog Cards
656#
657# CONFIG_USBPCWATCHDOG is not set
658
659#
645# Sonics Silicon Backplane 660# Sonics Silicon Backplane
646# 661#
647CONFIG_SSB_POSSIBLE=y 662CONFIG_SSB_POSSIBLE=y
@@ -651,13 +666,24 @@ CONFIG_SSB_POSSIBLE=y
651# Multifunction device drivers 666# Multifunction device drivers
652# 667#
653# CONFIG_MFD_SM501 is not set 668# CONFIG_MFD_SM501 is not set
669# CONFIG_HTC_PASIC3 is not set
654 670
655# 671#
656# Multimedia devices 672# Multimedia devices
657# 673#
674
675#
676# Multimedia core support
677#
658# CONFIG_VIDEO_DEV is not set 678# CONFIG_VIDEO_DEV is not set
659# CONFIG_DVB_CORE is not set 679# CONFIG_DVB_CORE is not set
680# CONFIG_VIDEO_MEDIA is not set
681
682#
683# Multimedia drivers
684#
660CONFIG_DAB=y 685CONFIG_DAB=y
686# CONFIG_USB_DABUSB is not set
661 687
662# 688#
663# Graphics support 689# Graphics support
@@ -680,6 +706,14 @@ CONFIG_HID_SUPPORT=y
680CONFIG_HID=y 706CONFIG_HID=y
681# CONFIG_HID_DEBUG is not set 707# CONFIG_HID_DEBUG is not set
682# CONFIG_HIDRAW is not set 708# CONFIG_HIDRAW is not set
709
710#
711# USB Input Devices
712#
713CONFIG_USB_HID=y
714# CONFIG_USB_HIDINPUT_POWERBOOK is not set
715# CONFIG_HID_FF is not set
716# CONFIG_USB_HIDDEV is not set
683CONFIG_USB_SUPPORT=y 717CONFIG_USB_SUPPORT=y
684CONFIG_USB_ARCH_HAS_HCD=y 718CONFIG_USB_ARCH_HAS_HCD=y
685# CONFIG_USB_ARCH_HAS_OHCI is not set 719# CONFIG_USB_ARCH_HAS_OHCI is not set
@@ -695,33 +729,83 @@ CONFIG_USB=y
695CONFIG_USB_DEVICE_CLASS=y 729CONFIG_USB_DEVICE_CLASS=y
696# CONFIG_USB_DYNAMIC_MINORS is not set 730# CONFIG_USB_DYNAMIC_MINORS is not set
697# CONFIG_USB_OTG is not set 731# CONFIG_USB_OTG is not set
732# CONFIG_USB_OTG_WHITELIST is not set
733# CONFIG_USB_OTG_BLACKLIST_HUB is not set
698 734
699# 735#
700# USB Host Controller Drivers 736# USB Host Controller Drivers
701# 737#
738# CONFIG_USB_C67X00_HCD is not set
702CONFIG_USB_EHCI_HCD=y 739CONFIG_USB_EHCI_HCD=y
703CONFIG_USB_EHCI_ROOT_HUB_TT=y 740CONFIG_USB_EHCI_ROOT_HUB_TT=y
704# CONFIG_USB_EHCI_TT_NEWSCHED is not set 741# CONFIG_USB_EHCI_TT_NEWSCHED is not set
705CONFIG_USB_EHCI_FSL=y 742CONFIG_USB_EHCI_FSL=y
706CONFIG_USB_EHCI_HCD_PPC_OF=y 743CONFIG_USB_EHCI_HCD_PPC_OF=y
707# CONFIG_USB_ISP116X_HCD is not set 744# CONFIG_USB_ISP116X_HCD is not set
745# CONFIG_USB_ISP1760_HCD is not set
708# CONFIG_USB_SL811_HCD is not set 746# CONFIG_USB_SL811_HCD is not set
709# CONFIG_USB_R8A66597_HCD is not set 747# CONFIG_USB_R8A66597_HCD is not set
710 748
711# 749#
750# USB Device Class drivers
751#
752# CONFIG_USB_ACM is not set
753# CONFIG_USB_PRINTER is not set
754# CONFIG_USB_WDM is not set
755
756#
712# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 757# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
713# 758#
759
760#
761# may also be needed; see USB_STORAGE Help for more information
762#
763# CONFIG_USB_STORAGE is not set
764# CONFIG_USB_LIBUSUAL is not set
765
766#
767# USB Imaging devices
768#
769# CONFIG_USB_MDC800 is not set
770# CONFIG_USB_MICROTEK is not set
771CONFIG_USB_MON=y
772
773#
774# USB port drivers
775#
776# CONFIG_USB_SERIAL is not set
777
778#
779# USB Miscellaneous drivers
780#
781# CONFIG_USB_EMI62 is not set
782# CONFIG_USB_EMI26 is not set
783# CONFIG_USB_ADUTUX is not set
784# CONFIG_USB_AUERSWALD is not set
785# CONFIG_USB_RIO500 is not set
786# CONFIG_USB_LEGOTOWER is not set
787# CONFIG_USB_LCD is not set
788# CONFIG_USB_BERRY_CHARGE is not set
789# CONFIG_USB_LED is not set
790# CONFIG_USB_CYPRESS_CY7C63 is not set
791# CONFIG_USB_CYTHERM is not set
792# CONFIG_USB_PHIDGET is not set
793# CONFIG_USB_IDMOUSE is not set
794# CONFIG_USB_FTDI_ELAN is not set
795# CONFIG_USB_APPLEDISPLAY is not set
796# CONFIG_USB_SISUSBVGA is not set
797# CONFIG_USB_LD is not set
798# CONFIG_USB_TRANCEVIBRATOR is not set
799# CONFIG_USB_IOWARRIOR is not set
800# CONFIG_USB_ISIGHTFW is not set
714# CONFIG_USB_GADGET is not set 801# CONFIG_USB_GADGET is not set
715# CONFIG_MMC is not set 802# CONFIG_MMC is not set
716# CONFIG_MEMSTICK is not set 803# CONFIG_MEMSTICK is not set
717# CONFIG_NEW_LEDS is not set 804# CONFIG_NEW_LEDS is not set
805# CONFIG_ACCESSIBILITY is not set
718# CONFIG_EDAC is not set 806# CONFIG_EDAC is not set
719# CONFIG_RTC_CLASS is not set 807# CONFIG_RTC_CLASS is not set
720# CONFIG_DMADEVICES is not set 808# CONFIG_DMADEVICES is not set
721
722#
723# Userspace I/O
724#
725# CONFIG_UIO is not set 809# CONFIG_UIO is not set
726 810
727# 811#
@@ -741,7 +825,6 @@ CONFIG_FS_MBCACHE=y
741# CONFIG_JFS_FS is not set 825# CONFIG_JFS_FS is not set
742# CONFIG_FS_POSIX_ACL is not set 826# CONFIG_FS_POSIX_ACL is not set
743# CONFIG_XFS_FS is not set 827# CONFIG_XFS_FS is not set
744# CONFIG_GFS2_FS is not set
745# CONFIG_OCFS2_FS is not set 828# CONFIG_OCFS2_FS is not set
746CONFIG_DNOTIFY=y 829CONFIG_DNOTIFY=y
747CONFIG_INOTIFY=y 830CONFIG_INOTIFY=y
@@ -799,7 +882,6 @@ CONFIG_NFS_FS=y
799CONFIG_NFS_V3=y 882CONFIG_NFS_V3=y
800# CONFIG_NFS_V3_ACL is not set 883# CONFIG_NFS_V3_ACL is not set
801CONFIG_NFS_V4=y 884CONFIG_NFS_V4=y
802# CONFIG_NFS_DIRECTIO is not set
803# CONFIG_NFSD is not set 885# CONFIG_NFSD is not set
804CONFIG_ROOT_NFS=y 886CONFIG_ROOT_NFS=y
805CONFIG_LOCKD=y 887CONFIG_LOCKD=y
@@ -844,6 +926,7 @@ CONFIG_MSDOS_PARTITION=y
844# Library routines 926# Library routines
845# 927#
846CONFIG_BITREVERSE=y 928CONFIG_BITREVERSE=y
929# CONFIG_GENERIC_FIND_FIRST_BIT is not set
847# CONFIG_CRC_CCITT is not set 930# CONFIG_CRC_CCITT is not set
848# CONFIG_CRC16 is not set 931# CONFIG_CRC16 is not set
849# CONFIG_CRC_ITU_T is not set 932# CONFIG_CRC_ITU_T is not set
@@ -854,6 +937,7 @@ CONFIG_PLIST=y
854CONFIG_HAS_IOMEM=y 937CONFIG_HAS_IOMEM=y
855CONFIG_HAS_IOPORT=y 938CONFIG_HAS_IOPORT=y
856CONFIG_HAS_DMA=y 939CONFIG_HAS_DMA=y
940CONFIG_HAVE_LMB=y
857 941
858# 942#
859# Kernel hacking 943# Kernel hacking
@@ -861,6 +945,7 @@ CONFIG_HAS_DMA=y
861# CONFIG_PRINTK_TIME is not set 945# CONFIG_PRINTK_TIME is not set
862CONFIG_ENABLE_WARN_DEPRECATED=y 946CONFIG_ENABLE_WARN_DEPRECATED=y
863# CONFIG_ENABLE_MUST_CHECK is not set 947# CONFIG_ENABLE_MUST_CHECK is not set
948CONFIG_FRAME_WARN=1024
864# CONFIG_MAGIC_SYSRQ is not set 949# CONFIG_MAGIC_SYSRQ is not set
865# CONFIG_UNUSED_SYMBOLS is not set 950# CONFIG_UNUSED_SYMBOLS is not set
866# CONFIG_DEBUG_FS is not set 951# CONFIG_DEBUG_FS is not set
@@ -868,6 +953,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
868# CONFIG_DEBUG_KERNEL is not set 953# CONFIG_DEBUG_KERNEL is not set
869# CONFIG_DEBUG_BUGVERBOSE is not set 954# CONFIG_DEBUG_BUGVERBOSE is not set
870# CONFIG_SAMPLES is not set 955# CONFIG_SAMPLES is not set
956# CONFIG_IRQSTACKS is not set
871# CONFIG_PPC_EARLY_DEBUG is not set 957# CONFIG_PPC_EARLY_DEBUG is not set
872 958
873# 959#
@@ -881,50 +967,80 @@ CONFIG_ASYNC_CORE=y
881CONFIG_ASYNC_MEMCPY=y 967CONFIG_ASYNC_MEMCPY=y
882CONFIG_ASYNC_XOR=y 968CONFIG_ASYNC_XOR=y
883CONFIG_CRYPTO=y 969CONFIG_CRYPTO=y
970
971#
972# Crypto core or helper
973#
884CONFIG_CRYPTO_ALGAPI=y 974CONFIG_CRYPTO_ALGAPI=y
885CONFIG_CRYPTO_BLKCIPHER=y 975CONFIG_CRYPTO_BLKCIPHER=y
886# CONFIG_CRYPTO_SEQIV is not set
887CONFIG_CRYPTO_MANAGER=y 976CONFIG_CRYPTO_MANAGER=y
977# CONFIG_CRYPTO_GF128MUL is not set
978# CONFIG_CRYPTO_NULL is not set
979# CONFIG_CRYPTO_CRYPTD is not set
980# CONFIG_CRYPTO_AUTHENC is not set
981# CONFIG_CRYPTO_TEST is not set
982
983#
984# Authenticated Encryption with Associated Data
985#
986# CONFIG_CRYPTO_CCM is not set
987# CONFIG_CRYPTO_GCM is not set
988# CONFIG_CRYPTO_SEQIV is not set
989
990#
991# Block modes
992#
993CONFIG_CRYPTO_CBC=y
994# CONFIG_CRYPTO_CTR is not set
995# CONFIG_CRYPTO_CTS is not set
996CONFIG_CRYPTO_ECB=m
997# CONFIG_CRYPTO_LRW is not set
998CONFIG_CRYPTO_PCBC=m
999# CONFIG_CRYPTO_XTS is not set
1000
1001#
1002# Hash modes
1003#
888# CONFIG_CRYPTO_HMAC is not set 1004# CONFIG_CRYPTO_HMAC is not set
889# CONFIG_CRYPTO_XCBC is not set 1005# CONFIG_CRYPTO_XCBC is not set
890# CONFIG_CRYPTO_NULL is not set 1006
1007#
1008# Digest
1009#
1010# CONFIG_CRYPTO_CRC32C is not set
891# CONFIG_CRYPTO_MD4 is not set 1011# CONFIG_CRYPTO_MD4 is not set
892CONFIG_CRYPTO_MD5=y 1012CONFIG_CRYPTO_MD5=y
1013# CONFIG_CRYPTO_MICHAEL_MIC is not set
893# CONFIG_CRYPTO_SHA1 is not set 1014# CONFIG_CRYPTO_SHA1 is not set
894# CONFIG_CRYPTO_SHA256 is not set 1015# CONFIG_CRYPTO_SHA256 is not set
895# CONFIG_CRYPTO_SHA512 is not set 1016# CONFIG_CRYPTO_SHA512 is not set
896# CONFIG_CRYPTO_WP512 is not set
897# CONFIG_CRYPTO_TGR192 is not set 1017# CONFIG_CRYPTO_TGR192 is not set
898# CONFIG_CRYPTO_GF128MUL is not set 1018# CONFIG_CRYPTO_WP512 is not set
899CONFIG_CRYPTO_ECB=m 1019
900CONFIG_CRYPTO_CBC=y 1020#
901CONFIG_CRYPTO_PCBC=m 1021# Ciphers
902# CONFIG_CRYPTO_LRW is not set 1022#
903# CONFIG_CRYPTO_XTS is not set
904# CONFIG_CRYPTO_CTR is not set
905# CONFIG_CRYPTO_GCM is not set
906# CONFIG_CRYPTO_CCM is not set
907# CONFIG_CRYPTO_CRYPTD is not set
908CONFIG_CRYPTO_DES=y
909# CONFIG_CRYPTO_FCRYPT is not set
910# CONFIG_CRYPTO_BLOWFISH is not set
911# CONFIG_CRYPTO_TWOFISH is not set
912# CONFIG_CRYPTO_SERPENT is not set
913# CONFIG_CRYPTO_AES is not set 1023# CONFIG_CRYPTO_AES is not set
1024# CONFIG_CRYPTO_ANUBIS is not set
1025# CONFIG_CRYPTO_ARC4 is not set
1026# CONFIG_CRYPTO_BLOWFISH is not set
1027# CONFIG_CRYPTO_CAMELLIA is not set
914# CONFIG_CRYPTO_CAST5 is not set 1028# CONFIG_CRYPTO_CAST5 is not set
915# CONFIG_CRYPTO_CAST6 is not set 1029# CONFIG_CRYPTO_CAST6 is not set
916# CONFIG_CRYPTO_TEA is not set 1030CONFIG_CRYPTO_DES=y
917# CONFIG_CRYPTO_ARC4 is not set 1031# CONFIG_CRYPTO_FCRYPT is not set
918# CONFIG_CRYPTO_KHAZAD is not set 1032# CONFIG_CRYPTO_KHAZAD is not set
919# CONFIG_CRYPTO_ANUBIS is not set
920# CONFIG_CRYPTO_SEED is not set
921# CONFIG_CRYPTO_SALSA20 is not set 1033# CONFIG_CRYPTO_SALSA20 is not set
1034# CONFIG_CRYPTO_SEED is not set
1035# CONFIG_CRYPTO_SERPENT is not set
1036# CONFIG_CRYPTO_TEA is not set
1037# CONFIG_CRYPTO_TWOFISH is not set
1038
1039#
1040# Compression
1041#
922# CONFIG_CRYPTO_DEFLATE is not set 1042# CONFIG_CRYPTO_DEFLATE is not set
923# CONFIG_CRYPTO_MICHAEL_MIC is not set
924# CONFIG_CRYPTO_CRC32C is not set
925# CONFIG_CRYPTO_CAMELLIA is not set
926# CONFIG_CRYPTO_TEST is not set
927# CONFIG_CRYPTO_AUTHENC is not set
928# CONFIG_CRYPTO_LZO is not set 1043# CONFIG_CRYPTO_LZO is not set
929CONFIG_CRYPTO_HW=y 1044CONFIG_CRYPTO_HW=y
930# CONFIG_PPC_CLOCK is not set 1045# CONFIG_PPC_CLOCK is not set
1046# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/83xx/sbc834x_defconfig b/arch/powerpc/configs/83xx/sbc834x_defconfig
index 1f1518229f6d..1752918be2c1 100644
--- a/arch/powerpc/configs/83xx/sbc834x_defconfig
+++ b/arch/powerpc/configs/83xx/sbc834x_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:38 2008 4# Mon Jun 9 08:52:30 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89# CONFIG_KALLSYMS is not set 92# CONFIG_KALLSYMS is not set
90CONFIG_HOTPLUG=y 93CONFIG_HOTPLUG=y
91CONFIG_PRINTK=y 94CONFIG_PRINTK=y
@@ -109,12 +112,14 @@ CONFIG_SLAB=y
109CONFIG_HAVE_OPROFILE=y 112CONFIG_HAVE_OPROFILE=y
110CONFIG_HAVE_KPROBES=y 113CONFIG_HAVE_KPROBES=y
111CONFIG_HAVE_KRETPROBES=y 114CONFIG_HAVE_KRETPROBES=y
115# CONFIG_HAVE_DMA_ATTRS is not set
112CONFIG_PROC_PAGE_MONITOR=y 116CONFIG_PROC_PAGE_MONITOR=y
113CONFIG_SLABINFO=y 117CONFIG_SLABINFO=y
114CONFIG_RT_MUTEXES=y 118CONFIG_RT_MUTEXES=y
115# CONFIG_TINY_SHMEM is not set 119# CONFIG_TINY_SHMEM is not set
116CONFIG_BASE_SMALL=0 120CONFIG_BASE_SMALL=0
117CONFIG_MODULES=y 121CONFIG_MODULES=y
122# CONFIG_MODULE_FORCE_LOAD is not set
118CONFIG_MODULE_UNLOAD=y 123CONFIG_MODULE_UNLOAD=y
119# CONFIG_MODULE_FORCE_UNLOAD is not set 124# CONFIG_MODULE_FORCE_UNLOAD is not set
120# CONFIG_MODVERSIONS is not set 125# CONFIG_MODVERSIONS is not set
@@ -209,11 +214,13 @@ CONFIG_FLATMEM=y
209CONFIG_FLAT_NODE_MEM_MAP=y 214CONFIG_FLAT_NODE_MEM_MAP=y
210# CONFIG_SPARSEMEM_STATIC is not set 215# CONFIG_SPARSEMEM_STATIC is not set
211# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 216# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
217CONFIG_PAGEFLAGS_EXTENDED=y
212CONFIG_SPLIT_PTLOCK_CPUS=4 218CONFIG_SPLIT_PTLOCK_CPUS=4
213# CONFIG_RESOURCES_64BIT is not set 219# CONFIG_RESOURCES_64BIT is not set
214CONFIG_ZONE_DMA_FLAG=1 220CONFIG_ZONE_DMA_FLAG=1
215CONFIG_BOUNCE=y 221CONFIG_BOUNCE=y
216CONFIG_VIRT_TO_BUS=y 222CONFIG_VIRT_TO_BUS=y
223CONFIG_FORCE_MAX_ZONEORDER=11
217CONFIG_PROC_DEVICETREE=y 224CONFIG_PROC_DEVICETREE=y
218# CONFIG_CMDLINE_BOOL is not set 225# CONFIG_CMDLINE_BOOL is not set
219# CONFIG_PM is not set 226# CONFIG_PM is not set
@@ -232,6 +239,7 @@ CONFIG_FSL_SOC=y
232# CONFIG_PCI_SYSCALL is not set 239# CONFIG_PCI_SYSCALL is not set
233# CONFIG_ARCH_SUPPORTS_MSI is not set 240# CONFIG_ARCH_SUPPORTS_MSI is not set
234# CONFIG_PCCARD is not set 241# CONFIG_PCCARD is not set
242# CONFIG_HAS_RAPIDIO is not set
235 243
236# 244#
237# Advanced setup 245# Advanced setup
@@ -241,11 +249,11 @@ CONFIG_FSL_SOC=y
241# 249#
242# Default settings for advanced configuration options are used 250# Default settings for advanced configuration options are used
243# 251#
244CONFIG_HIGHMEM_START=0xfe000000
245CONFIG_LOWMEM_SIZE=0x30000000 252CONFIG_LOWMEM_SIZE=0x30000000
253CONFIG_PAGE_OFFSET=0xc0000000
246CONFIG_KERNEL_START=0xc0000000 254CONFIG_KERNEL_START=0xc0000000
255CONFIG_PHYSICAL_START=0x00000000
247CONFIG_TASK_SIZE=0xc0000000 256CONFIG_TASK_SIZE=0xc0000000
248CONFIG_BOOT_LOAD=0x00800000
249 257
250# 258#
251# Networking 259# Networking
@@ -293,8 +301,6 @@ CONFIG_TCP_CONG_CUBIC=y
293CONFIG_DEFAULT_TCP_CONG="cubic" 301CONFIG_DEFAULT_TCP_CONG="cubic"
294# CONFIG_TCP_MD5SIG is not set 302# CONFIG_TCP_MD5SIG is not set
295# CONFIG_IPV6 is not set 303# CONFIG_IPV6 is not set
296# CONFIG_INET6_XFRM_TUNNEL is not set
297# CONFIG_INET6_TUNNEL is not set
298# CONFIG_NETWORK_SECMARK is not set 304# CONFIG_NETWORK_SECMARK is not set
299# CONFIG_NETFILTER is not set 305# CONFIG_NETFILTER is not set
300# CONFIG_IP_DCCP is not set 306# CONFIG_IP_DCCP is not set
@@ -348,6 +354,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
348# CONFIG_CONNECTOR is not set 354# CONFIG_CONNECTOR is not set
349# CONFIG_MTD is not set 355# CONFIG_MTD is not set
350CONFIG_OF_DEVICE=y 356CONFIG_OF_DEVICE=y
357CONFIG_OF_I2C=y
351# CONFIG_PARPORT is not set 358# CONFIG_PARPORT is not set
352CONFIG_BLK_DEV=y 359CONFIG_BLK_DEV=y
353# CONFIG_BLK_DEV_FD is not set 360# CONFIG_BLK_DEV_FD is not set
@@ -420,6 +427,7 @@ CONFIG_GIANFAR=y
420# 427#
421# CONFIG_WLAN_PRE80211 is not set 428# CONFIG_WLAN_PRE80211 is not set
422# CONFIG_WLAN_80211 is not set 429# CONFIG_WLAN_80211 is not set
430# CONFIG_IWLWIFI_LEDS is not set
423# CONFIG_WAN is not set 431# CONFIG_WAN is not set
424# CONFIG_PPP is not set 432# CONFIG_PPP is not set
425# CONFIG_SLIP is not set 433# CONFIG_SLIP is not set
@@ -464,6 +472,7 @@ CONFIG_INPUT=y
464# Character devices 472# Character devices
465# 473#
466# CONFIG_VT is not set 474# CONFIG_VT is not set
475CONFIG_DEVKMEM=y
467# CONFIG_SERIAL_NONSTANDARD is not set 476# CONFIG_SERIAL_NONSTANDARD is not set
468 477
469# 478#
@@ -498,13 +507,6 @@ CONFIG_I2C_BOARDINFO=y
498CONFIG_I2C_CHARDEV=y 507CONFIG_I2C_CHARDEV=y
499 508
500# 509#
501# I2C Algorithms
502#
503# CONFIG_I2C_ALGOBIT is not set
504# CONFIG_I2C_ALGOPCF is not set
505# CONFIG_I2C_ALGOPCA is not set
506
507#
508# I2C Hardware Bus support 510# I2C Hardware Bus support
509# 511#
510CONFIG_I2C_MPC=y 512CONFIG_I2C_MPC=y
@@ -513,6 +515,7 @@ CONFIG_I2C_MPC=y
513# CONFIG_I2C_SIMTEC is not set 515# CONFIG_I2C_SIMTEC is not set
514# CONFIG_I2C_TAOS_EVM is not set 516# CONFIG_I2C_TAOS_EVM is not set
515# CONFIG_I2C_STUB is not set 517# CONFIG_I2C_STUB is not set
518# CONFIG_I2C_PCA_PLATFORM is not set
516 519
517# 520#
518# Miscellaneous I2C Chip support 521# Miscellaneous I2C Chip support
@@ -522,19 +525,13 @@ CONFIG_I2C_MPC=y
522# CONFIG_SENSORS_PCF8574 is not set 525# CONFIG_SENSORS_PCF8574 is not set
523# CONFIG_PCF8575 is not set 526# CONFIG_PCF8575 is not set
524# CONFIG_SENSORS_PCF8591 is not set 527# CONFIG_SENSORS_PCF8591 is not set
525# CONFIG_TPS65010 is not set
526# CONFIG_SENSORS_MAX6875 is not set 528# CONFIG_SENSORS_MAX6875 is not set
527# CONFIG_SENSORS_TSL2550 is not set 529# CONFIG_SENSORS_TSL2550 is not set
528# CONFIG_I2C_DEBUG_CORE is not set 530# CONFIG_I2C_DEBUG_CORE is not set
529# CONFIG_I2C_DEBUG_ALGO is not set 531# CONFIG_I2C_DEBUG_ALGO is not set
530# CONFIG_I2C_DEBUG_BUS is not set 532# CONFIG_I2C_DEBUG_BUS is not set
531# CONFIG_I2C_DEBUG_CHIP is not set 533# CONFIG_I2C_DEBUG_CHIP is not set
532
533#
534# SPI support
535#
536# CONFIG_SPI is not set 534# CONFIG_SPI is not set
537# CONFIG_SPI_MASTER is not set
538# CONFIG_W1 is not set 535# CONFIG_W1 is not set
539# CONFIG_POWER_SUPPLY is not set 536# CONFIG_POWER_SUPPLY is not set
540CONFIG_HWMON=y 537CONFIG_HWMON=y
@@ -607,12 +604,22 @@ CONFIG_SSB_POSSIBLE=y
607# Multifunction device drivers 604# Multifunction device drivers
608# 605#
609# CONFIG_MFD_SM501 is not set 606# CONFIG_MFD_SM501 is not set
607# CONFIG_HTC_PASIC3 is not set
610 608
611# 609#
612# Multimedia devices 610# Multimedia devices
613# 611#
612
613#
614# Multimedia core support
615#
614# CONFIG_VIDEO_DEV is not set 616# CONFIG_VIDEO_DEV is not set
615# CONFIG_DVB_CORE is not set 617# CONFIG_DVB_CORE is not set
618# CONFIG_VIDEO_MEDIA is not set
619
620#
621# Multimedia drivers
622#
616# CONFIG_DAB is not set 623# CONFIG_DAB is not set
617 624
618# 625#
@@ -640,13 +647,10 @@ CONFIG_HID=y
640# CONFIG_MMC is not set 647# CONFIG_MMC is not set
641# CONFIG_MEMSTICK is not set 648# CONFIG_MEMSTICK is not set
642# CONFIG_NEW_LEDS is not set 649# CONFIG_NEW_LEDS is not set
650# CONFIG_ACCESSIBILITY is not set
643# CONFIG_EDAC is not set 651# CONFIG_EDAC is not set
644# CONFIG_RTC_CLASS is not set 652# CONFIG_RTC_CLASS is not set
645# CONFIG_DMADEVICES is not set 653# CONFIG_DMADEVICES is not set
646
647#
648# Userspace I/O
649#
650# CONFIG_UIO is not set 654# CONFIG_UIO is not set
651 655
652# 656#
@@ -659,7 +663,6 @@ CONFIG_HID=y
659# CONFIG_JFS_FS is not set 663# CONFIG_JFS_FS is not set
660# CONFIG_FS_POSIX_ACL is not set 664# CONFIG_FS_POSIX_ACL is not set
661# CONFIG_XFS_FS is not set 665# CONFIG_XFS_FS is not set
662# CONFIG_GFS2_FS is not set
663# CONFIG_OCFS2_FS is not set 666# CONFIG_OCFS2_FS is not set
664CONFIG_DNOTIFY=y 667CONFIG_DNOTIFY=y
665CONFIG_INOTIFY=y 668CONFIG_INOTIFY=y
@@ -717,7 +720,6 @@ CONFIG_NFS_FS=y
717CONFIG_NFS_V3=y 720CONFIG_NFS_V3=y
718# CONFIG_NFS_V3_ACL is not set 721# CONFIG_NFS_V3_ACL is not set
719CONFIG_NFS_V4=y 722CONFIG_NFS_V4=y
720# CONFIG_NFS_DIRECTIO is not set
721# CONFIG_NFSD is not set 723# CONFIG_NFSD is not set
722CONFIG_ROOT_NFS=y 724CONFIG_ROOT_NFS=y
723CONFIG_LOCKD=y 725CONFIG_LOCKD=y
@@ -746,6 +748,7 @@ CONFIG_MSDOS_PARTITION=y
746# Library routines 748# Library routines
747# 749#
748CONFIG_BITREVERSE=y 750CONFIG_BITREVERSE=y
751# CONFIG_GENERIC_FIND_FIRST_BIT is not set
749# CONFIG_CRC_CCITT is not set 752# CONFIG_CRC_CCITT is not set
750# CONFIG_CRC16 is not set 753# CONFIG_CRC16 is not set
751# CONFIG_CRC_ITU_T is not set 754# CONFIG_CRC_ITU_T is not set
@@ -756,6 +759,7 @@ CONFIG_PLIST=y
756CONFIG_HAS_IOMEM=y 759CONFIG_HAS_IOMEM=y
757CONFIG_HAS_IOPORT=y 760CONFIG_HAS_IOPORT=y
758CONFIG_HAS_DMA=y 761CONFIG_HAS_DMA=y
762CONFIG_HAVE_LMB=y
759 763
760# 764#
761# Kernel hacking 765# Kernel hacking
@@ -763,6 +767,7 @@ CONFIG_HAS_DMA=y
763# CONFIG_PRINTK_TIME is not set 767# CONFIG_PRINTK_TIME is not set
764CONFIG_ENABLE_WARN_DEPRECATED=y 768CONFIG_ENABLE_WARN_DEPRECATED=y
765CONFIG_ENABLE_MUST_CHECK=y 769CONFIG_ENABLE_MUST_CHECK=y
770CONFIG_FRAME_WARN=1024
766# CONFIG_MAGIC_SYSRQ is not set 771# CONFIG_MAGIC_SYSRQ is not set
767# CONFIG_UNUSED_SYMBOLS is not set 772# CONFIG_UNUSED_SYMBOLS is not set
768# CONFIG_DEBUG_FS is not set 773# CONFIG_DEBUG_FS is not set
@@ -770,6 +775,7 @@ CONFIG_ENABLE_MUST_CHECK=y
770# CONFIG_DEBUG_KERNEL is not set 775# CONFIG_DEBUG_KERNEL is not set
771# CONFIG_DEBUG_BUGVERBOSE is not set 776# CONFIG_DEBUG_BUGVERBOSE is not set
772# CONFIG_SAMPLES is not set 777# CONFIG_SAMPLES is not set
778# CONFIG_IRQSTACKS is not set
773# CONFIG_PPC_EARLY_DEBUG is not set 779# CONFIG_PPC_EARLY_DEBUG is not set
774 780
775# 781#
@@ -779,50 +785,80 @@ CONFIG_ENABLE_MUST_CHECK=y
779# CONFIG_SECURITY is not set 785# CONFIG_SECURITY is not set
780# CONFIG_SECURITY_FILE_CAPABILITIES is not set 786# CONFIG_SECURITY_FILE_CAPABILITIES is not set
781CONFIG_CRYPTO=y 787CONFIG_CRYPTO=y
788
789#
790# Crypto core or helper
791#
782CONFIG_CRYPTO_ALGAPI=y 792CONFIG_CRYPTO_ALGAPI=y
783CONFIG_CRYPTO_BLKCIPHER=y 793CONFIG_CRYPTO_BLKCIPHER=y
784# CONFIG_CRYPTO_SEQIV is not set
785CONFIG_CRYPTO_MANAGER=y 794CONFIG_CRYPTO_MANAGER=y
795# CONFIG_CRYPTO_GF128MUL is not set
796# CONFIG_CRYPTO_NULL is not set
797# CONFIG_CRYPTO_CRYPTD is not set
798# CONFIG_CRYPTO_AUTHENC is not set
799# CONFIG_CRYPTO_TEST is not set
800
801#
802# Authenticated Encryption with Associated Data
803#
804# CONFIG_CRYPTO_CCM is not set
805# CONFIG_CRYPTO_GCM is not set
806# CONFIG_CRYPTO_SEQIV is not set
807
808#
809# Block modes
810#
811CONFIG_CRYPTO_CBC=y
812# CONFIG_CRYPTO_CTR is not set
813# CONFIG_CRYPTO_CTS is not set
814CONFIG_CRYPTO_ECB=m
815# CONFIG_CRYPTO_LRW is not set
816CONFIG_CRYPTO_PCBC=m
817# CONFIG_CRYPTO_XTS is not set
818
819#
820# Hash modes
821#
786# CONFIG_CRYPTO_HMAC is not set 822# CONFIG_CRYPTO_HMAC is not set
787# CONFIG_CRYPTO_XCBC is not set 823# CONFIG_CRYPTO_XCBC is not set
788# CONFIG_CRYPTO_NULL is not set 824
825#
826# Digest
827#
828# CONFIG_CRYPTO_CRC32C is not set
789# CONFIG_CRYPTO_MD4 is not set 829# CONFIG_CRYPTO_MD4 is not set
790CONFIG_CRYPTO_MD5=y 830CONFIG_CRYPTO_MD5=y
831# CONFIG_CRYPTO_MICHAEL_MIC is not set
791# CONFIG_CRYPTO_SHA1 is not set 832# CONFIG_CRYPTO_SHA1 is not set
792# CONFIG_CRYPTO_SHA256 is not set 833# CONFIG_CRYPTO_SHA256 is not set
793# CONFIG_CRYPTO_SHA512 is not set 834# CONFIG_CRYPTO_SHA512 is not set
794# CONFIG_CRYPTO_WP512 is not set
795# CONFIG_CRYPTO_TGR192 is not set 835# CONFIG_CRYPTO_TGR192 is not set
796# CONFIG_CRYPTO_GF128MUL is not set 836# CONFIG_CRYPTO_WP512 is not set
797CONFIG_CRYPTO_ECB=m 837
798CONFIG_CRYPTO_CBC=y 838#
799CONFIG_CRYPTO_PCBC=m 839# Ciphers
800# CONFIG_CRYPTO_LRW is not set 840#
801# CONFIG_CRYPTO_XTS is not set
802# CONFIG_CRYPTO_CTR is not set
803# CONFIG_CRYPTO_GCM is not set
804# CONFIG_CRYPTO_CCM is not set
805# CONFIG_CRYPTO_CRYPTD is not set
806CONFIG_CRYPTO_DES=y
807# CONFIG_CRYPTO_FCRYPT is not set
808# CONFIG_CRYPTO_BLOWFISH is not set
809# CONFIG_CRYPTO_TWOFISH is not set
810# CONFIG_CRYPTO_SERPENT is not set
811# CONFIG_CRYPTO_AES is not set 841# CONFIG_CRYPTO_AES is not set
842# CONFIG_CRYPTO_ANUBIS is not set
843# CONFIG_CRYPTO_ARC4 is not set
844# CONFIG_CRYPTO_BLOWFISH is not set
845# CONFIG_CRYPTO_CAMELLIA is not set
812# CONFIG_CRYPTO_CAST5 is not set 846# CONFIG_CRYPTO_CAST5 is not set
813# CONFIG_CRYPTO_CAST6 is not set 847# CONFIG_CRYPTO_CAST6 is not set
814# CONFIG_CRYPTO_TEA is not set 848CONFIG_CRYPTO_DES=y
815# CONFIG_CRYPTO_ARC4 is not set 849# CONFIG_CRYPTO_FCRYPT is not set
816# CONFIG_CRYPTO_KHAZAD is not set 850# CONFIG_CRYPTO_KHAZAD is not set
817# CONFIG_CRYPTO_ANUBIS is not set
818# CONFIG_CRYPTO_SEED is not set
819# CONFIG_CRYPTO_SALSA20 is not set 851# CONFIG_CRYPTO_SALSA20 is not set
852# CONFIG_CRYPTO_SEED is not set
853# CONFIG_CRYPTO_SERPENT is not set
854# CONFIG_CRYPTO_TEA is not set
855# CONFIG_CRYPTO_TWOFISH is not set
856
857#
858# Compression
859#
820# CONFIG_CRYPTO_DEFLATE is not set 860# CONFIG_CRYPTO_DEFLATE is not set
821# CONFIG_CRYPTO_MICHAEL_MIC is not set
822# CONFIG_CRYPTO_CRC32C is not set
823# CONFIG_CRYPTO_CAMELLIA is not set
824# CONFIG_CRYPTO_TEST is not set
825# CONFIG_CRYPTO_AUTHENC is not set
826# CONFIG_CRYPTO_LZO is not set 861# CONFIG_CRYPTO_LZO is not set
827# CONFIG_CRYPTO_HW is not set 862# CONFIG_CRYPTO_HW is not set
828# CONFIG_PPC_CLOCK is not set 863# CONFIG_PPC_CLOCK is not set
864# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/ksi8560_defconfig b/arch/powerpc/configs/85xx/ksi8560_defconfig
index 2d0debcefdbf..b82bb042308a 100644
--- a/arch/powerpc/configs/85xx/ksi8560_defconfig
+++ b/arch/powerpc/configs/85xx/ksi8560_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24 3# Linux kernel version: 2.6.26-rc5
4# Mon Feb 11 16:25:19 2008 4# Mon Jun 9 08:52:30 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -68,23 +70,22 @@ CONFIG_SYSVIPC_SYSCTL=y
68# CONFIG_POSIX_MQUEUE is not set 70# CONFIG_POSIX_MQUEUE is not set
69# CONFIG_BSD_PROCESS_ACCT is not set 71# CONFIG_BSD_PROCESS_ACCT is not set
70# CONFIG_TASKSTATS is not set 72# CONFIG_TASKSTATS is not set
71# CONFIG_USER_NS is not set
72# CONFIG_PID_NS is not set
73# CONFIG_AUDIT is not set 73# CONFIG_AUDIT is not set
74# CONFIG_IKCONFIG is not set 74# CONFIG_IKCONFIG is not set
75CONFIG_LOG_BUF_SHIFT=14 75CONFIG_LOG_BUF_SHIFT=14
76# CONFIG_CGROUPS is not set 76# CONFIG_CGROUPS is not set
77CONFIG_FAIR_GROUP_SCHED=y 77# CONFIG_GROUP_SCHED is not set
78CONFIG_FAIR_USER_SCHED=y
79# CONFIG_FAIR_CGROUP_SCHED is not set
80CONFIG_SYSFS_DEPRECATED=y 78CONFIG_SYSFS_DEPRECATED=y
79CONFIG_SYSFS_DEPRECATED_V2=y
81# CONFIG_RELAY is not set 80# CONFIG_RELAY is not set
81# CONFIG_NAMESPACES is not set
82CONFIG_BLK_DEV_INITRD=y 82CONFIG_BLK_DEV_INITRD=y
83CONFIG_INITRAMFS_SOURCE="" 83CONFIG_INITRAMFS_SOURCE=""
84# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 84# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
85CONFIG_SYSCTL=y 85CONFIG_SYSCTL=y
86CONFIG_EMBEDDED=y 86CONFIG_EMBEDDED=y
87CONFIG_SYSCTL_SYSCALL=y 87CONFIG_SYSCTL_SYSCALL=y
88CONFIG_SYSCTL_SYSCALL_CHECK=y
88CONFIG_KALLSYMS=y 89CONFIG_KALLSYMS=y
89# CONFIG_KALLSYMS_ALL is not set 90# CONFIG_KALLSYMS_ALL is not set
90# CONFIG_KALLSYMS_EXTRA_PASS is not set 91# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -92,6 +93,7 @@ CONFIG_HOTPLUG=y
92CONFIG_PRINTK=y 93CONFIG_PRINTK=y
93CONFIG_BUG=y 94CONFIG_BUG=y
94CONFIG_ELF_CORE=y 95CONFIG_ELF_CORE=y
96CONFIG_COMPAT_BRK=y
95CONFIG_BASE_FULL=y 97CONFIG_BASE_FULL=y
96CONFIG_FUTEX=y 98CONFIG_FUTEX=y
97CONFIG_ANON_INODES=y 99CONFIG_ANON_INODES=y
@@ -109,6 +111,8 @@ CONFIG_SLUB=y
109# CONFIG_MARKERS is not set 111# CONFIG_MARKERS is not set
110CONFIG_HAVE_OPROFILE=y 112CONFIG_HAVE_OPROFILE=y
111CONFIG_HAVE_KPROBES=y 113CONFIG_HAVE_KPROBES=y
114CONFIG_HAVE_KRETPROBES=y
115# CONFIG_HAVE_DMA_ATTRS is not set
112CONFIG_PROC_PAGE_MONITOR=y 116CONFIG_PROC_PAGE_MONITOR=y
113CONFIG_SLABINFO=y 117CONFIG_SLABINFO=y
114CONFIG_RT_MUTEXES=y 118CONFIG_RT_MUTEXES=y
@@ -134,7 +138,6 @@ CONFIG_DEFAULT_AS=y
134# CONFIG_DEFAULT_NOOP is not set 138# CONFIG_DEFAULT_NOOP is not set
135CONFIG_DEFAULT_IOSCHED="anticipatory" 139CONFIG_DEFAULT_IOSCHED="anticipatory"
136CONFIG_CLASSIC_RCU=y 140CONFIG_CLASSIC_RCU=y
137# CONFIG_PREEMPT_RCU is not set
138 141
139# 142#
140# Platform support 143# Platform support
@@ -191,12 +194,13 @@ CONFIG_HZ=250
191CONFIG_PREEMPT_NONE=y 194CONFIG_PREEMPT_NONE=y
192# CONFIG_PREEMPT_VOLUNTARY is not set 195# CONFIG_PREEMPT_VOLUNTARY is not set
193# CONFIG_PREEMPT is not set 196# CONFIG_PREEMPT is not set
194CONFIG_RCU_TRACE=y
195CONFIG_BINFMT_ELF=y 197CONFIG_BINFMT_ELF=y
196CONFIG_BINFMT_MISC=y 198CONFIG_BINFMT_MISC=y
197CONFIG_MATH_EMULATION=y 199CONFIG_MATH_EMULATION=y
198# CONFIG_IOMMU_HELPER is not set 200# CONFIG_IOMMU_HELPER is not set
199CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 201CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
202CONFIG_ARCH_HAS_WALK_MEMORY=y
203CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
200CONFIG_ARCH_FLATMEM_ENABLE=y 204CONFIG_ARCH_FLATMEM_ENABLE=y
201CONFIG_ARCH_POPULATES_NODE_MAP=y 205CONFIG_ARCH_POPULATES_NODE_MAP=y
202CONFIG_SELECT_MEMORY_MODEL=y 206CONFIG_SELECT_MEMORY_MODEL=y
@@ -207,16 +211,17 @@ CONFIG_FLATMEM=y
207CONFIG_FLAT_NODE_MEM_MAP=y 211CONFIG_FLAT_NODE_MEM_MAP=y
208# CONFIG_SPARSEMEM_STATIC is not set 212# CONFIG_SPARSEMEM_STATIC is not set
209# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 213# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
214CONFIG_PAGEFLAGS_EXTENDED=y
210CONFIG_SPLIT_PTLOCK_CPUS=4 215CONFIG_SPLIT_PTLOCK_CPUS=4
211# CONFIG_RESOURCES_64BIT is not set 216# CONFIG_RESOURCES_64BIT is not set
212CONFIG_ZONE_DMA_FLAG=1 217CONFIG_ZONE_DMA_FLAG=1
213CONFIG_BOUNCE=y 218CONFIG_BOUNCE=y
214CONFIG_VIRT_TO_BUS=y 219CONFIG_VIRT_TO_BUS=y
220CONFIG_FORCE_MAX_ZONEORDER=11
215# CONFIG_PROC_DEVICETREE is not set 221# CONFIG_PROC_DEVICETREE is not set
216# CONFIG_CMDLINE_BOOL is not set 222# CONFIG_CMDLINE_BOOL is not set
217# CONFIG_PM is not set 223# CONFIG_PM is not set
218# CONFIG_SECCOMP is not set 224# CONFIG_SECCOMP is not set
219CONFIG_WANT_DEVICE_TREE=y
220CONFIG_ISA_DMA_API=y 225CONFIG_ISA_DMA_API=y
221 226
222# 227#
@@ -229,6 +234,7 @@ CONFIG_FSL_SOC=y
229# CONFIG_PCI_SYSCALL is not set 234# CONFIG_PCI_SYSCALL is not set
230# CONFIG_ARCH_SUPPORTS_MSI is not set 235# CONFIG_ARCH_SUPPORTS_MSI is not set
231# CONFIG_PCCARD is not set 236# CONFIG_PCCARD is not set
237# CONFIG_HAS_RAPIDIO is not set
232 238
233# 239#
234# Advanced setup 240# Advanced setup
@@ -238,11 +244,12 @@ CONFIG_FSL_SOC=y
238# 244#
239# Default settings for advanced configuration options are used 245# Default settings for advanced configuration options are used
240# 246#
241CONFIG_HIGHMEM_START=0xfe000000
242CONFIG_LOWMEM_SIZE=0x30000000 247CONFIG_LOWMEM_SIZE=0x30000000
248CONFIG_PAGE_OFFSET=0xc0000000
243CONFIG_KERNEL_START=0xc0000000 249CONFIG_KERNEL_START=0xc0000000
250CONFIG_PHYSICAL_START=0x00000000
251CONFIG_PHYSICAL_ALIGN=0x10000000
244CONFIG_TASK_SIZE=0xc0000000 252CONFIG_TASK_SIZE=0xc0000000
245CONFIG_BOOT_LOAD=0x00800000
246 253
247# 254#
248# Networking 255# Networking
@@ -290,8 +297,6 @@ CONFIG_TCP_CONG_CUBIC=y
290CONFIG_DEFAULT_TCP_CONG="cubic" 297CONFIG_DEFAULT_TCP_CONG="cubic"
291# CONFIG_TCP_MD5SIG is not set 298# CONFIG_TCP_MD5SIG is not set
292# CONFIG_IPV6 is not set 299# CONFIG_IPV6 is not set
293# CONFIG_INET6_XFRM_TUNNEL is not set
294# CONFIG_INET6_TUNNEL is not set
295# CONFIG_NETWORK_SECMARK is not set 300# CONFIG_NETWORK_SECMARK is not set
296# CONFIG_NETFILTER is not set 301# CONFIG_NETFILTER is not set
297# CONFIG_IP_DCCP is not set 302# CONFIG_IP_DCCP is not set
@@ -351,6 +356,8 @@ CONFIG_MTD_CONCAT=y
351CONFIG_MTD_PARTITIONS=y 356CONFIG_MTD_PARTITIONS=y
352# CONFIG_MTD_REDBOOT_PARTS is not set 357# CONFIG_MTD_REDBOOT_PARTS is not set
353# CONFIG_MTD_CMDLINE_PARTS is not set 358# CONFIG_MTD_CMDLINE_PARTS is not set
359# CONFIG_MTD_OF_PARTS is not set
360# CONFIG_MTD_AR7_PARTS is not set
354 361
355# 362#
356# User Modules And Translation Layers 363# User Modules And Translation Layers
@@ -430,17 +437,19 @@ CONFIG_BLK_DEV_LOOP=y
430CONFIG_BLK_DEV_RAM=y 437CONFIG_BLK_DEV_RAM=y
431CONFIG_BLK_DEV_RAM_COUNT=16 438CONFIG_BLK_DEV_RAM_COUNT=16
432CONFIG_BLK_DEV_RAM_SIZE=32768 439CONFIG_BLK_DEV_RAM_SIZE=32768
433CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 440# CONFIG_BLK_DEV_XIP is not set
434# CONFIG_CDROM_PKTCDVD is not set 441# CONFIG_CDROM_PKTCDVD is not set
435# CONFIG_ATA_OVER_ETH is not set 442# CONFIG_ATA_OVER_ETH is not set
436CONFIG_MISC_DEVICES=y 443CONFIG_MISC_DEVICES=y
437# CONFIG_EEPROM_93CX6 is not set 444# CONFIG_EEPROM_93CX6 is not set
445# CONFIG_ENCLOSURE_SERVICES is not set
446CONFIG_HAVE_IDE=y
438CONFIG_IDE=y 447CONFIG_IDE=y
439CONFIG_IDE_MAX_HWIFS=4 448CONFIG_IDE_MAX_HWIFS=4
440CONFIG_BLK_DEV_IDE=y 449CONFIG_BLK_DEV_IDE=y
441 450
442# 451#
443# Please see Documentation/ide.txt for help/info on IDE drives 452# Please see Documentation/ide/ide.txt for help/info on IDE drives
444# 453#
445# CONFIG_BLK_DEV_IDE_SATA is not set 454# CONFIG_BLK_DEV_IDE_SATA is not set
446# CONFIG_BLK_DEV_IDEDISK is not set 455# CONFIG_BLK_DEV_IDEDISK is not set
@@ -457,7 +466,7 @@ CONFIG_IDE_PROC_FS=y
457CONFIG_IDE_GENERIC=y 466CONFIG_IDE_GENERIC=y
458# CONFIG_BLK_DEV_PLATFORM is not set 467# CONFIG_BLK_DEV_PLATFORM is not set
459# CONFIG_BLK_DEV_IDEDMA is not set 468# CONFIG_BLK_DEV_IDEDMA is not set
460CONFIG_IDE_ARCH_OBSOLETE_INIT=y 469# CONFIG_BLK_DEV_HD_ONLY is not set
461# CONFIG_BLK_DEV_HD is not set 470# CONFIG_BLK_DEV_HD is not set
462 471
463# 472#
@@ -517,6 +526,7 @@ CONFIG_NETDEV_10000=y
517# 526#
518# CONFIG_WLAN_PRE80211 is not set 527# CONFIG_WLAN_PRE80211 is not set
519# CONFIG_WLAN_80211 is not set 528# CONFIG_WLAN_80211 is not set
529# CONFIG_IWLWIFI_LEDS is not set
520# CONFIG_WAN is not set 530# CONFIG_WAN is not set
521# CONFIG_PPP is not set 531# CONFIG_PPP is not set
522# CONFIG_SLIP is not set 532# CONFIG_SLIP is not set
@@ -561,6 +571,7 @@ CONFIG_INPUT=y
561# Character devices 571# Character devices
562# 572#
563# CONFIG_VT is not set 573# CONFIG_VT is not set
574CONFIG_DEVKMEM=y
564# CONFIG_SERIAL_NONSTANDARD is not set 575# CONFIG_SERIAL_NONSTANDARD is not set
565 576
566# 577#
@@ -594,12 +605,7 @@ CONFIG_GEN_RTC=y
594# CONFIG_RAW_DRIVER is not set 605# CONFIG_RAW_DRIVER is not set
595# CONFIG_TCG_TPM is not set 606# CONFIG_TCG_TPM is not set
596# CONFIG_I2C is not set 607# CONFIG_I2C is not set
597
598#
599# SPI support
600#
601# CONFIG_SPI is not set 608# CONFIG_SPI is not set
602# CONFIG_SPI_MASTER is not set
603# CONFIG_W1 is not set 609# CONFIG_W1 is not set
604# CONFIG_POWER_SUPPLY is not set 610# CONFIG_POWER_SUPPLY is not set
605CONFIG_HWMON=y 611CONFIG_HWMON=y
@@ -615,6 +621,7 @@ CONFIG_HWMON=y
615# CONFIG_SENSORS_W83627HF is not set 621# CONFIG_SENSORS_W83627HF is not set
616# CONFIG_SENSORS_W83627EHF is not set 622# CONFIG_SENSORS_W83627EHF is not set
617# CONFIG_HWMON_DEBUG_CHIP is not set 623# CONFIG_HWMON_DEBUG_CHIP is not set
624# CONFIG_THERMAL is not set
618# CONFIG_WATCHDOG is not set 625# CONFIG_WATCHDOG is not set
619 626
620# 627#
@@ -627,12 +634,22 @@ CONFIG_SSB_POSSIBLE=y
627# Multifunction device drivers 634# Multifunction device drivers
628# 635#
629# CONFIG_MFD_SM501 is not set 636# CONFIG_MFD_SM501 is not set
637# CONFIG_HTC_PASIC3 is not set
630 638
631# 639#
632# Multimedia devices 640# Multimedia devices
633# 641#
642
643#
644# Multimedia core support
645#
634# CONFIG_VIDEO_DEV is not set 646# CONFIG_VIDEO_DEV is not set
635# CONFIG_DVB_CORE is not set 647# CONFIG_DVB_CORE is not set
648# CONFIG_VIDEO_MEDIA is not set
649
650#
651# Multimedia drivers
652#
636CONFIG_DAB=y 653CONFIG_DAB=y
637 654
638# 655#
@@ -660,19 +677,20 @@ CONFIG_USB_SUPPORT=y
660# CONFIG_USB_ARCH_HAS_HCD is not set 677# CONFIG_USB_ARCH_HAS_HCD is not set
661# CONFIG_USB_ARCH_HAS_OHCI is not set 678# CONFIG_USB_ARCH_HAS_OHCI is not set
662# CONFIG_USB_ARCH_HAS_EHCI is not set 679# CONFIG_USB_ARCH_HAS_EHCI is not set
680# CONFIG_USB_OTG_WHITELIST is not set
681# CONFIG_USB_OTG_BLACKLIST_HUB is not set
663 682
664# 683#
665# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 684# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
666# 685#
667# CONFIG_USB_GADGET is not set 686# CONFIG_USB_GADGET is not set
668# CONFIG_MMC is not set 687# CONFIG_MMC is not set
688# CONFIG_MEMSTICK is not set
669# CONFIG_NEW_LEDS is not set 689# CONFIG_NEW_LEDS is not set
690# CONFIG_ACCESSIBILITY is not set
670# CONFIG_EDAC is not set 691# CONFIG_EDAC is not set
671# CONFIG_RTC_CLASS is not set 692# CONFIG_RTC_CLASS is not set
672 693# CONFIG_DMADEVICES is not set
673#
674# Userspace I/O
675#
676# CONFIG_UIO is not set 694# CONFIG_UIO is not set
677 695
678# 696#
@@ -693,14 +711,11 @@ CONFIG_FS_MBCACHE=y
693# CONFIG_JFS_FS is not set 711# CONFIG_JFS_FS is not set
694# CONFIG_FS_POSIX_ACL is not set 712# CONFIG_FS_POSIX_ACL is not set
695# CONFIG_XFS_FS is not set 713# CONFIG_XFS_FS is not set
696# CONFIG_GFS2_FS is not set
697# CONFIG_OCFS2_FS is not set 714# CONFIG_OCFS2_FS is not set
698# CONFIG_MINIX_FS is not set 715CONFIG_DNOTIFY=y
699# CONFIG_ROMFS_FS is not set
700CONFIG_INOTIFY=y 716CONFIG_INOTIFY=y
701CONFIG_INOTIFY_USER=y 717CONFIG_INOTIFY_USER=y
702# CONFIG_QUOTA is not set 718# CONFIG_QUOTA is not set
703CONFIG_DNOTIFY=y
704# CONFIG_AUTOFS_FS is not set 719# CONFIG_AUTOFS_FS is not set
705# CONFIG_AUTOFS4_FS is not set 720# CONFIG_AUTOFS4_FS is not set
706# CONFIG_FUSE_FS is not set 721# CONFIG_FUSE_FS is not set
@@ -743,15 +758,16 @@ CONFIG_TMPFS=y
743# CONFIG_JFFS2_FS is not set 758# CONFIG_JFFS2_FS is not set
744# CONFIG_CRAMFS is not set 759# CONFIG_CRAMFS is not set
745# CONFIG_VXFS_FS is not set 760# CONFIG_VXFS_FS is not set
761# CONFIG_MINIX_FS is not set
746# CONFIG_HPFS_FS is not set 762# CONFIG_HPFS_FS is not set
747# CONFIG_QNX4FS_FS is not set 763# CONFIG_QNX4FS_FS is not set
764# CONFIG_ROMFS_FS is not set
748# CONFIG_SYSV_FS is not set 765# CONFIG_SYSV_FS is not set
749# CONFIG_UFS_FS is not set 766# CONFIG_UFS_FS is not set
750CONFIG_NETWORK_FILESYSTEMS=y 767CONFIG_NETWORK_FILESYSTEMS=y
751CONFIG_NFS_FS=y 768CONFIG_NFS_FS=y
752# CONFIG_NFS_V3 is not set 769# CONFIG_NFS_V3 is not set
753# CONFIG_NFS_V4 is not set 770# CONFIG_NFS_V4 is not set
754# CONFIG_NFS_DIRECTIO is not set
755# CONFIG_NFSD is not set 771# CONFIG_NFSD is not set
756CONFIG_ROOT_NFS=y 772CONFIG_ROOT_NFS=y
757CONFIG_LOCKD=y 773CONFIG_LOCKD=y
@@ -790,6 +806,7 @@ CONFIG_PARTITION_ADVANCED=y
790# Library routines 806# Library routines
791# 807#
792CONFIG_BITREVERSE=y 808CONFIG_BITREVERSE=y
809# CONFIG_GENERIC_FIND_FIRST_BIT is not set
793# CONFIG_CRC_CCITT is not set 810# CONFIG_CRC_CCITT is not set
794# CONFIG_CRC16 is not set 811# CONFIG_CRC16 is not set
795# CONFIG_CRC_ITU_T is not set 812# CONFIG_CRC_ITU_T is not set
@@ -800,6 +817,7 @@ CONFIG_PLIST=y
800CONFIG_HAS_IOMEM=y 817CONFIG_HAS_IOMEM=y
801CONFIG_HAS_IOPORT=y 818CONFIG_HAS_IOPORT=y
802CONFIG_HAS_DMA=y 819CONFIG_HAS_DMA=y
820CONFIG_HAVE_LMB=y
803 821
804# 822#
805# Kernel hacking 823# Kernel hacking
@@ -807,6 +825,7 @@ CONFIG_HAS_DMA=y
807# CONFIG_PRINTK_TIME is not set 825# CONFIG_PRINTK_TIME is not set
808CONFIG_ENABLE_WARN_DEPRECATED=y 826CONFIG_ENABLE_WARN_DEPRECATED=y
809CONFIG_ENABLE_MUST_CHECK=y 827CONFIG_ENABLE_MUST_CHECK=y
828CONFIG_FRAME_WARN=1024
810# CONFIG_MAGIC_SYSRQ is not set 829# CONFIG_MAGIC_SYSRQ is not set
811# CONFIG_UNUSED_SYMBOLS is not set 830# CONFIG_UNUSED_SYMBOLS is not set
812CONFIG_DEBUG_FS=y 831CONFIG_DEBUG_FS=y
@@ -817,7 +836,9 @@ CONFIG_DETECT_SOFTLOCKUP=y
817CONFIG_SCHED_DEBUG=y 836CONFIG_SCHED_DEBUG=y
818# CONFIG_SCHEDSTATS is not set 837# CONFIG_SCHEDSTATS is not set
819# CONFIG_TIMER_STATS is not set 838# CONFIG_TIMER_STATS is not set
839# CONFIG_DEBUG_OBJECTS is not set
820# CONFIG_SLUB_DEBUG_ON is not set 840# CONFIG_SLUB_DEBUG_ON is not set
841# CONFIG_SLUB_STATS is not set
821# CONFIG_DEBUG_RT_MUTEXES is not set 842# CONFIG_DEBUG_RT_MUTEXES is not set
822# CONFIG_RT_MUTEX_TESTER is not set 843# CONFIG_RT_MUTEX_TESTER is not set
823# CONFIG_DEBUG_SPINLOCK is not set 844# CONFIG_DEBUG_SPINLOCK is not set
@@ -829,9 +850,9 @@ CONFIG_DEBUG_MUTEXES=y
829# CONFIG_DEBUG_BUGVERBOSE is not set 850# CONFIG_DEBUG_BUGVERBOSE is not set
830# CONFIG_DEBUG_INFO is not set 851# CONFIG_DEBUG_INFO is not set
831# CONFIG_DEBUG_VM is not set 852# CONFIG_DEBUG_VM is not set
853# CONFIG_DEBUG_WRITECOUNT is not set
832# CONFIG_DEBUG_LIST is not set 854# CONFIG_DEBUG_LIST is not set
833# CONFIG_DEBUG_SG is not set 855# CONFIG_DEBUG_SG is not set
834CONFIG_FORCED_INLINING=y
835# CONFIG_BOOT_PRINTK_DELAY is not set 856# CONFIG_BOOT_PRINTK_DELAY is not set
836# CONFIG_BACKTRACE_SELF_TEST is not set 857# CONFIG_BACKTRACE_SELF_TEST is not set
837# CONFIG_FAULT_INJECTION is not set 858# CONFIG_FAULT_INJECTION is not set
@@ -841,6 +862,7 @@ CONFIG_FORCED_INLINING=y
841# CONFIG_DEBUG_PAGEALLOC is not set 862# CONFIG_DEBUG_PAGEALLOC is not set
842# CONFIG_DEBUGGER is not set 863# CONFIG_DEBUGGER is not set
843# CONFIG_KGDB_CONSOLE is not set 864# CONFIG_KGDB_CONSOLE is not set
865# CONFIG_IRQSTACKS is not set
844# CONFIG_VIRQ_DEBUG is not set 866# CONFIG_VIRQ_DEBUG is not set
845# CONFIG_BDI_SWITCH is not set 867# CONFIG_BDI_SWITCH is not set
846# CONFIG_PPC_EARLY_DEBUG is not set 868# CONFIG_PPC_EARLY_DEBUG is not set
@@ -852,48 +874,78 @@ CONFIG_FORCED_INLINING=y
852# CONFIG_SECURITY is not set 874# CONFIG_SECURITY is not set
853# CONFIG_SECURITY_FILE_CAPABILITIES is not set 875# CONFIG_SECURITY_FILE_CAPABILITIES is not set
854CONFIG_CRYPTO=y 876CONFIG_CRYPTO=y
855# CONFIG_CRYPTO_SEQIV is not set 877
878#
879# Crypto core or helper
880#
856# CONFIG_CRYPTO_MANAGER is not set 881# CONFIG_CRYPTO_MANAGER is not set
882# CONFIG_CRYPTO_GF128MUL is not set
883# CONFIG_CRYPTO_NULL is not set
884# CONFIG_CRYPTO_CRYPTD is not set
885# CONFIG_CRYPTO_AUTHENC is not set
886
887#
888# Authenticated Encryption with Associated Data
889#
890# CONFIG_CRYPTO_CCM is not set
891# CONFIG_CRYPTO_GCM is not set
892# CONFIG_CRYPTO_SEQIV is not set
893
894#
895# Block modes
896#
897# CONFIG_CRYPTO_CBC is not set
898# CONFIG_CRYPTO_CTR is not set
899# CONFIG_CRYPTO_CTS is not set
900# CONFIG_CRYPTO_ECB is not set
901# CONFIG_CRYPTO_LRW is not set
902# CONFIG_CRYPTO_PCBC is not set
903# CONFIG_CRYPTO_XTS is not set
904
905#
906# Hash modes
907#
857# CONFIG_CRYPTO_HMAC is not set 908# CONFIG_CRYPTO_HMAC is not set
858# CONFIG_CRYPTO_XCBC is not set 909# CONFIG_CRYPTO_XCBC is not set
859# CONFIG_CRYPTO_NULL is not set 910
911#
912# Digest
913#
914# CONFIG_CRYPTO_CRC32C is not set
860# CONFIG_CRYPTO_MD4 is not set 915# CONFIG_CRYPTO_MD4 is not set
861# CONFIG_CRYPTO_MD5 is not set 916# CONFIG_CRYPTO_MD5 is not set
917# CONFIG_CRYPTO_MICHAEL_MIC is not set
862# CONFIG_CRYPTO_SHA1 is not set 918# CONFIG_CRYPTO_SHA1 is not set
863# CONFIG_CRYPTO_SHA256 is not set 919# CONFIG_CRYPTO_SHA256 is not set
864# CONFIG_CRYPTO_SHA512 is not set 920# CONFIG_CRYPTO_SHA512 is not set
865# CONFIG_CRYPTO_WP512 is not set
866# CONFIG_CRYPTO_TGR192 is not set 921# CONFIG_CRYPTO_TGR192 is not set
867# CONFIG_CRYPTO_GF128MUL is not set 922# CONFIG_CRYPTO_WP512 is not set
868# CONFIG_CRYPTO_ECB is not set 923
869# CONFIG_CRYPTO_CBC is not set 924#
870# CONFIG_CRYPTO_PCBC is not set 925# Ciphers
871# CONFIG_CRYPTO_LRW is not set 926#
872# CONFIG_CRYPTO_XTS is not set
873# CONFIG_CRYPTO_CTR is not set
874# CONFIG_CRYPTO_GCM is not set
875# CONFIG_CRYPTO_CCM is not set
876# CONFIG_CRYPTO_CRYPTD is not set
877# CONFIG_CRYPTO_DES is not set
878# CONFIG_CRYPTO_FCRYPT is not set
879# CONFIG_CRYPTO_BLOWFISH is not set
880# CONFIG_CRYPTO_TWOFISH is not set
881# CONFIG_CRYPTO_SERPENT is not set
882# CONFIG_CRYPTO_AES is not set 927# CONFIG_CRYPTO_AES is not set
928# CONFIG_CRYPTO_ANUBIS is not set
929# CONFIG_CRYPTO_ARC4 is not set
930# CONFIG_CRYPTO_BLOWFISH is not set
931# CONFIG_CRYPTO_CAMELLIA is not set
883# CONFIG_CRYPTO_CAST5 is not set 932# CONFIG_CRYPTO_CAST5 is not set
884# CONFIG_CRYPTO_CAST6 is not set 933# CONFIG_CRYPTO_CAST6 is not set
885# CONFIG_CRYPTO_TEA is not set 934# CONFIG_CRYPTO_DES is not set
886# CONFIG_CRYPTO_ARC4 is not set 935# CONFIG_CRYPTO_FCRYPT is not set
887# CONFIG_CRYPTO_KHAZAD is not set 936# CONFIG_CRYPTO_KHAZAD is not set
888# CONFIG_CRYPTO_ANUBIS is not set
889# CONFIG_CRYPTO_SEED is not set
890# CONFIG_CRYPTO_SALSA20 is not set 937# CONFIG_CRYPTO_SALSA20 is not set
938# CONFIG_CRYPTO_SEED is not set
939# CONFIG_CRYPTO_SERPENT is not set
940# CONFIG_CRYPTO_TEA is not set
941# CONFIG_CRYPTO_TWOFISH is not set
942
943#
944# Compression
945#
891# CONFIG_CRYPTO_DEFLATE is not set 946# CONFIG_CRYPTO_DEFLATE is not set
892# CONFIG_CRYPTO_MICHAEL_MIC is not set
893# CONFIG_CRYPTO_CRC32C is not set
894# CONFIG_CRYPTO_CAMELLIA is not set
895# CONFIG_CRYPTO_AUTHENC is not set
896# CONFIG_CRYPTO_LZO is not set 947# CONFIG_CRYPTO_LZO is not set
897CONFIG_CRYPTO_HW=y 948CONFIG_CRYPTO_HW=y
898# CONFIG_PPC_CLOCK is not set 949# CONFIG_PPC_CLOCK is not set
899CONFIG_PPC_LIB_RHEAP=y 950CONFIG_PPC_LIB_RHEAP=y
951# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/mpc8540_ads_defconfig b/arch/powerpc/configs/85xx/mpc8540_ads_defconfig
index b998539da86e..f33fd516fd54 100644
--- a/arch/powerpc/configs/85xx/mpc8540_ads_defconfig
+++ b/arch/powerpc/configs/85xx/mpc8540_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:25 2008 4# Mon Jun 9 08:52:31 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90CONFIG_KALLSYMS=y 93CONFIG_KALLSYMS=y
91# CONFIG_KALLSYMS_ALL is not set 94# CONFIG_KALLSYMS_ALL is not set
92# CONFIG_KALLSYMS_EXTRA_PASS is not set 95# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -113,6 +116,7 @@ CONFIG_SLUB=y
113CONFIG_HAVE_OPROFILE=y 116CONFIG_HAVE_OPROFILE=y
114CONFIG_HAVE_KPROBES=y 117CONFIG_HAVE_KPROBES=y
115CONFIG_HAVE_KRETPROBES=y 118CONFIG_HAVE_KRETPROBES=y
119# CONFIG_HAVE_DMA_ATTRS is not set
116CONFIG_PROC_PAGE_MONITOR=y 120CONFIG_PROC_PAGE_MONITOR=y
117CONFIG_SLABINFO=y 121CONFIG_SLABINFO=y
118CONFIG_RT_MUTEXES=y 122CONFIG_RT_MUTEXES=y
@@ -153,6 +157,7 @@ CONFIG_MPC8540_ADS=y
153# CONFIG_MPC85xx_CDS is not set 157# CONFIG_MPC85xx_CDS is not set
154# CONFIG_MPC85xx_MDS is not set 158# CONFIG_MPC85xx_MDS is not set
155# CONFIG_MPC85xx_DS is not set 159# CONFIG_MPC85xx_DS is not set
160# CONFIG_KSI8560 is not set
156# CONFIG_STX_GP3 is not set 161# CONFIG_STX_GP3 is not set
157# CONFIG_TQM8540 is not set 162# CONFIG_TQM8540 is not set
158# CONFIG_TQM8541 is not set 163# CONFIG_TQM8541 is not set
@@ -208,11 +213,13 @@ CONFIG_FLATMEM=y
208CONFIG_FLAT_NODE_MEM_MAP=y 213CONFIG_FLAT_NODE_MEM_MAP=y
209# CONFIG_SPARSEMEM_STATIC is not set 214# CONFIG_SPARSEMEM_STATIC is not set
210# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 215# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
216CONFIG_PAGEFLAGS_EXTENDED=y
211CONFIG_SPLIT_PTLOCK_CPUS=4 217CONFIG_SPLIT_PTLOCK_CPUS=4
212# CONFIG_RESOURCES_64BIT is not set 218# CONFIG_RESOURCES_64BIT is not set
213CONFIG_ZONE_DMA_FLAG=1 219CONFIG_ZONE_DMA_FLAG=1
214CONFIG_BOUNCE=y 220CONFIG_BOUNCE=y
215CONFIG_VIRT_TO_BUS=y 221CONFIG_VIRT_TO_BUS=y
222CONFIG_FORCE_MAX_ZONEORDER=11
216CONFIG_PROC_DEVICETREE=y 223CONFIG_PROC_DEVICETREE=y
217# CONFIG_CMDLINE_BOOL is not set 224# CONFIG_CMDLINE_BOOL is not set
218# CONFIG_PM is not set 225# CONFIG_PM is not set
@@ -229,6 +236,7 @@ CONFIG_FSL_SOC=y
229# CONFIG_PCI_SYSCALL is not set 236# CONFIG_PCI_SYSCALL is not set
230# CONFIG_ARCH_SUPPORTS_MSI is not set 237# CONFIG_ARCH_SUPPORTS_MSI is not set
231# CONFIG_PCCARD is not set 238# CONFIG_PCCARD is not set
239# CONFIG_HAS_RAPIDIO is not set
232 240
233# 241#
234# Advanced setup 242# Advanced setup
@@ -238,11 +246,12 @@ CONFIG_FSL_SOC=y
238# 246#
239# Default settings for advanced configuration options are used 247# Default settings for advanced configuration options are used
240# 248#
241CONFIG_HIGHMEM_START=0xfe000000
242CONFIG_LOWMEM_SIZE=0x30000000 249CONFIG_LOWMEM_SIZE=0x30000000
250CONFIG_PAGE_OFFSET=0xc0000000
243CONFIG_KERNEL_START=0xc0000000 251CONFIG_KERNEL_START=0xc0000000
252CONFIG_PHYSICAL_START=0x00000000
253CONFIG_PHYSICAL_ALIGN=0x10000000
244CONFIG_TASK_SIZE=0xc0000000 254CONFIG_TASK_SIZE=0xc0000000
245CONFIG_BOOT_LOAD=0x00800000
246 255
247# 256#
248# Networking 257# Networking
@@ -290,8 +299,6 @@ CONFIG_TCP_CONG_CUBIC=y
290CONFIG_DEFAULT_TCP_CONG="cubic" 299CONFIG_DEFAULT_TCP_CONG="cubic"
291# CONFIG_TCP_MD5SIG is not set 300# CONFIG_TCP_MD5SIG is not set
292# CONFIG_IPV6 is not set 301# CONFIG_IPV6 is not set
293# CONFIG_INET6_XFRM_TUNNEL is not set
294# CONFIG_INET6_TUNNEL is not set
295# CONFIG_NETWORK_SECMARK is not set 302# CONFIG_NETWORK_SECMARK is not set
296# CONFIG_NETFILTER is not set 303# CONFIG_NETFILTER is not set
297# CONFIG_IP_DCCP is not set 304# CONFIG_IP_DCCP is not set
@@ -419,6 +426,7 @@ CONFIG_NETDEV_10000=y
419# 426#
420# CONFIG_WLAN_PRE80211 is not set 427# CONFIG_WLAN_PRE80211 is not set
421# CONFIG_WLAN_80211 is not set 428# CONFIG_WLAN_80211 is not set
429# CONFIG_IWLWIFI_LEDS is not set
422# CONFIG_WAN is not set 430# CONFIG_WAN is not set
423# CONFIG_PPP is not set 431# CONFIG_PPP is not set
424# CONFIG_SLIP is not set 432# CONFIG_SLIP is not set
@@ -463,6 +471,7 @@ CONFIG_INPUT=y
463# Character devices 471# Character devices
464# 472#
465# CONFIG_VT is not set 473# CONFIG_VT is not set
474CONFIG_DEVKMEM=y
466# CONFIG_SERIAL_NONSTANDARD is not set 475# CONFIG_SERIAL_NONSTANDARD is not set
467 476
468# 477#
@@ -494,12 +503,7 @@ CONFIG_GEN_RTC=y
494# CONFIG_RAW_DRIVER is not set 503# CONFIG_RAW_DRIVER is not set
495# CONFIG_TCG_TPM is not set 504# CONFIG_TCG_TPM is not set
496# CONFIG_I2C is not set 505# CONFIG_I2C is not set
497
498#
499# SPI support
500#
501# CONFIG_SPI is not set 506# CONFIG_SPI is not set
502# CONFIG_SPI_MASTER is not set
503# CONFIG_W1 is not set 507# CONFIG_W1 is not set
504# CONFIG_POWER_SUPPLY is not set 508# CONFIG_POWER_SUPPLY is not set
505CONFIG_HWMON=y 509CONFIG_HWMON=y
@@ -528,12 +532,22 @@ CONFIG_SSB_POSSIBLE=y
528# Multifunction device drivers 532# Multifunction device drivers
529# 533#
530# CONFIG_MFD_SM501 is not set 534# CONFIG_MFD_SM501 is not set
535# CONFIG_HTC_PASIC3 is not set
531 536
532# 537#
533# Multimedia devices 538# Multimedia devices
534# 539#
540
541#
542# Multimedia core support
543#
535# CONFIG_VIDEO_DEV is not set 544# CONFIG_VIDEO_DEV is not set
536# CONFIG_DVB_CORE is not set 545# CONFIG_DVB_CORE is not set
546# CONFIG_VIDEO_MEDIA is not set
547
548#
549# Multimedia drivers
550#
537CONFIG_DAB=y 551CONFIG_DAB=y
538 552
539# 553#
@@ -561,6 +575,8 @@ CONFIG_USB_SUPPORT=y
561# CONFIG_USB_ARCH_HAS_HCD is not set 575# CONFIG_USB_ARCH_HAS_HCD is not set
562# CONFIG_USB_ARCH_HAS_OHCI is not set 576# CONFIG_USB_ARCH_HAS_OHCI is not set
563# CONFIG_USB_ARCH_HAS_EHCI is not set 577# CONFIG_USB_ARCH_HAS_EHCI is not set
578# CONFIG_USB_OTG_WHITELIST is not set
579# CONFIG_USB_OTG_BLACKLIST_HUB is not set
564 580
565# 581#
566# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 582# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -569,13 +585,10 @@ CONFIG_USB_SUPPORT=y
569# CONFIG_MMC is not set 585# CONFIG_MMC is not set
570# CONFIG_MEMSTICK is not set 586# CONFIG_MEMSTICK is not set
571# CONFIG_NEW_LEDS is not set 587# CONFIG_NEW_LEDS is not set
588# CONFIG_ACCESSIBILITY is not set
572# CONFIG_EDAC is not set 589# CONFIG_EDAC is not set
573# CONFIG_RTC_CLASS is not set 590# CONFIG_RTC_CLASS is not set
574# CONFIG_DMADEVICES is not set 591# CONFIG_DMADEVICES is not set
575
576#
577# Userspace I/O
578#
579# CONFIG_UIO is not set 592# CONFIG_UIO is not set
580 593
581# 594#
@@ -595,7 +608,6 @@ CONFIG_FS_MBCACHE=y
595# CONFIG_JFS_FS is not set 608# CONFIG_JFS_FS is not set
596# CONFIG_FS_POSIX_ACL is not set 609# CONFIG_FS_POSIX_ACL is not set
597# CONFIG_XFS_FS is not set 610# CONFIG_XFS_FS is not set
598# CONFIG_GFS2_FS is not set
599# CONFIG_OCFS2_FS is not set 611# CONFIG_OCFS2_FS is not set
600CONFIG_DNOTIFY=y 612CONFIG_DNOTIFY=y
601CONFIG_INOTIFY=y 613CONFIG_INOTIFY=y
@@ -652,7 +664,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
652CONFIG_NFS_FS=y 664CONFIG_NFS_FS=y
653# CONFIG_NFS_V3 is not set 665# CONFIG_NFS_V3 is not set
654# CONFIG_NFS_V4 is not set 666# CONFIG_NFS_V4 is not set
655# CONFIG_NFS_DIRECTIO is not set
656# CONFIG_NFSD is not set 667# CONFIG_NFSD is not set
657CONFIG_ROOT_NFS=y 668CONFIG_ROOT_NFS=y
658CONFIG_LOCKD=y 669CONFIG_LOCKD=y
@@ -691,6 +702,7 @@ CONFIG_PARTITION_ADVANCED=y
691# Library routines 702# Library routines
692# 703#
693CONFIG_BITREVERSE=y 704CONFIG_BITREVERSE=y
705# CONFIG_GENERIC_FIND_FIRST_BIT is not set
694# CONFIG_CRC_CCITT is not set 706# CONFIG_CRC_CCITT is not set
695# CONFIG_CRC16 is not set 707# CONFIG_CRC16 is not set
696# CONFIG_CRC_ITU_T is not set 708# CONFIG_CRC_ITU_T is not set
@@ -701,6 +713,7 @@ CONFIG_PLIST=y
701CONFIG_HAS_IOMEM=y 713CONFIG_HAS_IOMEM=y
702CONFIG_HAS_IOPORT=y 714CONFIG_HAS_IOPORT=y
703CONFIG_HAS_DMA=y 715CONFIG_HAS_DMA=y
716CONFIG_HAVE_LMB=y
704 717
705# 718#
706# Kernel hacking 719# Kernel hacking
@@ -708,6 +721,7 @@ CONFIG_HAS_DMA=y
708# CONFIG_PRINTK_TIME is not set 721# CONFIG_PRINTK_TIME is not set
709CONFIG_ENABLE_WARN_DEPRECATED=y 722CONFIG_ENABLE_WARN_DEPRECATED=y
710CONFIG_ENABLE_MUST_CHECK=y 723CONFIG_ENABLE_MUST_CHECK=y
724CONFIG_FRAME_WARN=1024
711# CONFIG_MAGIC_SYSRQ is not set 725# CONFIG_MAGIC_SYSRQ is not set
712# CONFIG_UNUSED_SYMBOLS is not set 726# CONFIG_UNUSED_SYMBOLS is not set
713# CONFIG_DEBUG_FS is not set 727# CONFIG_DEBUG_FS is not set
@@ -718,6 +732,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
718CONFIG_SCHED_DEBUG=y 732CONFIG_SCHED_DEBUG=y
719# CONFIG_SCHEDSTATS is not set 733# CONFIG_SCHEDSTATS is not set
720# CONFIG_TIMER_STATS is not set 734# CONFIG_TIMER_STATS is not set
735# CONFIG_DEBUG_OBJECTS is not set
721# CONFIG_SLUB_DEBUG_ON is not set 736# CONFIG_SLUB_DEBUG_ON is not set
722# CONFIG_SLUB_STATS is not set 737# CONFIG_SLUB_STATS is not set
723# CONFIG_DEBUG_RT_MUTEXES is not set 738# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -730,6 +745,7 @@ CONFIG_DEBUG_MUTEXES=y
730# CONFIG_DEBUG_BUGVERBOSE is not set 745# CONFIG_DEBUG_BUGVERBOSE is not set
731# CONFIG_DEBUG_INFO is not set 746# CONFIG_DEBUG_INFO is not set
732# CONFIG_DEBUG_VM is not set 747# CONFIG_DEBUG_VM is not set
748# CONFIG_DEBUG_WRITECOUNT is not set
733# CONFIG_DEBUG_LIST is not set 749# CONFIG_DEBUG_LIST is not set
734# CONFIG_DEBUG_SG is not set 750# CONFIG_DEBUG_SG is not set
735# CONFIG_BOOT_PRINTK_DELAY is not set 751# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -740,6 +756,7 @@ CONFIG_DEBUG_MUTEXES=y
740# CONFIG_DEBUG_STACK_USAGE is not set 756# CONFIG_DEBUG_STACK_USAGE is not set
741# CONFIG_DEBUG_PAGEALLOC is not set 757# CONFIG_DEBUG_PAGEALLOC is not set
742# CONFIG_DEBUGGER is not set 758# CONFIG_DEBUGGER is not set
759# CONFIG_IRQSTACKS is not set
743# CONFIG_BDI_SWITCH is not set 760# CONFIG_BDI_SWITCH is not set
744# CONFIG_PPC_EARLY_DEBUG is not set 761# CONFIG_PPC_EARLY_DEBUG is not set
745 762
@@ -750,47 +767,77 @@ CONFIG_DEBUG_MUTEXES=y
750# CONFIG_SECURITY is not set 767# CONFIG_SECURITY is not set
751# CONFIG_SECURITY_FILE_CAPABILITIES is not set 768# CONFIG_SECURITY_FILE_CAPABILITIES is not set
752CONFIG_CRYPTO=y 769CONFIG_CRYPTO=y
753# CONFIG_CRYPTO_SEQIV is not set 770
771#
772# Crypto core or helper
773#
754# CONFIG_CRYPTO_MANAGER is not set 774# CONFIG_CRYPTO_MANAGER is not set
775# CONFIG_CRYPTO_GF128MUL is not set
776# CONFIG_CRYPTO_NULL is not set
777# CONFIG_CRYPTO_CRYPTD is not set
778# CONFIG_CRYPTO_AUTHENC is not set
779
780#
781# Authenticated Encryption with Associated Data
782#
783# CONFIG_CRYPTO_CCM is not set
784# CONFIG_CRYPTO_GCM is not set
785# CONFIG_CRYPTO_SEQIV is not set
786
787#
788# Block modes
789#
790# CONFIG_CRYPTO_CBC is not set
791# CONFIG_CRYPTO_CTR is not set
792# CONFIG_CRYPTO_CTS is not set
793# CONFIG_CRYPTO_ECB is not set
794# CONFIG_CRYPTO_LRW is not set
795# CONFIG_CRYPTO_PCBC is not set
796# CONFIG_CRYPTO_XTS is not set
797
798#
799# Hash modes
800#
755# CONFIG_CRYPTO_HMAC is not set 801# CONFIG_CRYPTO_HMAC is not set
756# CONFIG_CRYPTO_XCBC is not set 802# CONFIG_CRYPTO_XCBC is not set
757# CONFIG_CRYPTO_NULL is not set 803
804#
805# Digest
806#
807# CONFIG_CRYPTO_CRC32C is not set
758# CONFIG_CRYPTO_MD4 is not set 808# CONFIG_CRYPTO_MD4 is not set
759# CONFIG_CRYPTO_MD5 is not set 809# CONFIG_CRYPTO_MD5 is not set
810# CONFIG_CRYPTO_MICHAEL_MIC is not set
760# CONFIG_CRYPTO_SHA1 is not set 811# CONFIG_CRYPTO_SHA1 is not set
761# CONFIG_CRYPTO_SHA256 is not set 812# CONFIG_CRYPTO_SHA256 is not set
762# CONFIG_CRYPTO_SHA512 is not set 813# CONFIG_CRYPTO_SHA512 is not set
763# CONFIG_CRYPTO_WP512 is not set
764# CONFIG_CRYPTO_TGR192 is not set 814# CONFIG_CRYPTO_TGR192 is not set
765# CONFIG_CRYPTO_GF128MUL is not set 815# CONFIG_CRYPTO_WP512 is not set
766# CONFIG_CRYPTO_ECB is not set 816
767# CONFIG_CRYPTO_CBC is not set 817#
768# CONFIG_CRYPTO_PCBC is not set 818# Ciphers
769# CONFIG_CRYPTO_LRW is not set 819#
770# CONFIG_CRYPTO_XTS is not set
771# CONFIG_CRYPTO_CTR is not set
772# CONFIG_CRYPTO_GCM is not set
773# CONFIG_CRYPTO_CCM is not set
774# CONFIG_CRYPTO_CRYPTD is not set
775# CONFIG_CRYPTO_DES is not set
776# CONFIG_CRYPTO_FCRYPT is not set
777# CONFIG_CRYPTO_BLOWFISH is not set
778# CONFIG_CRYPTO_TWOFISH is not set
779# CONFIG_CRYPTO_SERPENT is not set
780# CONFIG_CRYPTO_AES is not set 820# CONFIG_CRYPTO_AES is not set
821# CONFIG_CRYPTO_ANUBIS is not set
822# CONFIG_CRYPTO_ARC4 is not set
823# CONFIG_CRYPTO_BLOWFISH is not set
824# CONFIG_CRYPTO_CAMELLIA is not set
781# CONFIG_CRYPTO_CAST5 is not set 825# CONFIG_CRYPTO_CAST5 is not set
782# CONFIG_CRYPTO_CAST6 is not set 826# CONFIG_CRYPTO_CAST6 is not set
783# CONFIG_CRYPTO_TEA is not set 827# CONFIG_CRYPTO_DES is not set
784# CONFIG_CRYPTO_ARC4 is not set 828# CONFIG_CRYPTO_FCRYPT is not set
785# CONFIG_CRYPTO_KHAZAD is not set 829# CONFIG_CRYPTO_KHAZAD is not set
786# CONFIG_CRYPTO_ANUBIS is not set
787# CONFIG_CRYPTO_SEED is not set
788# CONFIG_CRYPTO_SALSA20 is not set 830# CONFIG_CRYPTO_SALSA20 is not set
831# CONFIG_CRYPTO_SEED is not set
832# CONFIG_CRYPTO_SERPENT is not set
833# CONFIG_CRYPTO_TEA is not set
834# CONFIG_CRYPTO_TWOFISH is not set
835
836#
837# Compression
838#
789# CONFIG_CRYPTO_DEFLATE is not set 839# CONFIG_CRYPTO_DEFLATE is not set
790# CONFIG_CRYPTO_MICHAEL_MIC is not set
791# CONFIG_CRYPTO_CRC32C is not set
792# CONFIG_CRYPTO_CAMELLIA is not set
793# CONFIG_CRYPTO_AUTHENC is not set
794# CONFIG_CRYPTO_LZO is not set 840# CONFIG_CRYPTO_LZO is not set
795CONFIG_CRYPTO_HW=y 841CONFIG_CRYPTO_HW=y
796# CONFIG_PPC_CLOCK is not set 842# CONFIG_PPC_CLOCK is not set
843# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/mpc8544_ds_defconfig b/arch/powerpc/configs/85xx/mpc8544_ds_defconfig
index a9f113b243ae..042a85ea7b72 100644
--- a/arch/powerpc/configs/85xx/mpc8544_ds_defconfig
+++ b/arch/powerpc/configs/85xx/mpc8544_ds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:37:03 2008 4# Mon Jun 9 08:52:32 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -90,6 +92,7 @@ CONFIG_INITRAMFS_SOURCE=""
90CONFIG_SYSCTL=y 92CONFIG_SYSCTL=y
91CONFIG_EMBEDDED=y 93CONFIG_EMBEDDED=y
92CONFIG_SYSCTL_SYSCALL=y 94CONFIG_SYSCTL_SYSCALL=y
95CONFIG_SYSCTL_SYSCALL_CHECK=y
93CONFIG_KALLSYMS=y 96CONFIG_KALLSYMS=y
94CONFIG_KALLSYMS_ALL=y 97CONFIG_KALLSYMS_ALL=y
95CONFIG_KALLSYMS_EXTRA_PASS=y 98CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -117,12 +120,14 @@ CONFIG_HAVE_OPROFILE=y
117# CONFIG_KPROBES is not set 120# CONFIG_KPROBES is not set
118CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
123# CONFIG_HAVE_DMA_ATTRS is not set
120CONFIG_PROC_PAGE_MONITOR=y 124CONFIG_PROC_PAGE_MONITOR=y
121CONFIG_SLABINFO=y 125CONFIG_SLABINFO=y
122CONFIG_RT_MUTEXES=y 126CONFIG_RT_MUTEXES=y
123# CONFIG_TINY_SHMEM is not set 127# CONFIG_TINY_SHMEM is not set
124CONFIG_BASE_SMALL=0 128CONFIG_BASE_SMALL=0
125CONFIG_MODULES=y 129CONFIG_MODULES=y
130# CONFIG_MODULE_FORCE_LOAD is not set
126CONFIG_MODULE_UNLOAD=y 131CONFIG_MODULE_UNLOAD=y
127CONFIG_MODULE_FORCE_UNLOAD=y 132CONFIG_MODULE_FORCE_UNLOAD=y
128CONFIG_MODVERSIONS=y 133CONFIG_MODVERSIONS=y
@@ -203,7 +208,6 @@ CONFIG_PREEMPT_NONE=y
203# CONFIG_PREEMPT is not set 208# CONFIG_PREEMPT is not set
204CONFIG_BINFMT_ELF=y 209CONFIG_BINFMT_ELF=y
205CONFIG_BINFMT_MISC=m 210CONFIG_BINFMT_MISC=m
206CONFIG_FORCE_MAX_ZONEORDER=11
207CONFIG_MATH_EMULATION=y 211CONFIG_MATH_EMULATION=y
208# CONFIG_IOMMU_HELPER is not set 212# CONFIG_IOMMU_HELPER is not set
209CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 213CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
@@ -219,11 +223,13 @@ CONFIG_FLATMEM=y
219CONFIG_FLAT_NODE_MEM_MAP=y 223CONFIG_FLAT_NODE_MEM_MAP=y
220# CONFIG_SPARSEMEM_STATIC is not set 224# CONFIG_SPARSEMEM_STATIC is not set
221# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 225# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
226CONFIG_PAGEFLAGS_EXTENDED=y
222CONFIG_SPLIT_PTLOCK_CPUS=4 227CONFIG_SPLIT_PTLOCK_CPUS=4
223# CONFIG_RESOURCES_64BIT is not set 228# CONFIG_RESOURCES_64BIT is not set
224CONFIG_ZONE_DMA_FLAG=1 229CONFIG_ZONE_DMA_FLAG=1
225CONFIG_BOUNCE=y 230CONFIG_BOUNCE=y
226CONFIG_VIRT_TO_BUS=y 231CONFIG_VIRT_TO_BUS=y
232CONFIG_FORCE_MAX_ZONEORDER=11
227CONFIG_PROC_DEVICETREE=y 233CONFIG_PROC_DEVICETREE=y
228# CONFIG_CMDLINE_BOOL is not set 234# CONFIG_CMDLINE_BOOL is not set
229# CONFIG_PM is not set 235# CONFIG_PM is not set
@@ -248,6 +254,7 @@ CONFIG_PCI_LEGACY=y
248# CONFIG_PCI_DEBUG is not set 254# CONFIG_PCI_DEBUG is not set
249# CONFIG_PCCARD is not set 255# CONFIG_PCCARD is not set
250# CONFIG_HOTPLUG_PCI is not set 256# CONFIG_HOTPLUG_PCI is not set
257# CONFIG_HAS_RAPIDIO is not set
251 258
252# 259#
253# Advanced setup 260# Advanced setup
@@ -257,11 +264,12 @@ CONFIG_PCI_LEGACY=y
257# 264#
258# Default settings for advanced configuration options are used 265# Default settings for advanced configuration options are used
259# 266#
260CONFIG_HIGHMEM_START=0xfe000000
261CONFIG_LOWMEM_SIZE=0x30000000 267CONFIG_LOWMEM_SIZE=0x30000000
268CONFIG_PAGE_OFFSET=0xc0000000
262CONFIG_KERNEL_START=0xc0000000 269CONFIG_KERNEL_START=0xc0000000
270CONFIG_PHYSICAL_START=0x00000000
271CONFIG_PHYSICAL_ALIGN=0x10000000
263CONFIG_TASK_SIZE=0xc0000000 272CONFIG_TASK_SIZE=0xc0000000
264CONFIG_BOOT_LOAD=0x00800000
265 273
266# 274#
267# Networking 275# Networking
@@ -332,8 +340,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
332CONFIG_INET6_XFRM_MODE_BEET=y 340CONFIG_INET6_XFRM_MODE_BEET=y
333# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 341# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
334CONFIG_IPV6_SIT=y 342CONFIG_IPV6_SIT=y
343CONFIG_IPV6_NDISC_NODETYPE=y
335# CONFIG_IPV6_TUNNEL is not set 344# CONFIG_IPV6_TUNNEL is not set
336# CONFIG_IPV6_MULTIPLE_TABLES is not set 345# CONFIG_IPV6_MULTIPLE_TABLES is not set
346# CONFIG_IPV6_MROUTE is not set
337# CONFIG_NETWORK_SECMARK is not set 347# CONFIG_NETWORK_SECMARK is not set
338# CONFIG_NETFILTER is not set 348# CONFIG_NETFILTER is not set
339# CONFIG_IP_DCCP is not set 349# CONFIG_IP_DCCP is not set
@@ -395,6 +405,7 @@ CONFIG_FW_LOADER=y
395# CONFIG_CONNECTOR is not set 405# CONFIG_CONNECTOR is not set
396# CONFIG_MTD is not set 406# CONFIG_MTD is not set
397CONFIG_OF_DEVICE=y 407CONFIG_OF_DEVICE=y
408CONFIG_OF_I2C=y
398# CONFIG_PARPORT is not set 409# CONFIG_PARPORT is not set
399CONFIG_BLK_DEV=y 410CONFIG_BLK_DEV=y
400# CONFIG_BLK_DEV_FD is not set 411# CONFIG_BLK_DEV_FD is not set
@@ -501,7 +512,11 @@ CONFIG_SCSI_LOWLEVEL=y
501# CONFIG_SCSI_SRP is not set 512# CONFIG_SCSI_SRP is not set
502CONFIG_ATA=y 513CONFIG_ATA=y
503# CONFIG_ATA_NONSTANDARD is not set 514# CONFIG_ATA_NONSTANDARD is not set
515CONFIG_SATA_PMP=y
504CONFIG_SATA_AHCI=y 516CONFIG_SATA_AHCI=y
517# CONFIG_SATA_SIL24 is not set
518# CONFIG_SATA_FSL is not set
519CONFIG_ATA_SFF=y
505# CONFIG_SATA_SVW is not set 520# CONFIG_SATA_SVW is not set
506# CONFIG_ATA_PIIX is not set 521# CONFIG_ATA_PIIX is not set
507# CONFIG_SATA_MV is not set 522# CONFIG_SATA_MV is not set
@@ -511,13 +526,11 @@ CONFIG_SATA_AHCI=y
511# CONFIG_SATA_PROMISE is not set 526# CONFIG_SATA_PROMISE is not set
512# CONFIG_SATA_SX4 is not set 527# CONFIG_SATA_SX4 is not set
513# CONFIG_SATA_SIL is not set 528# CONFIG_SATA_SIL is not set
514# CONFIG_SATA_SIL24 is not set
515# CONFIG_SATA_SIS is not set 529# CONFIG_SATA_SIS is not set
516# CONFIG_SATA_ULI is not set 530# CONFIG_SATA_ULI is not set
517# CONFIG_SATA_VIA is not set 531# CONFIG_SATA_VIA is not set
518# CONFIG_SATA_VITESSE is not set 532# CONFIG_SATA_VITESSE is not set
519# CONFIG_SATA_INIC162X is not set 533# CONFIG_SATA_INIC162X is not set
520# CONFIG_SATA_FSL is not set
521CONFIG_PATA_ALI=y 534CONFIG_PATA_ALI=y
522# CONFIG_PATA_AMD is not set 535# CONFIG_PATA_AMD is not set
523# CONFIG_PATA_ARTOP is not set 536# CONFIG_PATA_ARTOP is not set
@@ -557,6 +570,7 @@ CONFIG_PATA_ALI=y
557# CONFIG_PATA_VIA is not set 570# CONFIG_PATA_VIA is not set
558# CONFIG_PATA_WINBOND is not set 571# CONFIG_PATA_WINBOND is not set
559# CONFIG_PATA_PLATFORM is not set 572# CONFIG_PATA_PLATFORM is not set
573# CONFIG_PATA_SCH is not set
560# CONFIG_MD is not set 574# CONFIG_MD is not set
561# CONFIG_FUSION is not set 575# CONFIG_FUSION is not set
562 576
@@ -622,7 +636,6 @@ CONFIG_NETDEV_1000=y
622# CONFIG_SIS190 is not set 636# CONFIG_SIS190 is not set
623# CONFIG_SKGE is not set 637# CONFIG_SKGE is not set
624# CONFIG_SKY2 is not set 638# CONFIG_SKY2 is not set
625# CONFIG_SK98LIN is not set
626# CONFIG_VIA_VELOCITY is not set 639# CONFIG_VIA_VELOCITY is not set
627# CONFIG_TIGON3 is not set 640# CONFIG_TIGON3 is not set
628# CONFIG_BNX2 is not set 641# CONFIG_BNX2 is not set
@@ -642,6 +655,7 @@ CONFIG_NETDEV_10000=y
642# CONFIG_MLX4_CORE is not set 655# CONFIG_MLX4_CORE is not set
643# CONFIG_TEHUTI is not set 656# CONFIG_TEHUTI is not set
644# CONFIG_BNX2X is not set 657# CONFIG_BNX2X is not set
658# CONFIG_SFC is not set
645# CONFIG_TR is not set 659# CONFIG_TR is not set
646 660
647# 661#
@@ -649,6 +663,7 @@ CONFIG_NETDEV_10000=y
649# 663#
650# CONFIG_WLAN_PRE80211 is not set 664# CONFIG_WLAN_PRE80211 is not set
651# CONFIG_WLAN_80211 is not set 665# CONFIG_WLAN_80211 is not set
666# CONFIG_IWLWIFI_LEDS is not set
652 667
653# 668#
654# USB Network Adapters 669# USB Network Adapters
@@ -713,6 +728,7 @@ CONFIG_VT=y
713CONFIG_VT_CONSOLE=y 728CONFIG_VT_CONSOLE=y
714CONFIG_HW_CONSOLE=y 729CONFIG_HW_CONSOLE=y
715# CONFIG_VT_HW_CONSOLE_BINDING is not set 730# CONFIG_VT_HW_CONSOLE_BINDING is not set
731CONFIG_DEVKMEM=y
716# CONFIG_SERIAL_NONSTANDARD is not set 732# CONFIG_SERIAL_NONSTANDARD is not set
717# CONFIG_NOZOMI is not set 733# CONFIG_NOZOMI is not set
718 734
@@ -744,7 +760,6 @@ CONFIG_LEGACY_PTY_COUNT=256
744# CONFIG_IPMI_HANDLER is not set 760# CONFIG_IPMI_HANDLER is not set
745# CONFIG_HW_RANDOM is not set 761# CONFIG_HW_RANDOM is not set
746CONFIG_NVRAM=y 762CONFIG_NVRAM=y
747# CONFIG_GEN_RTC is not set
748# CONFIG_R3964 is not set 763# CONFIG_R3964 is not set
749# CONFIG_APPLICOM is not set 764# CONFIG_APPLICOM is not set
750# CONFIG_RAW_DRIVER is not set 765# CONFIG_RAW_DRIVER is not set
@@ -755,13 +770,6 @@ CONFIG_I2C_BOARDINFO=y
755# CONFIG_I2C_CHARDEV is not set 770# CONFIG_I2C_CHARDEV is not set
756 771
757# 772#
758# I2C Algorithms
759#
760# CONFIG_I2C_ALGOBIT is not set
761# CONFIG_I2C_ALGOPCF is not set
762# CONFIG_I2C_ALGOPCA is not set
763
764#
765# I2C Hardware Bus support 773# I2C Hardware Bus support
766# 774#
767# CONFIG_I2C_ALI1535 is not set 775# CONFIG_I2C_ALI1535 is not set
@@ -788,6 +796,7 @@ CONFIG_I2C_MPC=y
788# CONFIG_I2C_VIA is not set 796# CONFIG_I2C_VIA is not set
789# CONFIG_I2C_VIAPRO is not set 797# CONFIG_I2C_VIAPRO is not set
790# CONFIG_I2C_VOODOO3 is not set 798# CONFIG_I2C_VOODOO3 is not set
799# CONFIG_I2C_PCA_PLATFORM is not set
791 800
792# 801#
793# Miscellaneous I2C Chip support 802# Miscellaneous I2C Chip support
@@ -797,19 +806,13 @@ CONFIG_SENSORS_EEPROM=y
797# CONFIG_SENSORS_PCF8574 is not set 806# CONFIG_SENSORS_PCF8574 is not set
798# CONFIG_PCF8575 is not set 807# CONFIG_PCF8575 is not set
799# CONFIG_SENSORS_PCF8591 is not set 808# CONFIG_SENSORS_PCF8591 is not set
800# CONFIG_TPS65010 is not set
801# CONFIG_SENSORS_MAX6875 is not set 809# CONFIG_SENSORS_MAX6875 is not set
802# CONFIG_SENSORS_TSL2550 is not set 810# CONFIG_SENSORS_TSL2550 is not set
803# CONFIG_I2C_DEBUG_CORE is not set 811# CONFIG_I2C_DEBUG_CORE is not set
804# CONFIG_I2C_DEBUG_ALGO is not set 812# CONFIG_I2C_DEBUG_ALGO is not set
805# CONFIG_I2C_DEBUG_BUS is not set 813# CONFIG_I2C_DEBUG_BUS is not set
806# CONFIG_I2C_DEBUG_CHIP is not set 814# CONFIG_I2C_DEBUG_CHIP is not set
807
808#
809# SPI support
810#
811# CONFIG_SPI is not set 815# CONFIG_SPI is not set
812# CONFIG_SPI_MASTER is not set
813# CONFIG_W1 is not set 816# CONFIG_W1 is not set
814# CONFIG_POWER_SUPPLY is not set 817# CONFIG_POWER_SUPPLY is not set
815# CONFIG_HWMON is not set 818# CONFIG_HWMON is not set
@@ -826,13 +829,33 @@ CONFIG_SSB_POSSIBLE=y
826# Multifunction device drivers 829# Multifunction device drivers
827# 830#
828# CONFIG_MFD_SM501 is not set 831# CONFIG_MFD_SM501 is not set
832# CONFIG_HTC_PASIC3 is not set
829 833
830# 834#
831# Multimedia devices 835# Multimedia devices
832# 836#
837
838#
839# Multimedia core support
840#
833# CONFIG_VIDEO_DEV is not set 841# CONFIG_VIDEO_DEV is not set
834CONFIG_DVB_CORE=m 842CONFIG_DVB_CORE=m
835# CONFIG_DVB_CORE_ATTACH is not set 843CONFIG_VIDEO_MEDIA=m
844
845#
846# Multimedia drivers
847#
848# CONFIG_MEDIA_ATTACH is not set
849CONFIG_MEDIA_TUNER=m
850# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
851CONFIG_MEDIA_TUNER_SIMPLE=m
852CONFIG_MEDIA_TUNER_TDA8290=m
853CONFIG_MEDIA_TUNER_TDA9887=m
854CONFIG_MEDIA_TUNER_TEA5761=m
855CONFIG_MEDIA_TUNER_TEA5767=m
856CONFIG_MEDIA_TUNER_MT20XX=m
857CONFIG_MEDIA_TUNER_XC2028=m
858CONFIG_MEDIA_TUNER_XC5000=m
836CONFIG_DVB_CAPTURE_DRIVERS=y 859CONFIG_DVB_CAPTURE_DRIVERS=y
837 860
838# 861#
@@ -875,14 +898,17 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
875# 898#
876# DVB-S (satellite) frontends 899# DVB-S (satellite) frontends
877# 900#
878# CONFIG_DVB_STV0299 is not set
879# CONFIG_DVB_CX24110 is not set 901# CONFIG_DVB_CX24110 is not set
880# CONFIG_DVB_CX24123 is not set 902# CONFIG_DVB_CX24123 is not set
881# CONFIG_DVB_TDA8083 is not set
882# CONFIG_DVB_MT312 is not set 903# CONFIG_DVB_MT312 is not set
883# CONFIG_DVB_VES1X93 is not set
884# CONFIG_DVB_S5H1420 is not set 904# CONFIG_DVB_S5H1420 is not set
905# CONFIG_DVB_STV0299 is not set
906# CONFIG_DVB_TDA8083 is not set
885# CONFIG_DVB_TDA10086 is not set 907# CONFIG_DVB_TDA10086 is not set
908# CONFIG_DVB_VES1X93 is not set
909# CONFIG_DVB_TUNER_ITD1000 is not set
910# CONFIG_DVB_TDA826X is not set
911# CONFIG_DVB_TUA6100 is not set
886 912
887# 913#
888# DVB-T (terrestrial) frontends 914# DVB-T (terrestrial) frontends
@@ -900,6 +926,7 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
900# CONFIG_DVB_DIB3000MC is not set 926# CONFIG_DVB_DIB3000MC is not set
901# CONFIG_DVB_DIB7000M is not set 927# CONFIG_DVB_DIB7000M is not set
902# CONFIG_DVB_DIB7000P is not set 928# CONFIG_DVB_DIB7000P is not set
929# CONFIG_DVB_TDA10048 is not set
903 930
904# 931#
905# DVB-C (cable) frontends 932# DVB-C (cable) frontends
@@ -918,27 +945,21 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
918# CONFIG_DVB_BCM3510 is not set 945# CONFIG_DVB_BCM3510 is not set
919# CONFIG_DVB_LGDT330X is not set 946# CONFIG_DVB_LGDT330X is not set
920# CONFIG_DVB_S5H1409 is not set 947# CONFIG_DVB_S5H1409 is not set
948# CONFIG_DVB_AU8522 is not set
949# CONFIG_DVB_S5H1411 is not set
921 950
922# 951#
923# Tuners/PLL support 952# Digital terrestrial only tuners/PLL
924# 953#
925# CONFIG_DVB_PLL is not set 954# CONFIG_DVB_PLL is not set
926# CONFIG_DVB_TDA826X is not set
927# CONFIG_DVB_TDA827X is not set
928# CONFIG_DVB_TDA18271 is not set
929# CONFIG_DVB_TUNER_QT1010 is not set
930# CONFIG_DVB_TUNER_MT2060 is not set
931# CONFIG_DVB_TUNER_MT2266 is not set
932# CONFIG_DVB_TUNER_MT2131 is not set
933# CONFIG_DVB_TUNER_DIB0070 is not set 955# CONFIG_DVB_TUNER_DIB0070 is not set
934# CONFIG_DVB_TUNER_XC5000 is not set
935 956
936# 957#
937# Miscellaneous devices 958# SEC control devices for DVB-S
938# 959#
939# CONFIG_DVB_LNBP21 is not set 960# CONFIG_DVB_LNBP21 is not set
961# CONFIG_DVB_ISL6405 is not set
940# CONFIG_DVB_ISL6421 is not set 962# CONFIG_DVB_ISL6421 is not set
941# CONFIG_DVB_TUA6100 is not set
942CONFIG_DAB=y 963CONFIG_DAB=y
943# CONFIG_USB_DABUSB is not set 964# CONFIG_USB_DABUSB is not set
944 965
@@ -1005,6 +1026,7 @@ CONFIG_SND_AC97_CODEC=y
1005# CONFIG_SND_AU8810 is not set 1026# CONFIG_SND_AU8810 is not set
1006# CONFIG_SND_AU8820 is not set 1027# CONFIG_SND_AU8820 is not set
1007# CONFIG_SND_AU8830 is not set 1028# CONFIG_SND_AU8830 is not set
1029# CONFIG_SND_AW2 is not set
1008# CONFIG_SND_AZT3328 is not set 1030# CONFIG_SND_AZT3328 is not set
1009# CONFIG_SND_BT87X is not set 1031# CONFIG_SND_BT87X is not set
1010# CONFIG_SND_CA0106 is not set 1032# CONFIG_SND_CA0106 is not set
@@ -1079,11 +1101,11 @@ CONFIG_SND_INTEL8X0=y
1079# CONFIG_SND_SOC is not set 1101# CONFIG_SND_SOC is not set
1080 1102
1081# 1103#
1082# SoC Audio support for SuperH 1104# ALSA SoC audio for Freescale SOCs
1083# 1105#
1084 1106
1085# 1107#
1086# ALSA SoC audio for Freescale SOCs 1108# SoC Audio for the Texas Instruments OMAP
1087# 1109#
1088 1110
1089# 1111#
@@ -1118,16 +1140,20 @@ CONFIG_USB_DEVICEFS=y
1118CONFIG_USB_DEVICE_CLASS=y 1140CONFIG_USB_DEVICE_CLASS=y
1119# CONFIG_USB_DYNAMIC_MINORS is not set 1141# CONFIG_USB_DYNAMIC_MINORS is not set
1120# CONFIG_USB_OTG is not set 1142# CONFIG_USB_OTG is not set
1143# CONFIG_USB_OTG_WHITELIST is not set
1144# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1121 1145
1122# 1146#
1123# USB Host Controller Drivers 1147# USB Host Controller Drivers
1124# 1148#
1149# CONFIG_USB_C67X00_HCD is not set
1125CONFIG_USB_EHCI_HCD=y 1150CONFIG_USB_EHCI_HCD=y
1126# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1151# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1127# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1152# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1128# CONFIG_USB_EHCI_FSL is not set 1153# CONFIG_USB_EHCI_FSL is not set
1129CONFIG_USB_EHCI_HCD_PPC_OF=y 1154CONFIG_USB_EHCI_HCD_PPC_OF=y
1130# CONFIG_USB_ISP116X_HCD is not set 1155# CONFIG_USB_ISP116X_HCD is not set
1156# CONFIG_USB_ISP1760_HCD is not set
1131CONFIG_USB_OHCI_HCD=y 1157CONFIG_USB_OHCI_HCD=y
1132CONFIG_USB_OHCI_HCD_PPC_OF=y 1158CONFIG_USB_OHCI_HCD_PPC_OF=y
1133CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1159CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
@@ -1145,6 +1171,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1145# 1171#
1146# CONFIG_USB_ACM is not set 1172# CONFIG_USB_ACM is not set
1147# CONFIG_USB_PRINTER is not set 1173# CONFIG_USB_PRINTER is not set
1174# CONFIG_USB_WDM is not set
1148 1175
1149# 1176#
1150# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1177# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1164,7 +1191,9 @@ CONFIG_USB_STORAGE=y
1164# CONFIG_USB_STORAGE_SDDR55 is not set 1191# CONFIG_USB_STORAGE_SDDR55 is not set
1165# CONFIG_USB_STORAGE_JUMPSHOT is not set 1192# CONFIG_USB_STORAGE_JUMPSHOT is not set
1166# CONFIG_USB_STORAGE_ALAUDA is not set 1193# CONFIG_USB_STORAGE_ALAUDA is not set
1194# CONFIG_USB_STORAGE_ONETOUCH is not set
1167# CONFIG_USB_STORAGE_KARMA is not set 1195# CONFIG_USB_STORAGE_KARMA is not set
1196# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1168# CONFIG_USB_LIBUSUAL is not set 1197# CONFIG_USB_LIBUSUAL is not set
1169 1198
1170# 1199#
@@ -1202,10 +1231,12 @@ CONFIG_USB_MON=y
1202# CONFIG_USB_TRANCEVIBRATOR is not set 1231# CONFIG_USB_TRANCEVIBRATOR is not set
1203# CONFIG_USB_IOWARRIOR is not set 1232# CONFIG_USB_IOWARRIOR is not set
1204# CONFIG_USB_TEST is not set 1233# CONFIG_USB_TEST is not set
1234# CONFIG_USB_ISIGHTFW is not set
1205# CONFIG_USB_GADGET is not set 1235# CONFIG_USB_GADGET is not set
1206# CONFIG_MMC is not set 1236# CONFIG_MMC is not set
1207# CONFIG_MEMSTICK is not set 1237# CONFIG_MEMSTICK is not set
1208# CONFIG_NEW_LEDS is not set 1238# CONFIG_NEW_LEDS is not set
1239# CONFIG_ACCESSIBILITY is not set
1209# CONFIG_INFINIBAND is not set 1240# CONFIG_INFINIBAND is not set
1210# CONFIG_EDAC is not set 1241# CONFIG_EDAC is not set
1211CONFIG_RTC_LIB=y 1242CONFIG_RTC_LIB=y
@@ -1257,23 +1288,19 @@ CONFIG_RTC_DRV_CMOS=y
1257# 1288#
1258# on-CPU RTC drivers 1289# on-CPU RTC drivers
1259# 1290#
1291# CONFIG_RTC_DRV_PPC is not set
1260CONFIG_DMADEVICES=y 1292CONFIG_DMADEVICES=y
1261 1293
1262# 1294#
1263# DMA Devices 1295# DMA Devices
1264# 1296#
1265CONFIG_FSL_DMA=y 1297CONFIG_FSL_DMA=y
1266# CONFIG_FSL_DMA_SELFTEST is not set
1267CONFIG_DMA_ENGINE=y 1298CONFIG_DMA_ENGINE=y
1268 1299
1269# 1300#
1270# DMA Clients 1301# DMA Clients
1271# 1302#
1272# CONFIG_NET_DMA is not set 1303# CONFIG_NET_DMA is not set
1273
1274#
1275# Userspace I/O
1276#
1277# CONFIG_UIO is not set 1304# CONFIG_UIO is not set
1278 1305
1279# 1306#
@@ -1293,7 +1320,6 @@ CONFIG_FS_MBCACHE=y
1293# CONFIG_JFS_FS is not set 1320# CONFIG_JFS_FS is not set
1294# CONFIG_FS_POSIX_ACL is not set 1321# CONFIG_FS_POSIX_ACL is not set
1295# CONFIG_XFS_FS is not set 1322# CONFIG_XFS_FS is not set
1296# CONFIG_GFS2_FS is not set
1297# CONFIG_OCFS2_FS is not set 1323# CONFIG_OCFS2_FS is not set
1298CONFIG_DNOTIFY=y 1324CONFIG_DNOTIFY=y
1299CONFIG_INOTIFY=y 1325CONFIG_INOTIFY=y
@@ -1363,10 +1389,9 @@ CONFIG_NFS_FS=y
1363CONFIG_NFS_V3=y 1389CONFIG_NFS_V3=y
1364# CONFIG_NFS_V3_ACL is not set 1390# CONFIG_NFS_V3_ACL is not set
1365CONFIG_NFS_V4=y 1391CONFIG_NFS_V4=y
1366# CONFIG_NFS_DIRECTIO is not set
1367CONFIG_NFSD=y 1392CONFIG_NFSD=y
1368# CONFIG_NFSD_V3 is not set 1393# CONFIG_NFSD_V3 is not set
1369CONFIG_NFSD_TCP=y 1394# CONFIG_NFSD_V4 is not set
1370CONFIG_ROOT_NFS=y 1395CONFIG_ROOT_NFS=y
1371CONFIG_LOCKD=y 1396CONFIG_LOCKD=y
1372CONFIG_LOCKD_V4=y 1397CONFIG_LOCKD_V4=y
@@ -1450,9 +1475,10 @@ CONFIG_NLS_UTF8=m
1450# Library routines 1475# Library routines
1451# 1476#
1452CONFIG_BITREVERSE=y 1477CONFIG_BITREVERSE=y
1478# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1453# CONFIG_CRC_CCITT is not set 1479# CONFIG_CRC_CCITT is not set
1454# CONFIG_CRC16 is not set 1480# CONFIG_CRC16 is not set
1455# CONFIG_CRC_ITU_T is not set 1481CONFIG_CRC_ITU_T=m
1456CONFIG_CRC32=y 1482CONFIG_CRC32=y
1457# CONFIG_CRC7 is not set 1483# CONFIG_CRC7 is not set
1458CONFIG_LIBCRC32C=m 1484CONFIG_LIBCRC32C=m
@@ -1469,6 +1495,7 @@ CONFIG_HAVE_LMB=y
1469# CONFIG_PRINTK_TIME is not set 1495# CONFIG_PRINTK_TIME is not set
1470CONFIG_ENABLE_WARN_DEPRECATED=y 1496CONFIG_ENABLE_WARN_DEPRECATED=y
1471CONFIG_ENABLE_MUST_CHECK=y 1497CONFIG_ENABLE_MUST_CHECK=y
1498CONFIG_FRAME_WARN=1024
1472# CONFIG_MAGIC_SYSRQ is not set 1499# CONFIG_MAGIC_SYSRQ is not set
1473# CONFIG_UNUSED_SYMBOLS is not set 1500# CONFIG_UNUSED_SYMBOLS is not set
1474# CONFIG_DEBUG_FS is not set 1501# CONFIG_DEBUG_FS is not set
@@ -1479,6 +1506,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1479CONFIG_SCHED_DEBUG=y 1506CONFIG_SCHED_DEBUG=y
1480# CONFIG_SCHEDSTATS is not set 1507# CONFIG_SCHEDSTATS is not set
1481# CONFIG_TIMER_STATS is not set 1508# CONFIG_TIMER_STATS is not set
1509# CONFIG_DEBUG_OBJECTS is not set
1482# CONFIG_SLUB_DEBUG_ON is not set 1510# CONFIG_SLUB_DEBUG_ON is not set
1483# CONFIG_SLUB_STATS is not set 1511# CONFIG_SLUB_STATS is not set
1484# CONFIG_DEBUG_RT_MUTEXES is not set 1512# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1492,6 +1520,7 @@ CONFIG_SCHED_DEBUG=y
1492# CONFIG_DEBUG_BUGVERBOSE is not set 1520# CONFIG_DEBUG_BUGVERBOSE is not set
1493CONFIG_DEBUG_INFO=y 1521CONFIG_DEBUG_INFO=y
1494# CONFIG_DEBUG_VM is not set 1522# CONFIG_DEBUG_VM is not set
1523# CONFIG_DEBUG_WRITECOUNT is not set
1495# CONFIG_DEBUG_LIST is not set 1524# CONFIG_DEBUG_LIST is not set
1496# CONFIG_DEBUG_SG is not set 1525# CONFIG_DEBUG_SG is not set
1497# CONFIG_BOOT_PRINTK_DELAY is not set 1526# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1503,6 +1532,7 @@ CONFIG_DEBUG_INFO=y
1503# CONFIG_DEBUG_STACK_USAGE is not set 1532# CONFIG_DEBUG_STACK_USAGE is not set
1504# CONFIG_DEBUG_PAGEALLOC is not set 1533# CONFIG_DEBUG_PAGEALLOC is not set
1505# CONFIG_DEBUGGER is not set 1534# CONFIG_DEBUGGER is not set
1535# CONFIG_IRQSTACKS is not set
1506# CONFIG_BDI_SWITCH is not set 1536# CONFIG_BDI_SWITCH is not set
1507# CONFIG_PPC_EARLY_DEBUG is not set 1537# CONFIG_PPC_EARLY_DEBUG is not set
1508 1538
@@ -1513,52 +1543,82 @@ CONFIG_DEBUG_INFO=y
1513# CONFIG_SECURITY is not set 1543# CONFIG_SECURITY is not set
1514# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1544# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1515CONFIG_CRYPTO=y 1545CONFIG_CRYPTO=y
1546
1547#
1548# Crypto core or helper
1549#
1516CONFIG_CRYPTO_ALGAPI=y 1550CONFIG_CRYPTO_ALGAPI=y
1517CONFIG_CRYPTO_BLKCIPHER=y 1551CONFIG_CRYPTO_BLKCIPHER=y
1518# CONFIG_CRYPTO_SEQIV is not set
1519CONFIG_CRYPTO_HASH=y 1552CONFIG_CRYPTO_HASH=y
1520CONFIG_CRYPTO_MANAGER=y 1553CONFIG_CRYPTO_MANAGER=y
1554# CONFIG_CRYPTO_GF128MUL is not set
1555# CONFIG_CRYPTO_NULL is not set
1556# CONFIG_CRYPTO_CRYPTD is not set
1557# CONFIG_CRYPTO_AUTHENC is not set
1558# CONFIG_CRYPTO_TEST is not set
1559
1560#
1561# Authenticated Encryption with Associated Data
1562#
1563# CONFIG_CRYPTO_CCM is not set
1564# CONFIG_CRYPTO_GCM is not set
1565# CONFIG_CRYPTO_SEQIV is not set
1566
1567#
1568# Block modes
1569#
1570CONFIG_CRYPTO_CBC=y
1571# CONFIG_CRYPTO_CTR is not set
1572# CONFIG_CRYPTO_CTS is not set
1573# CONFIG_CRYPTO_ECB is not set
1574# CONFIG_CRYPTO_LRW is not set
1575CONFIG_CRYPTO_PCBC=m
1576# CONFIG_CRYPTO_XTS is not set
1577
1578#
1579# Hash modes
1580#
1521CONFIG_CRYPTO_HMAC=y 1581CONFIG_CRYPTO_HMAC=y
1522# CONFIG_CRYPTO_XCBC is not set 1582# CONFIG_CRYPTO_XCBC is not set
1523# CONFIG_CRYPTO_NULL is not set 1583
1584#
1585# Digest
1586#
1587# CONFIG_CRYPTO_CRC32C is not set
1524# CONFIG_CRYPTO_MD4 is not set 1588# CONFIG_CRYPTO_MD4 is not set
1525CONFIG_CRYPTO_MD5=y 1589CONFIG_CRYPTO_MD5=y
1590# CONFIG_CRYPTO_MICHAEL_MIC is not set
1526CONFIG_CRYPTO_SHA1=m 1591CONFIG_CRYPTO_SHA1=m
1527# CONFIG_CRYPTO_SHA256 is not set 1592# CONFIG_CRYPTO_SHA256 is not set
1528# CONFIG_CRYPTO_SHA512 is not set 1593# CONFIG_CRYPTO_SHA512 is not set
1529# CONFIG_CRYPTO_WP512 is not set
1530# CONFIG_CRYPTO_TGR192 is not set 1594# CONFIG_CRYPTO_TGR192 is not set
1531# CONFIG_CRYPTO_GF128MUL is not set 1595# CONFIG_CRYPTO_WP512 is not set
1532# CONFIG_CRYPTO_ECB is not set 1596
1533CONFIG_CRYPTO_CBC=y 1597#
1534CONFIG_CRYPTO_PCBC=m 1598# Ciphers
1535# CONFIG_CRYPTO_LRW is not set 1599#
1536# CONFIG_CRYPTO_XTS is not set
1537# CONFIG_CRYPTO_CTR is not set
1538# CONFIG_CRYPTO_GCM is not set
1539# CONFIG_CRYPTO_CCM is not set
1540# CONFIG_CRYPTO_CRYPTD is not set
1541CONFIG_CRYPTO_DES=y
1542# CONFIG_CRYPTO_FCRYPT is not set
1543# CONFIG_CRYPTO_BLOWFISH is not set
1544# CONFIG_CRYPTO_TWOFISH is not set
1545# CONFIG_CRYPTO_SERPENT is not set
1546# CONFIG_CRYPTO_AES is not set 1600# CONFIG_CRYPTO_AES is not set
1601# CONFIG_CRYPTO_ANUBIS is not set
1602# CONFIG_CRYPTO_ARC4 is not set
1603# CONFIG_CRYPTO_BLOWFISH is not set
1604# CONFIG_CRYPTO_CAMELLIA is not set
1547# CONFIG_CRYPTO_CAST5 is not set 1605# CONFIG_CRYPTO_CAST5 is not set
1548# CONFIG_CRYPTO_CAST6 is not set 1606# CONFIG_CRYPTO_CAST6 is not set
1549# CONFIG_CRYPTO_TEA is not set 1607CONFIG_CRYPTO_DES=y
1550# CONFIG_CRYPTO_ARC4 is not set 1608# CONFIG_CRYPTO_FCRYPT is not set
1551# CONFIG_CRYPTO_KHAZAD is not set 1609# CONFIG_CRYPTO_KHAZAD is not set
1552# CONFIG_CRYPTO_ANUBIS is not set
1553# CONFIG_CRYPTO_SEED is not set
1554# CONFIG_CRYPTO_SALSA20 is not set 1610# CONFIG_CRYPTO_SALSA20 is not set
1611# CONFIG_CRYPTO_SEED is not set
1612# CONFIG_CRYPTO_SERPENT is not set
1613# CONFIG_CRYPTO_TEA is not set
1614# CONFIG_CRYPTO_TWOFISH is not set
1615
1616#
1617# Compression
1618#
1555# CONFIG_CRYPTO_DEFLATE is not set 1619# CONFIG_CRYPTO_DEFLATE is not set
1556# CONFIG_CRYPTO_MICHAEL_MIC is not set
1557# CONFIG_CRYPTO_CRC32C is not set
1558# CONFIG_CRYPTO_CAMELLIA is not set
1559# CONFIG_CRYPTO_TEST is not set
1560# CONFIG_CRYPTO_AUTHENC is not set
1561# CONFIG_CRYPTO_LZO is not set 1620# CONFIG_CRYPTO_LZO is not set
1562CONFIG_CRYPTO_HW=y 1621CONFIG_CRYPTO_HW=y
1563# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1622# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1564# CONFIG_PPC_CLOCK is not set 1623# CONFIG_PPC_CLOCK is not set
1624# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/mpc8560_ads_defconfig b/arch/powerpc/configs/85xx/mpc8560_ads_defconfig
index 851ac9115617..e19592b42043 100644
--- a/arch/powerpc/configs/85xx/mpc8560_ads_defconfig
+++ b/arch/powerpc/configs/85xx/mpc8560_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:27 2008 4# Mon Jun 9 08:52:33 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90CONFIG_KALLSYMS=y 93CONFIG_KALLSYMS=y
91# CONFIG_KALLSYMS_ALL is not set 94# CONFIG_KALLSYMS_ALL is not set
92# CONFIG_KALLSYMS_EXTRA_PASS is not set 95# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -113,6 +116,7 @@ CONFIG_SLUB=y
113CONFIG_HAVE_OPROFILE=y 116CONFIG_HAVE_OPROFILE=y
114CONFIG_HAVE_KPROBES=y 117CONFIG_HAVE_KPROBES=y
115CONFIG_HAVE_KRETPROBES=y 118CONFIG_HAVE_KRETPROBES=y
119# CONFIG_HAVE_DMA_ATTRS is not set
116CONFIG_PROC_PAGE_MONITOR=y 120CONFIG_PROC_PAGE_MONITOR=y
117CONFIG_SLABINFO=y 121CONFIG_SLABINFO=y
118CONFIG_RT_MUTEXES=y 122CONFIG_RT_MUTEXES=y
@@ -153,6 +157,7 @@ CONFIG_MPC8560_ADS=y
153# CONFIG_MPC85xx_CDS is not set 157# CONFIG_MPC85xx_CDS is not set
154# CONFIG_MPC85xx_MDS is not set 158# CONFIG_MPC85xx_MDS is not set
155# CONFIG_MPC85xx_DS is not set 159# CONFIG_MPC85xx_DS is not set
160# CONFIG_KSI8560 is not set
156# CONFIG_STX_GP3 is not set 161# CONFIG_STX_GP3 is not set
157# CONFIG_TQM8540 is not set 162# CONFIG_TQM8540 is not set
158# CONFIG_TQM8541 is not set 163# CONFIG_TQM8541 is not set
@@ -210,11 +215,13 @@ CONFIG_FLATMEM=y
210CONFIG_FLAT_NODE_MEM_MAP=y 215CONFIG_FLAT_NODE_MEM_MAP=y
211# CONFIG_SPARSEMEM_STATIC is not set 216# CONFIG_SPARSEMEM_STATIC is not set
212# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
218CONFIG_PAGEFLAGS_EXTENDED=y
213CONFIG_SPLIT_PTLOCK_CPUS=4 219CONFIG_SPLIT_PTLOCK_CPUS=4
214# CONFIG_RESOURCES_64BIT is not set 220# CONFIG_RESOURCES_64BIT is not set
215CONFIG_ZONE_DMA_FLAG=1 221CONFIG_ZONE_DMA_FLAG=1
216CONFIG_BOUNCE=y 222CONFIG_BOUNCE=y
217CONFIG_VIRT_TO_BUS=y 223CONFIG_VIRT_TO_BUS=y
224CONFIG_FORCE_MAX_ZONEORDER=11
218# CONFIG_PROC_DEVICETREE is not set 225# CONFIG_PROC_DEVICETREE is not set
219# CONFIG_CMDLINE_BOOL is not set 226# CONFIG_CMDLINE_BOOL is not set
220# CONFIG_PM is not set 227# CONFIG_PM is not set
@@ -238,6 +245,7 @@ CONFIG_PCI_LEGACY=y
238CONFIG_PCI_DEBUG=y 245CONFIG_PCI_DEBUG=y
239# CONFIG_PCCARD is not set 246# CONFIG_PCCARD is not set
240# CONFIG_HOTPLUG_PCI is not set 247# CONFIG_HOTPLUG_PCI is not set
248# CONFIG_HAS_RAPIDIO is not set
241 249
242# 250#
243# Advanced setup 251# Advanced setup
@@ -247,11 +255,12 @@ CONFIG_PCI_DEBUG=y
247# 255#
248# Default settings for advanced configuration options are used 256# Default settings for advanced configuration options are used
249# 257#
250CONFIG_HIGHMEM_START=0xfe000000
251CONFIG_LOWMEM_SIZE=0x30000000 258CONFIG_LOWMEM_SIZE=0x30000000
259CONFIG_PAGE_OFFSET=0xc0000000
252CONFIG_KERNEL_START=0xc0000000 260CONFIG_KERNEL_START=0xc0000000
261CONFIG_PHYSICAL_START=0x00000000
262CONFIG_PHYSICAL_ALIGN=0x10000000
253CONFIG_TASK_SIZE=0xc0000000 263CONFIG_TASK_SIZE=0xc0000000
254CONFIG_BOOT_LOAD=0x00800000
255 264
256# 265#
257# Networking 266# Networking
@@ -299,8 +308,6 @@ CONFIG_TCP_CONG_CUBIC=y
299CONFIG_DEFAULT_TCP_CONG="cubic" 308CONFIG_DEFAULT_TCP_CONG="cubic"
300# CONFIG_TCP_MD5SIG is not set 309# CONFIG_TCP_MD5SIG is not set
301# CONFIG_IPV6 is not set 310# CONFIG_IPV6 is not set
302# CONFIG_INET6_XFRM_TUNNEL is not set
303# CONFIG_INET6_TUNNEL is not set
304# CONFIG_NETWORK_SECMARK is not set 311# CONFIG_NETWORK_SECMARK is not set
305# CONFIG_NETFILTER is not set 312# CONFIG_NETFILTER is not set
306# CONFIG_IP_DCCP is not set 313# CONFIG_IP_DCCP is not set
@@ -462,7 +469,6 @@ CONFIG_E1000_NAPI=y
462# CONFIG_SIS190 is not set 469# CONFIG_SIS190 is not set
463# CONFIG_SKGE is not set 470# CONFIG_SKGE is not set
464# CONFIG_SKY2 is not set 471# CONFIG_SKY2 is not set
465# CONFIG_SK98LIN is not set
466# CONFIG_VIA_VELOCITY is not set 472# CONFIG_VIA_VELOCITY is not set
467# CONFIG_TIGON3 is not set 473# CONFIG_TIGON3 is not set
468# CONFIG_BNX2 is not set 474# CONFIG_BNX2 is not set
@@ -482,6 +488,7 @@ CONFIG_NETDEV_10000=y
482# CONFIG_MLX4_CORE is not set 488# CONFIG_MLX4_CORE is not set
483# CONFIG_TEHUTI is not set 489# CONFIG_TEHUTI is not set
484# CONFIG_BNX2X is not set 490# CONFIG_BNX2X is not set
491# CONFIG_SFC is not set
485# CONFIG_TR is not set 492# CONFIG_TR is not set
486 493
487# 494#
@@ -489,6 +496,7 @@ CONFIG_NETDEV_10000=y
489# 496#
490# CONFIG_WLAN_PRE80211 is not set 497# CONFIG_WLAN_PRE80211 is not set
491# CONFIG_WLAN_80211 is not set 498# CONFIG_WLAN_80211 is not set
499# CONFIG_IWLWIFI_LEDS is not set
492# CONFIG_WAN is not set 500# CONFIG_WAN is not set
493# CONFIG_FDDI is not set 501# CONFIG_FDDI is not set
494# CONFIG_HIPPI is not set 502# CONFIG_HIPPI is not set
@@ -535,6 +543,7 @@ CONFIG_INPUT=y
535# Character devices 543# Character devices
536# 544#
537# CONFIG_VT is not set 545# CONFIG_VT is not set
546CONFIG_DEVKMEM=y
538# CONFIG_SERIAL_NONSTANDARD is not set 547# CONFIG_SERIAL_NONSTANDARD is not set
539# CONFIG_NOZOMI is not set 548# CONFIG_NOZOMI is not set
540 549
@@ -572,12 +581,7 @@ CONFIG_GEN_RTC=y
572# CONFIG_TCG_TPM is not set 581# CONFIG_TCG_TPM is not set
573CONFIG_DEVPORT=y 582CONFIG_DEVPORT=y
574# CONFIG_I2C is not set 583# CONFIG_I2C is not set
575
576#
577# SPI support
578#
579# CONFIG_SPI is not set 584# CONFIG_SPI is not set
580# CONFIG_SPI_MASTER is not set
581# CONFIG_W1 is not set 585# CONFIG_W1 is not set
582# CONFIG_POWER_SUPPLY is not set 586# CONFIG_POWER_SUPPLY is not set
583CONFIG_HWMON=y 587CONFIG_HWMON=y
@@ -610,12 +614,22 @@ CONFIG_SSB_POSSIBLE=y
610# Multifunction device drivers 614# Multifunction device drivers
611# 615#
612# CONFIG_MFD_SM501 is not set 616# CONFIG_MFD_SM501 is not set
617# CONFIG_HTC_PASIC3 is not set
613 618
614# 619#
615# Multimedia devices 620# Multimedia devices
616# 621#
622
623#
624# Multimedia core support
625#
617# CONFIG_VIDEO_DEV is not set 626# CONFIG_VIDEO_DEV is not set
618# CONFIG_DVB_CORE is not set 627# CONFIG_DVB_CORE is not set
628# CONFIG_VIDEO_MEDIA is not set
629
630#
631# Multimedia drivers
632#
619CONFIG_DAB=y 633CONFIG_DAB=y
620 634
621# 635#
@@ -646,6 +660,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
646CONFIG_USB_ARCH_HAS_OHCI=y 660CONFIG_USB_ARCH_HAS_OHCI=y
647CONFIG_USB_ARCH_HAS_EHCI=y 661CONFIG_USB_ARCH_HAS_EHCI=y
648# CONFIG_USB is not set 662# CONFIG_USB is not set
663# CONFIG_USB_OTG_WHITELIST is not set
664# CONFIG_USB_OTG_BLACKLIST_HUB is not set
649 665
650# 666#
651# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 667# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -654,14 +670,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
654# CONFIG_MMC is not set 670# CONFIG_MMC is not set
655# CONFIG_MEMSTICK is not set 671# CONFIG_MEMSTICK is not set
656# CONFIG_NEW_LEDS is not set 672# CONFIG_NEW_LEDS is not set
673# CONFIG_ACCESSIBILITY is not set
657# CONFIG_INFINIBAND is not set 674# CONFIG_INFINIBAND is not set
658# CONFIG_EDAC is not set 675# CONFIG_EDAC is not set
659# CONFIG_RTC_CLASS is not set 676# CONFIG_RTC_CLASS is not set
660# CONFIG_DMADEVICES is not set 677# CONFIG_DMADEVICES is not set
661
662#
663# Userspace I/O
664#
665# CONFIG_UIO is not set 678# CONFIG_UIO is not set
666 679
667# 680#
@@ -681,7 +694,6 @@ CONFIG_FS_MBCACHE=y
681# CONFIG_JFS_FS is not set 694# CONFIG_JFS_FS is not set
682# CONFIG_FS_POSIX_ACL is not set 695# CONFIG_FS_POSIX_ACL is not set
683# CONFIG_XFS_FS is not set 696# CONFIG_XFS_FS is not set
684# CONFIG_GFS2_FS is not set
685# CONFIG_OCFS2_FS is not set 697# CONFIG_OCFS2_FS is not set
686CONFIG_DNOTIFY=y 698CONFIG_DNOTIFY=y
687CONFIG_INOTIFY=y 699CONFIG_INOTIFY=y
@@ -738,7 +750,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
738CONFIG_NFS_FS=y 750CONFIG_NFS_FS=y
739# CONFIG_NFS_V3 is not set 751# CONFIG_NFS_V3 is not set
740# CONFIG_NFS_V4 is not set 752# CONFIG_NFS_V4 is not set
741# CONFIG_NFS_DIRECTIO is not set
742# CONFIG_NFSD is not set 753# CONFIG_NFSD is not set
743CONFIG_ROOT_NFS=y 754CONFIG_ROOT_NFS=y
744CONFIG_LOCKD=y 755CONFIG_LOCKD=y
@@ -777,6 +788,7 @@ CONFIG_PARTITION_ADVANCED=y
777# Library routines 788# Library routines
778# 789#
779CONFIG_BITREVERSE=y 790CONFIG_BITREVERSE=y
791# CONFIG_GENERIC_FIND_FIRST_BIT is not set
780# CONFIG_CRC_CCITT is not set 792# CONFIG_CRC_CCITT is not set
781# CONFIG_CRC16 is not set 793# CONFIG_CRC16 is not set
782# CONFIG_CRC_ITU_T is not set 794# CONFIG_CRC_ITU_T is not set
@@ -787,6 +799,7 @@ CONFIG_PLIST=y
787CONFIG_HAS_IOMEM=y 799CONFIG_HAS_IOMEM=y
788CONFIG_HAS_IOPORT=y 800CONFIG_HAS_IOPORT=y
789CONFIG_HAS_DMA=y 801CONFIG_HAS_DMA=y
802CONFIG_HAVE_LMB=y
790 803
791# 804#
792# Kernel hacking 805# Kernel hacking
@@ -794,6 +807,7 @@ CONFIG_HAS_DMA=y
794# CONFIG_PRINTK_TIME is not set 807# CONFIG_PRINTK_TIME is not set
795CONFIG_ENABLE_WARN_DEPRECATED=y 808CONFIG_ENABLE_WARN_DEPRECATED=y
796CONFIG_ENABLE_MUST_CHECK=y 809CONFIG_ENABLE_MUST_CHECK=y
810CONFIG_FRAME_WARN=1024
797# CONFIG_MAGIC_SYSRQ is not set 811# CONFIG_MAGIC_SYSRQ is not set
798# CONFIG_UNUSED_SYMBOLS is not set 812# CONFIG_UNUSED_SYMBOLS is not set
799# CONFIG_DEBUG_FS is not set 813# CONFIG_DEBUG_FS is not set
@@ -804,6 +818,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
804CONFIG_SCHED_DEBUG=y 818CONFIG_SCHED_DEBUG=y
805# CONFIG_SCHEDSTATS is not set 819# CONFIG_SCHEDSTATS is not set
806# CONFIG_TIMER_STATS is not set 820# CONFIG_TIMER_STATS is not set
821# CONFIG_DEBUG_OBJECTS is not set
807# CONFIG_SLUB_DEBUG_ON is not set 822# CONFIG_SLUB_DEBUG_ON is not set
808# CONFIG_SLUB_STATS is not set 823# CONFIG_SLUB_STATS is not set
809# CONFIG_DEBUG_RT_MUTEXES is not set 824# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -816,6 +831,7 @@ CONFIG_DEBUG_MUTEXES=y
816# CONFIG_DEBUG_BUGVERBOSE is not set 831# CONFIG_DEBUG_BUGVERBOSE is not set
817# CONFIG_DEBUG_INFO is not set 832# CONFIG_DEBUG_INFO is not set
818# CONFIG_DEBUG_VM is not set 833# CONFIG_DEBUG_VM is not set
834# CONFIG_DEBUG_WRITECOUNT is not set
819# CONFIG_DEBUG_LIST is not set 835# CONFIG_DEBUG_LIST is not set
820# CONFIG_DEBUG_SG is not set 836# CONFIG_DEBUG_SG is not set
821# CONFIG_BOOT_PRINTK_DELAY is not set 837# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -827,6 +843,7 @@ CONFIG_DEBUG_MUTEXES=y
827# CONFIG_DEBUG_PAGEALLOC is not set 843# CONFIG_DEBUG_PAGEALLOC is not set
828# CONFIG_DEBUGGER is not set 844# CONFIG_DEBUGGER is not set
829# CONFIG_KGDB_CONSOLE is not set 845# CONFIG_KGDB_CONSOLE is not set
846# CONFIG_IRQSTACKS is not set
830# CONFIG_BDI_SWITCH is not set 847# CONFIG_BDI_SWITCH is not set
831# CONFIG_PPC_EARLY_DEBUG is not set 848# CONFIG_PPC_EARLY_DEBUG is not set
832 849
@@ -837,49 +854,79 @@ CONFIG_DEBUG_MUTEXES=y
837# CONFIG_SECURITY is not set 854# CONFIG_SECURITY is not set
838# CONFIG_SECURITY_FILE_CAPABILITIES is not set 855# CONFIG_SECURITY_FILE_CAPABILITIES is not set
839CONFIG_CRYPTO=y 856CONFIG_CRYPTO=y
840# CONFIG_CRYPTO_SEQIV is not set 857
858#
859# Crypto core or helper
860#
841# CONFIG_CRYPTO_MANAGER is not set 861# CONFIG_CRYPTO_MANAGER is not set
862# CONFIG_CRYPTO_GF128MUL is not set
863# CONFIG_CRYPTO_NULL is not set
864# CONFIG_CRYPTO_CRYPTD is not set
865# CONFIG_CRYPTO_AUTHENC is not set
866
867#
868# Authenticated Encryption with Associated Data
869#
870# CONFIG_CRYPTO_CCM is not set
871# CONFIG_CRYPTO_GCM is not set
872# CONFIG_CRYPTO_SEQIV is not set
873
874#
875# Block modes
876#
877# CONFIG_CRYPTO_CBC is not set
878# CONFIG_CRYPTO_CTR is not set
879# CONFIG_CRYPTO_CTS is not set
880# CONFIG_CRYPTO_ECB is not set
881# CONFIG_CRYPTO_LRW is not set
882# CONFIG_CRYPTO_PCBC is not set
883# CONFIG_CRYPTO_XTS is not set
884
885#
886# Hash modes
887#
842# CONFIG_CRYPTO_HMAC is not set 888# CONFIG_CRYPTO_HMAC is not set
843# CONFIG_CRYPTO_XCBC is not set 889# CONFIG_CRYPTO_XCBC is not set
844# CONFIG_CRYPTO_NULL is not set 890
891#
892# Digest
893#
894# CONFIG_CRYPTO_CRC32C is not set
845# CONFIG_CRYPTO_MD4 is not set 895# CONFIG_CRYPTO_MD4 is not set
846# CONFIG_CRYPTO_MD5 is not set 896# CONFIG_CRYPTO_MD5 is not set
897# CONFIG_CRYPTO_MICHAEL_MIC is not set
847# CONFIG_CRYPTO_SHA1 is not set 898# CONFIG_CRYPTO_SHA1 is not set
848# CONFIG_CRYPTO_SHA256 is not set 899# CONFIG_CRYPTO_SHA256 is not set
849# CONFIG_CRYPTO_SHA512 is not set 900# CONFIG_CRYPTO_SHA512 is not set
850# CONFIG_CRYPTO_WP512 is not set
851# CONFIG_CRYPTO_TGR192 is not set 901# CONFIG_CRYPTO_TGR192 is not set
852# CONFIG_CRYPTO_GF128MUL is not set 902# CONFIG_CRYPTO_WP512 is not set
853# CONFIG_CRYPTO_ECB is not set 903
854# CONFIG_CRYPTO_CBC is not set 904#
855# CONFIG_CRYPTO_PCBC is not set 905# Ciphers
856# CONFIG_CRYPTO_LRW is not set 906#
857# CONFIG_CRYPTO_XTS is not set
858# CONFIG_CRYPTO_CTR is not set
859# CONFIG_CRYPTO_GCM is not set
860# CONFIG_CRYPTO_CCM is not set
861# CONFIG_CRYPTO_CRYPTD is not set
862# CONFIG_CRYPTO_DES is not set
863# CONFIG_CRYPTO_FCRYPT is not set
864# CONFIG_CRYPTO_BLOWFISH is not set
865# CONFIG_CRYPTO_TWOFISH is not set
866# CONFIG_CRYPTO_SERPENT is not set
867# CONFIG_CRYPTO_AES is not set 907# CONFIG_CRYPTO_AES is not set
908# CONFIG_CRYPTO_ANUBIS is not set
909# CONFIG_CRYPTO_ARC4 is not set
910# CONFIG_CRYPTO_BLOWFISH is not set
911# CONFIG_CRYPTO_CAMELLIA is not set
868# CONFIG_CRYPTO_CAST5 is not set 912# CONFIG_CRYPTO_CAST5 is not set
869# CONFIG_CRYPTO_CAST6 is not set 913# CONFIG_CRYPTO_CAST6 is not set
870# CONFIG_CRYPTO_TEA is not set 914# CONFIG_CRYPTO_DES is not set
871# CONFIG_CRYPTO_ARC4 is not set 915# CONFIG_CRYPTO_FCRYPT is not set
872# CONFIG_CRYPTO_KHAZAD is not set 916# CONFIG_CRYPTO_KHAZAD is not set
873# CONFIG_CRYPTO_ANUBIS is not set
874# CONFIG_CRYPTO_SEED is not set
875# CONFIG_CRYPTO_SALSA20 is not set 917# CONFIG_CRYPTO_SALSA20 is not set
918# CONFIG_CRYPTO_SEED is not set
919# CONFIG_CRYPTO_SERPENT is not set
920# CONFIG_CRYPTO_TEA is not set
921# CONFIG_CRYPTO_TWOFISH is not set
922
923#
924# Compression
925#
876# CONFIG_CRYPTO_DEFLATE is not set 926# CONFIG_CRYPTO_DEFLATE is not set
877# CONFIG_CRYPTO_MICHAEL_MIC is not set
878# CONFIG_CRYPTO_CRC32C is not set
879# CONFIG_CRYPTO_CAMELLIA is not set
880# CONFIG_CRYPTO_AUTHENC is not set
881# CONFIG_CRYPTO_LZO is not set 927# CONFIG_CRYPTO_LZO is not set
882CONFIG_CRYPTO_HW=y 928CONFIG_CRYPTO_HW=y
883# CONFIG_CRYPTO_DEV_HIFN_795X is not set 929# CONFIG_CRYPTO_DEV_HIFN_795X is not set
884# CONFIG_PPC_CLOCK is not set 930# CONFIG_PPC_CLOCK is not set
885CONFIG_PPC_LIB_RHEAP=y 931CONFIG_PPC_LIB_RHEAP=y
932# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/mpc8568mds_defconfig b/arch/powerpc/configs/85xx/mpc8568mds_defconfig
index 2b866b385607..28004e93aeee 100644
--- a/arch/powerpc/configs/85xx/mpc8568mds_defconfig
+++ b/arch/powerpc/configs/85xx/mpc8568mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:37:05 2008 4# Mon Jun 9 08:52:34 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90# CONFIG_KALLSYMS is not set 93# CONFIG_KALLSYMS is not set
91CONFIG_HOTPLUG=y 94CONFIG_HOTPLUG=y
92CONFIG_PRINTK=y 95CONFIG_PRINTK=y
@@ -111,12 +114,14 @@ CONFIG_SLUB=y
111CONFIG_HAVE_OPROFILE=y 114CONFIG_HAVE_OPROFILE=y
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
117# CONFIG_TINY_SHMEM is not set 121# CONFIG_TINY_SHMEM is not set
118CONFIG_BASE_SMALL=0 122CONFIG_BASE_SMALL=0
119CONFIG_MODULES=y 123CONFIG_MODULES=y
124# CONFIG_MODULE_FORCE_LOAD is not set
120CONFIG_MODULE_UNLOAD=y 125CONFIG_MODULE_UNLOAD=y
121# CONFIG_MODULE_FORCE_UNLOAD is not set 126# CONFIG_MODULE_FORCE_UNLOAD is not set
122# CONFIG_MODVERSIONS is not set 127# CONFIG_MODVERSIONS is not set
@@ -156,6 +161,7 @@ CONFIG_MPC85xx=y
156# CONFIG_MPC85xx_CDS is not set 161# CONFIG_MPC85xx_CDS is not set
157CONFIG_MPC85xx_MDS=y 162CONFIG_MPC85xx_MDS=y
158# CONFIG_MPC85xx_DS is not set 163# CONFIG_MPC85xx_DS is not set
164# CONFIG_KSI8560 is not set
159# CONFIG_STX_GP3 is not set 165# CONFIG_STX_GP3 is not set
160# CONFIG_TQM8540 is not set 166# CONFIG_TQM8540 is not set
161# CONFIG_TQM8541 is not set 167# CONFIG_TQM8541 is not set
@@ -212,11 +218,13 @@ CONFIG_FLATMEM=y
212CONFIG_FLAT_NODE_MEM_MAP=y 218CONFIG_FLAT_NODE_MEM_MAP=y
213# CONFIG_SPARSEMEM_STATIC is not set 219# CONFIG_SPARSEMEM_STATIC is not set
214# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 220# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
221CONFIG_PAGEFLAGS_EXTENDED=y
215CONFIG_SPLIT_PTLOCK_CPUS=4 222CONFIG_SPLIT_PTLOCK_CPUS=4
216# CONFIG_RESOURCES_64BIT is not set 223# CONFIG_RESOURCES_64BIT is not set
217CONFIG_ZONE_DMA_FLAG=1 224CONFIG_ZONE_DMA_FLAG=1
218CONFIG_BOUNCE=y 225CONFIG_BOUNCE=y
219CONFIG_VIRT_TO_BUS=y 226CONFIG_VIRT_TO_BUS=y
227CONFIG_FORCE_MAX_ZONEORDER=11
220CONFIG_PROC_DEVICETREE=y 228CONFIG_PROC_DEVICETREE=y
221# CONFIG_CMDLINE_BOOL is not set 229# CONFIG_CMDLINE_BOOL is not set
222# CONFIG_PM is not set 230# CONFIG_PM is not set
@@ -240,6 +248,7 @@ CONFIG_PCI_LEGACY=y
240# CONFIG_PCI_DEBUG is not set 248# CONFIG_PCI_DEBUG is not set
241# CONFIG_PCCARD is not set 249# CONFIG_PCCARD is not set
242# CONFIG_HOTPLUG_PCI is not set 250# CONFIG_HOTPLUG_PCI is not set
251# CONFIG_HAS_RAPIDIO is not set
243 252
244# 253#
245# Advanced setup 254# Advanced setup
@@ -249,11 +258,12 @@ CONFIG_PCI_LEGACY=y
249# 258#
250# Default settings for advanced configuration options are used 259# Default settings for advanced configuration options are used
251# 260#
252CONFIG_HIGHMEM_START=0xfe000000
253CONFIG_LOWMEM_SIZE=0x30000000 261CONFIG_LOWMEM_SIZE=0x30000000
262CONFIG_PAGE_OFFSET=0xc0000000
254CONFIG_KERNEL_START=0xc0000000 263CONFIG_KERNEL_START=0xc0000000
264CONFIG_PHYSICAL_START=0x00000000
265CONFIG_PHYSICAL_ALIGN=0x10000000
255CONFIG_TASK_SIZE=0xc0000000 266CONFIG_TASK_SIZE=0xc0000000
256CONFIG_BOOT_LOAD=0x00800000
257 267
258# 268#
259# Networking 269# Networking
@@ -301,8 +311,6 @@ CONFIG_TCP_CONG_CUBIC=y
301CONFIG_DEFAULT_TCP_CONG="cubic" 311CONFIG_DEFAULT_TCP_CONG="cubic"
302# CONFIG_TCP_MD5SIG is not set 312# CONFIG_TCP_MD5SIG is not set
303# CONFIG_IPV6 is not set 313# CONFIG_IPV6 is not set
304# CONFIG_INET6_XFRM_TUNNEL is not set
305# CONFIG_INET6_TUNNEL is not set
306# CONFIG_NETWORK_SECMARK is not set 314# CONFIG_NETWORK_SECMARK is not set
307# CONFIG_NETFILTER is not set 315# CONFIG_NETFILTER is not set
308# CONFIG_IP_DCCP is not set 316# CONFIG_IP_DCCP is not set
@@ -358,6 +366,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
358# CONFIG_CONNECTOR is not set 366# CONFIG_CONNECTOR is not set
359# CONFIG_MTD is not set 367# CONFIG_MTD is not set
360CONFIG_OF_DEVICE=y 368CONFIG_OF_DEVICE=y
369CONFIG_OF_I2C=y
361# CONFIG_PARPORT is not set 370# CONFIG_PARPORT is not set
362CONFIG_BLK_DEV=y 371CONFIG_BLK_DEV=y
363# CONFIG_BLK_DEV_FD is not set 372# CONFIG_BLK_DEV_FD is not set
@@ -525,7 +534,6 @@ CONFIG_NETDEV_1000=y
525# CONFIG_SIS190 is not set 534# CONFIG_SIS190 is not set
526# CONFIG_SKGE is not set 535# CONFIG_SKGE is not set
527# CONFIG_SKY2 is not set 536# CONFIG_SKY2 is not set
528# CONFIG_SK98LIN is not set
529# CONFIG_VIA_VELOCITY is not set 537# CONFIG_VIA_VELOCITY is not set
530# CONFIG_TIGON3 is not set 538# CONFIG_TIGON3 is not set
531# CONFIG_BNX2 is not set 539# CONFIG_BNX2 is not set
@@ -546,6 +554,7 @@ CONFIG_NETDEV_10000=y
546# CONFIG_MLX4_CORE is not set 554# CONFIG_MLX4_CORE is not set
547# CONFIG_TEHUTI is not set 555# CONFIG_TEHUTI is not set
548# CONFIG_BNX2X is not set 556# CONFIG_BNX2X is not set
557# CONFIG_SFC is not set
549# CONFIG_TR is not set 558# CONFIG_TR is not set
550 559
551# 560#
@@ -553,6 +562,7 @@ CONFIG_NETDEV_10000=y
553# 562#
554# CONFIG_WLAN_PRE80211 is not set 563# CONFIG_WLAN_PRE80211 is not set
555# CONFIG_WLAN_80211 is not set 564# CONFIG_WLAN_80211 is not set
565# CONFIG_IWLWIFI_LEDS is not set
556# CONFIG_WAN is not set 566# CONFIG_WAN is not set
557# CONFIG_FDDI is not set 567# CONFIG_FDDI is not set
558# CONFIG_HIPPI is not set 568# CONFIG_HIPPI is not set
@@ -600,6 +610,7 @@ CONFIG_INPUT=y
600# Character devices 610# Character devices
601# 611#
602# CONFIG_VT is not set 612# CONFIG_VT is not set
613CONFIG_DEVKMEM=y
603# CONFIG_SERIAL_NONSTANDARD is not set 614# CONFIG_SERIAL_NONSTANDARD is not set
604# CONFIG_NOZOMI is not set 615# CONFIG_NOZOMI is not set
605 616
@@ -629,7 +640,6 @@ CONFIG_LEGACY_PTY_COUNT=256
629# CONFIG_IPMI_HANDLER is not set 640# CONFIG_IPMI_HANDLER is not set
630CONFIG_HW_RANDOM=y 641CONFIG_HW_RANDOM=y
631# CONFIG_NVRAM is not set 642# CONFIG_NVRAM is not set
632# CONFIG_GEN_RTC is not set
633# CONFIG_R3964 is not set 643# CONFIG_R3964 is not set
634# CONFIG_APPLICOM is not set 644# CONFIG_APPLICOM is not set
635# CONFIG_RAW_DRIVER is not set 645# CONFIG_RAW_DRIVER is not set
@@ -640,13 +650,6 @@ CONFIG_I2C_BOARDINFO=y
640CONFIG_I2C_CHARDEV=y 650CONFIG_I2C_CHARDEV=y
641 651
642# 652#
643# I2C Algorithms
644#
645# CONFIG_I2C_ALGOBIT is not set
646# CONFIG_I2C_ALGOPCF is not set
647# CONFIG_I2C_ALGOPCA is not set
648
649#
650# I2C Hardware Bus support 653# I2C Hardware Bus support
651# 654#
652# CONFIG_I2C_ALI1535 is not set 655# CONFIG_I2C_ALI1535 is not set
@@ -672,6 +675,7 @@ CONFIG_I2C_MPC=y
672# CONFIG_I2C_VIA is not set 675# CONFIG_I2C_VIA is not set
673# CONFIG_I2C_VIAPRO is not set 676# CONFIG_I2C_VIAPRO is not set
674# CONFIG_I2C_VOODOO3 is not set 677# CONFIG_I2C_VOODOO3 is not set
678# CONFIG_I2C_PCA_PLATFORM is not set
675 679
676# 680#
677# Miscellaneous I2C Chip support 681# Miscellaneous I2C Chip support
@@ -681,19 +685,13 @@ CONFIG_I2C_MPC=y
681# CONFIG_SENSORS_PCF8574 is not set 685# CONFIG_SENSORS_PCF8574 is not set
682# CONFIG_PCF8575 is not set 686# CONFIG_PCF8575 is not set
683# CONFIG_SENSORS_PCF8591 is not set 687# CONFIG_SENSORS_PCF8591 is not set
684# CONFIG_TPS65010 is not set
685# CONFIG_SENSORS_MAX6875 is not set 688# CONFIG_SENSORS_MAX6875 is not set
686# CONFIG_SENSORS_TSL2550 is not set 689# CONFIG_SENSORS_TSL2550 is not set
687# CONFIG_I2C_DEBUG_CORE is not set 690# CONFIG_I2C_DEBUG_CORE is not set
688# CONFIG_I2C_DEBUG_ALGO is not set 691# CONFIG_I2C_DEBUG_ALGO is not set
689# CONFIG_I2C_DEBUG_BUS is not set 692# CONFIG_I2C_DEBUG_BUS is not set
690# CONFIG_I2C_DEBUG_CHIP is not set 693# CONFIG_I2C_DEBUG_CHIP is not set
691
692#
693# SPI support
694#
695# CONFIG_SPI is not set 694# CONFIG_SPI is not set
696# CONFIG_SPI_MASTER is not set
697# CONFIG_W1 is not set 695# CONFIG_W1 is not set
698# CONFIG_POWER_SUPPLY is not set 696# CONFIG_POWER_SUPPLY is not set
699CONFIG_HWMON=y 697CONFIG_HWMON=y
@@ -776,12 +774,22 @@ CONFIG_SSB_POSSIBLE=y
776# Multifunction device drivers 774# Multifunction device drivers
777# 775#
778# CONFIG_MFD_SM501 is not set 776# CONFIG_MFD_SM501 is not set
777# CONFIG_HTC_PASIC3 is not set
779 778
780# 779#
781# Multimedia devices 780# Multimedia devices
782# 781#
782
783#
784# Multimedia core support
785#
783# CONFIG_VIDEO_DEV is not set 786# CONFIG_VIDEO_DEV is not set
784# CONFIG_DVB_CORE is not set 787# CONFIG_DVB_CORE is not set
788# CONFIG_VIDEO_MEDIA is not set
789
790#
791# Multimedia drivers
792#
785CONFIG_DAB=y 793CONFIG_DAB=y
786 794
787# 795#
@@ -812,6 +820,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
812CONFIG_USB_ARCH_HAS_OHCI=y 820CONFIG_USB_ARCH_HAS_OHCI=y
813CONFIG_USB_ARCH_HAS_EHCI=y 821CONFIG_USB_ARCH_HAS_EHCI=y
814# CONFIG_USB is not set 822# CONFIG_USB is not set
823# CONFIG_USB_OTG_WHITELIST is not set
824# CONFIG_USB_OTG_BLACKLIST_HUB is not set
815 825
816# 826#
817# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 827# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -820,6 +830,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
820# CONFIG_MMC is not set 830# CONFIG_MMC is not set
821# CONFIG_MEMSTICK is not set 831# CONFIG_MEMSTICK is not set
822# CONFIG_NEW_LEDS is not set 832# CONFIG_NEW_LEDS is not set
833# CONFIG_ACCESSIBILITY is not set
823# CONFIG_INFINIBAND is not set 834# CONFIG_INFINIBAND is not set
824# CONFIG_EDAC is not set 835# CONFIG_EDAC is not set
825CONFIG_RTC_LIB=y 836CONFIG_RTC_LIB=y
@@ -871,11 +882,8 @@ CONFIG_RTC_DRV_DS1374=y
871# 882#
872# on-CPU RTC drivers 883# on-CPU RTC drivers
873# 884#
885# CONFIG_RTC_DRV_PPC is not set
874# CONFIG_DMADEVICES is not set 886# CONFIG_DMADEVICES is not set
875
876#
877# Userspace I/O
878#
879# CONFIG_UIO is not set 887# CONFIG_UIO is not set
880 888
881# 889#
@@ -895,7 +903,6 @@ CONFIG_FS_MBCACHE=y
895# CONFIG_JFS_FS is not set 903# CONFIG_JFS_FS is not set
896# CONFIG_FS_POSIX_ACL is not set 904# CONFIG_FS_POSIX_ACL is not set
897# CONFIG_XFS_FS is not set 905# CONFIG_XFS_FS is not set
898# CONFIG_GFS2_FS is not set
899# CONFIG_OCFS2_FS is not set 906# CONFIG_OCFS2_FS is not set
900CONFIG_DNOTIFY=y 907CONFIG_DNOTIFY=y
901CONFIG_INOTIFY=y 908CONFIG_INOTIFY=y
@@ -953,7 +960,6 @@ CONFIG_NFS_FS=y
953CONFIG_NFS_V3=y 960CONFIG_NFS_V3=y
954# CONFIG_NFS_V3_ACL is not set 961# CONFIG_NFS_V3_ACL is not set
955CONFIG_NFS_V4=y 962CONFIG_NFS_V4=y
956# CONFIG_NFS_DIRECTIO is not set
957# CONFIG_NFSD is not set 963# CONFIG_NFSD is not set
958CONFIG_ROOT_NFS=y 964CONFIG_ROOT_NFS=y
959CONFIG_LOCKD=y 965CONFIG_LOCKD=y
@@ -994,6 +1000,7 @@ CONFIG_PARTITION_ADVANCED=y
994# Library routines 1000# Library routines
995# 1001#
996CONFIG_BITREVERSE=y 1002CONFIG_BITREVERSE=y
1003# CONFIG_GENERIC_FIND_FIRST_BIT is not set
997# CONFIG_CRC_CCITT is not set 1004# CONFIG_CRC_CCITT is not set
998# CONFIG_CRC16 is not set 1005# CONFIG_CRC16 is not set
999# CONFIG_CRC_ITU_T is not set 1006# CONFIG_CRC_ITU_T is not set
@@ -1004,6 +1011,7 @@ CONFIG_PLIST=y
1004CONFIG_HAS_IOMEM=y 1011CONFIG_HAS_IOMEM=y
1005CONFIG_HAS_IOPORT=y 1012CONFIG_HAS_IOPORT=y
1006CONFIG_HAS_DMA=y 1013CONFIG_HAS_DMA=y
1014CONFIG_HAVE_LMB=y
1007 1015
1008# 1016#
1009# Kernel hacking 1017# Kernel hacking
@@ -1011,6 +1019,7 @@ CONFIG_HAS_DMA=y
1011# CONFIG_PRINTK_TIME is not set 1019# CONFIG_PRINTK_TIME is not set
1012CONFIG_ENABLE_WARN_DEPRECATED=y 1020CONFIG_ENABLE_WARN_DEPRECATED=y
1013CONFIG_ENABLE_MUST_CHECK=y 1021CONFIG_ENABLE_MUST_CHECK=y
1022CONFIG_FRAME_WARN=1024
1014# CONFIG_MAGIC_SYSRQ is not set 1023# CONFIG_MAGIC_SYSRQ is not set
1015# CONFIG_UNUSED_SYMBOLS is not set 1024# CONFIG_UNUSED_SYMBOLS is not set
1016# CONFIG_DEBUG_FS is not set 1025# CONFIG_DEBUG_FS is not set
@@ -1021,6 +1030,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1021CONFIG_SCHED_DEBUG=y 1030CONFIG_SCHED_DEBUG=y
1022# CONFIG_SCHEDSTATS is not set 1031# CONFIG_SCHEDSTATS is not set
1023# CONFIG_TIMER_STATS is not set 1032# CONFIG_TIMER_STATS is not set
1033# CONFIG_DEBUG_OBJECTS is not set
1024# CONFIG_SLUB_DEBUG_ON is not set 1034# CONFIG_SLUB_DEBUG_ON is not set
1025# CONFIG_SLUB_STATS is not set 1035# CONFIG_SLUB_STATS is not set
1026# CONFIG_DEBUG_RT_MUTEXES is not set 1036# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1033,6 +1043,7 @@ CONFIG_SCHED_DEBUG=y
1033# CONFIG_DEBUG_BUGVERBOSE is not set 1043# CONFIG_DEBUG_BUGVERBOSE is not set
1034# CONFIG_DEBUG_INFO is not set 1044# CONFIG_DEBUG_INFO is not set
1035# CONFIG_DEBUG_VM is not set 1045# CONFIG_DEBUG_VM is not set
1046# CONFIG_DEBUG_WRITECOUNT is not set
1036# CONFIG_DEBUG_LIST is not set 1047# CONFIG_DEBUG_LIST is not set
1037# CONFIG_DEBUG_SG is not set 1048# CONFIG_DEBUG_SG is not set
1038# CONFIG_BOOT_PRINTK_DELAY is not set 1049# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1045,6 +1056,7 @@ CONFIG_SCHED_DEBUG=y
1045# CONFIG_DEBUG_PAGEALLOC is not set 1056# CONFIG_DEBUG_PAGEALLOC is not set
1046CONFIG_DEBUGGER=y 1057CONFIG_DEBUGGER=y
1047# CONFIG_XMON is not set 1058# CONFIG_XMON is not set
1059# CONFIG_IRQSTACKS is not set
1048# CONFIG_BDI_SWITCH is not set 1060# CONFIG_BDI_SWITCH is not set
1049CONFIG_PPC_EARLY_DEBUG=y 1061CONFIG_PPC_EARLY_DEBUG=y
1050# CONFIG_PPC_EARLY_DEBUG_LPAR is not set 1062# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
@@ -1066,52 +1078,82 @@ CONFIG_PPC_EARLY_DEBUG=y
1066# CONFIG_SECURITY is not set 1078# CONFIG_SECURITY is not set
1067# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1079# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1068CONFIG_CRYPTO=y 1080CONFIG_CRYPTO=y
1081
1082#
1083# Crypto core or helper
1084#
1069CONFIG_CRYPTO_ALGAPI=y 1085CONFIG_CRYPTO_ALGAPI=y
1070CONFIG_CRYPTO_BLKCIPHER=y 1086CONFIG_CRYPTO_BLKCIPHER=y
1071# CONFIG_CRYPTO_SEQIV is not set
1072CONFIG_CRYPTO_MANAGER=y 1087CONFIG_CRYPTO_MANAGER=y
1088# CONFIG_CRYPTO_GF128MUL is not set
1089# CONFIG_CRYPTO_NULL is not set
1090# CONFIG_CRYPTO_CRYPTD is not set
1091# CONFIG_CRYPTO_AUTHENC is not set
1092# CONFIG_CRYPTO_TEST is not set
1093
1094#
1095# Authenticated Encryption with Associated Data
1096#
1097# CONFIG_CRYPTO_CCM is not set
1098# CONFIG_CRYPTO_GCM is not set
1099# CONFIG_CRYPTO_SEQIV is not set
1100
1101#
1102# Block modes
1103#
1104CONFIG_CRYPTO_CBC=y
1105# CONFIG_CRYPTO_CTR is not set
1106# CONFIG_CRYPTO_CTS is not set
1107CONFIG_CRYPTO_ECB=m
1108# CONFIG_CRYPTO_LRW is not set
1109CONFIG_CRYPTO_PCBC=m
1110# CONFIG_CRYPTO_XTS is not set
1111
1112#
1113# Hash modes
1114#
1073# CONFIG_CRYPTO_HMAC is not set 1115# CONFIG_CRYPTO_HMAC is not set
1074# CONFIG_CRYPTO_XCBC is not set 1116# CONFIG_CRYPTO_XCBC is not set
1075# CONFIG_CRYPTO_NULL is not set 1117
1118#
1119# Digest
1120#
1121# CONFIG_CRYPTO_CRC32C is not set
1076# CONFIG_CRYPTO_MD4 is not set 1122# CONFIG_CRYPTO_MD4 is not set
1077CONFIG_CRYPTO_MD5=y 1123CONFIG_CRYPTO_MD5=y
1124# CONFIG_CRYPTO_MICHAEL_MIC is not set
1078# CONFIG_CRYPTO_SHA1 is not set 1125# CONFIG_CRYPTO_SHA1 is not set
1079# CONFIG_CRYPTO_SHA256 is not set 1126# CONFIG_CRYPTO_SHA256 is not set
1080# CONFIG_CRYPTO_SHA512 is not set 1127# CONFIG_CRYPTO_SHA512 is not set
1081# CONFIG_CRYPTO_WP512 is not set
1082# CONFIG_CRYPTO_TGR192 is not set 1128# CONFIG_CRYPTO_TGR192 is not set
1083# CONFIG_CRYPTO_GF128MUL is not set 1129# CONFIG_CRYPTO_WP512 is not set
1084CONFIG_CRYPTO_ECB=m 1130
1085CONFIG_CRYPTO_CBC=y 1131#
1086CONFIG_CRYPTO_PCBC=m 1132# Ciphers
1087# CONFIG_CRYPTO_LRW is not set 1133#
1088# CONFIG_CRYPTO_XTS is not set
1089# CONFIG_CRYPTO_CTR is not set
1090# CONFIG_CRYPTO_GCM is not set
1091# CONFIG_CRYPTO_CCM is not set
1092# CONFIG_CRYPTO_CRYPTD is not set
1093CONFIG_CRYPTO_DES=y
1094# CONFIG_CRYPTO_FCRYPT is not set
1095# CONFIG_CRYPTO_BLOWFISH is not set
1096# CONFIG_CRYPTO_TWOFISH is not set
1097# CONFIG_CRYPTO_SERPENT is not set
1098# CONFIG_CRYPTO_AES is not set 1134# CONFIG_CRYPTO_AES is not set
1135# CONFIG_CRYPTO_ANUBIS is not set
1136# CONFIG_CRYPTO_ARC4 is not set
1137# CONFIG_CRYPTO_BLOWFISH is not set
1138# CONFIG_CRYPTO_CAMELLIA is not set
1099# CONFIG_CRYPTO_CAST5 is not set 1139# CONFIG_CRYPTO_CAST5 is not set
1100# CONFIG_CRYPTO_CAST6 is not set 1140# CONFIG_CRYPTO_CAST6 is not set
1101# CONFIG_CRYPTO_TEA is not set 1141CONFIG_CRYPTO_DES=y
1102# CONFIG_CRYPTO_ARC4 is not set 1142# CONFIG_CRYPTO_FCRYPT is not set
1103# CONFIG_CRYPTO_KHAZAD is not set 1143# CONFIG_CRYPTO_KHAZAD is not set
1104# CONFIG_CRYPTO_ANUBIS is not set
1105# CONFIG_CRYPTO_SEED is not set
1106# CONFIG_CRYPTO_SALSA20 is not set 1144# CONFIG_CRYPTO_SALSA20 is not set
1145# CONFIG_CRYPTO_SEED is not set
1146# CONFIG_CRYPTO_SERPENT is not set
1147# CONFIG_CRYPTO_TEA is not set
1148# CONFIG_CRYPTO_TWOFISH is not set
1149
1150#
1151# Compression
1152#
1107# CONFIG_CRYPTO_DEFLATE is not set 1153# CONFIG_CRYPTO_DEFLATE is not set
1108# CONFIG_CRYPTO_MICHAEL_MIC is not set
1109# CONFIG_CRYPTO_CRC32C is not set
1110# CONFIG_CRYPTO_CAMELLIA is not set
1111# CONFIG_CRYPTO_TEST is not set
1112# CONFIG_CRYPTO_AUTHENC is not set
1113# CONFIG_CRYPTO_LZO is not set 1154# CONFIG_CRYPTO_LZO is not set
1114CONFIG_CRYPTO_HW=y 1155CONFIG_CRYPTO_HW=y
1115# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1156# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1116# CONFIG_PPC_CLOCK is not set 1157# CONFIG_PPC_CLOCK is not set
1117CONFIG_PPC_LIB_RHEAP=y 1158CONFIG_PPC_LIB_RHEAP=y
1159# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/mpc8572_ds_defconfig b/arch/powerpc/configs/85xx/mpc8572_ds_defconfig
index 53aa6f3173a5..03627cfebcb4 100644
--- a/arch/powerpc/configs/85xx/mpc8572_ds_defconfig
+++ b/arch/powerpc/configs/85xx/mpc8572_ds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:37:06 2008 4# Mon Jun 9 08:52:35 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -90,6 +92,7 @@ CONFIG_INITRAMFS_SOURCE=""
90CONFIG_SYSCTL=y 92CONFIG_SYSCTL=y
91CONFIG_EMBEDDED=y 93CONFIG_EMBEDDED=y
92CONFIG_SYSCTL_SYSCALL=y 94CONFIG_SYSCTL_SYSCALL=y
95CONFIG_SYSCTL_SYSCALL_CHECK=y
93CONFIG_KALLSYMS=y 96CONFIG_KALLSYMS=y
94CONFIG_KALLSYMS_ALL=y 97CONFIG_KALLSYMS_ALL=y
95CONFIG_KALLSYMS_EXTRA_PASS=y 98CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -117,12 +120,14 @@ CONFIG_HAVE_OPROFILE=y
117# CONFIG_KPROBES is not set 120# CONFIG_KPROBES is not set
118CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
123# CONFIG_HAVE_DMA_ATTRS is not set
120CONFIG_PROC_PAGE_MONITOR=y 124CONFIG_PROC_PAGE_MONITOR=y
121CONFIG_SLABINFO=y 125CONFIG_SLABINFO=y
122CONFIG_RT_MUTEXES=y 126CONFIG_RT_MUTEXES=y
123# CONFIG_TINY_SHMEM is not set 127# CONFIG_TINY_SHMEM is not set
124CONFIG_BASE_SMALL=0 128CONFIG_BASE_SMALL=0
125CONFIG_MODULES=y 129CONFIG_MODULES=y
130# CONFIG_MODULE_FORCE_LOAD is not set
126CONFIG_MODULE_UNLOAD=y 131CONFIG_MODULE_UNLOAD=y
127CONFIG_MODULE_FORCE_UNLOAD=y 132CONFIG_MODULE_FORCE_UNLOAD=y
128CONFIG_MODVERSIONS=y 133CONFIG_MODVERSIONS=y
@@ -162,6 +167,7 @@ CONFIG_MPC85xx=y
162# CONFIG_MPC85xx_CDS is not set 167# CONFIG_MPC85xx_CDS is not set
163# CONFIG_MPC85xx_MDS is not set 168# CONFIG_MPC85xx_MDS is not set
164CONFIG_MPC85xx_DS=y 169CONFIG_MPC85xx_DS=y
170# CONFIG_KSI8560 is not set
165# CONFIG_STX_GP3 is not set 171# CONFIG_STX_GP3 is not set
166# CONFIG_TQM8540 is not set 172# CONFIG_TQM8540 is not set
167# CONFIG_TQM8541 is not set 173# CONFIG_TQM8541 is not set
@@ -217,11 +223,13 @@ CONFIG_FLATMEM=y
217CONFIG_FLAT_NODE_MEM_MAP=y 223CONFIG_FLAT_NODE_MEM_MAP=y
218# CONFIG_SPARSEMEM_STATIC is not set 224# CONFIG_SPARSEMEM_STATIC is not set
219# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 225# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
226CONFIG_PAGEFLAGS_EXTENDED=y
220CONFIG_SPLIT_PTLOCK_CPUS=4 227CONFIG_SPLIT_PTLOCK_CPUS=4
221# CONFIG_RESOURCES_64BIT is not set 228# CONFIG_RESOURCES_64BIT is not set
222CONFIG_ZONE_DMA_FLAG=1 229CONFIG_ZONE_DMA_FLAG=1
223CONFIG_BOUNCE=y 230CONFIG_BOUNCE=y
224CONFIG_VIRT_TO_BUS=y 231CONFIG_VIRT_TO_BUS=y
232CONFIG_FORCE_MAX_ZONEORDER=11
225CONFIG_PROC_DEVICETREE=y 233CONFIG_PROC_DEVICETREE=y
226# CONFIG_CMDLINE_BOOL is not set 234# CONFIG_CMDLINE_BOOL is not set
227# CONFIG_PM is not set 235# CONFIG_PM is not set
@@ -246,6 +254,7 @@ CONFIG_PCI_LEGACY=y
246# CONFIG_PCI_DEBUG is not set 254# CONFIG_PCI_DEBUG is not set
247# CONFIG_PCCARD is not set 255# CONFIG_PCCARD is not set
248# CONFIG_HOTPLUG_PCI is not set 256# CONFIG_HOTPLUG_PCI is not set
257# CONFIG_HAS_RAPIDIO is not set
249 258
250# 259#
251# Advanced setup 260# Advanced setup
@@ -255,11 +264,12 @@ CONFIG_PCI_LEGACY=y
255# 264#
256# Default settings for advanced configuration options are used 265# Default settings for advanced configuration options are used
257# 266#
258CONFIG_HIGHMEM_START=0xfe000000
259CONFIG_LOWMEM_SIZE=0x30000000 267CONFIG_LOWMEM_SIZE=0x30000000
268CONFIG_PAGE_OFFSET=0xc0000000
260CONFIG_KERNEL_START=0xc0000000 269CONFIG_KERNEL_START=0xc0000000
270CONFIG_PHYSICAL_START=0x00000000
271CONFIG_PHYSICAL_ALIGN=0x10000000
261CONFIG_TASK_SIZE=0xc0000000 272CONFIG_TASK_SIZE=0xc0000000
262CONFIG_BOOT_LOAD=0x00800000
263 273
264# 274#
265# Networking 275# Networking
@@ -330,8 +340,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
330CONFIG_INET6_XFRM_MODE_BEET=y 340CONFIG_INET6_XFRM_MODE_BEET=y
331# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 341# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
332CONFIG_IPV6_SIT=y 342CONFIG_IPV6_SIT=y
343CONFIG_IPV6_NDISC_NODETYPE=y
333# CONFIG_IPV6_TUNNEL is not set 344# CONFIG_IPV6_TUNNEL is not set
334# CONFIG_IPV6_MULTIPLE_TABLES is not set 345# CONFIG_IPV6_MULTIPLE_TABLES is not set
346# CONFIG_IPV6_MROUTE is not set
335# CONFIG_NETWORK_SECMARK is not set 347# CONFIG_NETWORK_SECMARK is not set
336# CONFIG_NETFILTER is not set 348# CONFIG_NETFILTER is not set
337# CONFIG_IP_DCCP is not set 349# CONFIG_IP_DCCP is not set
@@ -393,6 +405,7 @@ CONFIG_FW_LOADER=y
393# CONFIG_CONNECTOR is not set 405# CONFIG_CONNECTOR is not set
394# CONFIG_MTD is not set 406# CONFIG_MTD is not set
395CONFIG_OF_DEVICE=y 407CONFIG_OF_DEVICE=y
408CONFIG_OF_I2C=y
396# CONFIG_PARPORT is not set 409# CONFIG_PARPORT is not set
397CONFIG_BLK_DEV=y 410CONFIG_BLK_DEV=y
398# CONFIG_BLK_DEV_FD is not set 411# CONFIG_BLK_DEV_FD is not set
@@ -499,7 +512,11 @@ CONFIG_SCSI_LOWLEVEL=y
499# CONFIG_SCSI_SRP is not set 512# CONFIG_SCSI_SRP is not set
500CONFIG_ATA=y 513CONFIG_ATA=y
501# CONFIG_ATA_NONSTANDARD is not set 514# CONFIG_ATA_NONSTANDARD is not set
515CONFIG_SATA_PMP=y
502CONFIG_SATA_AHCI=y 516CONFIG_SATA_AHCI=y
517# CONFIG_SATA_SIL24 is not set
518# CONFIG_SATA_FSL is not set
519CONFIG_ATA_SFF=y
503# CONFIG_SATA_SVW is not set 520# CONFIG_SATA_SVW is not set
504# CONFIG_ATA_PIIX is not set 521# CONFIG_ATA_PIIX is not set
505# CONFIG_SATA_MV is not set 522# CONFIG_SATA_MV is not set
@@ -509,13 +526,11 @@ CONFIG_SATA_AHCI=y
509# CONFIG_SATA_PROMISE is not set 526# CONFIG_SATA_PROMISE is not set
510# CONFIG_SATA_SX4 is not set 527# CONFIG_SATA_SX4 is not set
511# CONFIG_SATA_SIL is not set 528# CONFIG_SATA_SIL is not set
512# CONFIG_SATA_SIL24 is not set
513# CONFIG_SATA_SIS is not set 529# CONFIG_SATA_SIS is not set
514# CONFIG_SATA_ULI is not set 530# CONFIG_SATA_ULI is not set
515# CONFIG_SATA_VIA is not set 531# CONFIG_SATA_VIA is not set
516# CONFIG_SATA_VITESSE is not set 532# CONFIG_SATA_VITESSE is not set
517# CONFIG_SATA_INIC162X is not set 533# CONFIG_SATA_INIC162X is not set
518# CONFIG_SATA_FSL is not set
519CONFIG_PATA_ALI=y 534CONFIG_PATA_ALI=y
520# CONFIG_PATA_AMD is not set 535# CONFIG_PATA_AMD is not set
521# CONFIG_PATA_ARTOP is not set 536# CONFIG_PATA_ARTOP is not set
@@ -555,6 +570,7 @@ CONFIG_PATA_ALI=y
555# CONFIG_PATA_VIA is not set 570# CONFIG_PATA_VIA is not set
556# CONFIG_PATA_WINBOND is not set 571# CONFIG_PATA_WINBOND is not set
557# CONFIG_PATA_PLATFORM is not set 572# CONFIG_PATA_PLATFORM is not set
573# CONFIG_PATA_SCH is not set
558# CONFIG_MD is not set 574# CONFIG_MD is not set
559# CONFIG_FUSION is not set 575# CONFIG_FUSION is not set
560 576
@@ -620,7 +636,6 @@ CONFIG_NETDEV_1000=y
620# CONFIG_SIS190 is not set 636# CONFIG_SIS190 is not set
621# CONFIG_SKGE is not set 637# CONFIG_SKGE is not set
622# CONFIG_SKY2 is not set 638# CONFIG_SKY2 is not set
623# CONFIG_SK98LIN is not set
624# CONFIG_VIA_VELOCITY is not set 639# CONFIG_VIA_VELOCITY is not set
625# CONFIG_TIGON3 is not set 640# CONFIG_TIGON3 is not set
626# CONFIG_BNX2 is not set 641# CONFIG_BNX2 is not set
@@ -640,6 +655,7 @@ CONFIG_NETDEV_10000=y
640# CONFIG_MLX4_CORE is not set 655# CONFIG_MLX4_CORE is not set
641# CONFIG_TEHUTI is not set 656# CONFIG_TEHUTI is not set
642# CONFIG_BNX2X is not set 657# CONFIG_BNX2X is not set
658# CONFIG_SFC is not set
643# CONFIG_TR is not set 659# CONFIG_TR is not set
644 660
645# 661#
@@ -647,6 +663,7 @@ CONFIG_NETDEV_10000=y
647# 663#
648# CONFIG_WLAN_PRE80211 is not set 664# CONFIG_WLAN_PRE80211 is not set
649# CONFIG_WLAN_80211 is not set 665# CONFIG_WLAN_80211 is not set
666# CONFIG_IWLWIFI_LEDS is not set
650 667
651# 668#
652# USB Network Adapters 669# USB Network Adapters
@@ -711,6 +728,7 @@ CONFIG_VT=y
711CONFIG_VT_CONSOLE=y 728CONFIG_VT_CONSOLE=y
712CONFIG_HW_CONSOLE=y 729CONFIG_HW_CONSOLE=y
713# CONFIG_VT_HW_CONSOLE_BINDING is not set 730# CONFIG_VT_HW_CONSOLE_BINDING is not set
731CONFIG_DEVKMEM=y
714# CONFIG_SERIAL_NONSTANDARD is not set 732# CONFIG_SERIAL_NONSTANDARD is not set
715# CONFIG_NOZOMI is not set 733# CONFIG_NOZOMI is not set
716 734
@@ -742,7 +760,6 @@ CONFIG_LEGACY_PTY_COUNT=256
742# CONFIG_IPMI_HANDLER is not set 760# CONFIG_IPMI_HANDLER is not set
743# CONFIG_HW_RANDOM is not set 761# CONFIG_HW_RANDOM is not set
744CONFIG_NVRAM=y 762CONFIG_NVRAM=y
745# CONFIG_GEN_RTC is not set
746# CONFIG_R3964 is not set 763# CONFIG_R3964 is not set
747# CONFIG_APPLICOM is not set 764# CONFIG_APPLICOM is not set
748# CONFIG_RAW_DRIVER is not set 765# CONFIG_RAW_DRIVER is not set
@@ -753,13 +770,6 @@ CONFIG_I2C_BOARDINFO=y
753# CONFIG_I2C_CHARDEV is not set 770# CONFIG_I2C_CHARDEV is not set
754 771
755# 772#
756# I2C Algorithms
757#
758# CONFIG_I2C_ALGOBIT is not set
759# CONFIG_I2C_ALGOPCF is not set
760# CONFIG_I2C_ALGOPCA is not set
761
762#
763# I2C Hardware Bus support 773# I2C Hardware Bus support
764# 774#
765# CONFIG_I2C_ALI1535 is not set 775# CONFIG_I2C_ALI1535 is not set
@@ -786,6 +796,7 @@ CONFIG_I2C_MPC=y
786# CONFIG_I2C_VIA is not set 796# CONFIG_I2C_VIA is not set
787# CONFIG_I2C_VIAPRO is not set 797# CONFIG_I2C_VIAPRO is not set
788# CONFIG_I2C_VOODOO3 is not set 798# CONFIG_I2C_VOODOO3 is not set
799# CONFIG_I2C_PCA_PLATFORM is not set
789 800
790# 801#
791# Miscellaneous I2C Chip support 802# Miscellaneous I2C Chip support
@@ -795,19 +806,13 @@ CONFIG_SENSORS_EEPROM=y
795# CONFIG_SENSORS_PCF8574 is not set 806# CONFIG_SENSORS_PCF8574 is not set
796# CONFIG_PCF8575 is not set 807# CONFIG_PCF8575 is not set
797# CONFIG_SENSORS_PCF8591 is not set 808# CONFIG_SENSORS_PCF8591 is not set
798# CONFIG_TPS65010 is not set
799# CONFIG_SENSORS_MAX6875 is not set 809# CONFIG_SENSORS_MAX6875 is not set
800# CONFIG_SENSORS_TSL2550 is not set 810# CONFIG_SENSORS_TSL2550 is not set
801# CONFIG_I2C_DEBUG_CORE is not set 811# CONFIG_I2C_DEBUG_CORE is not set
802# CONFIG_I2C_DEBUG_ALGO is not set 812# CONFIG_I2C_DEBUG_ALGO is not set
803# CONFIG_I2C_DEBUG_BUS is not set 813# CONFIG_I2C_DEBUG_BUS is not set
804# CONFIG_I2C_DEBUG_CHIP is not set 814# CONFIG_I2C_DEBUG_CHIP is not set
805
806#
807# SPI support
808#
809# CONFIG_SPI is not set 815# CONFIG_SPI is not set
810# CONFIG_SPI_MASTER is not set
811# CONFIG_W1 is not set 816# CONFIG_W1 is not set
812# CONFIG_POWER_SUPPLY is not set 817# CONFIG_POWER_SUPPLY is not set
813# CONFIG_HWMON is not set 818# CONFIG_HWMON is not set
@@ -824,13 +829,33 @@ CONFIG_SSB_POSSIBLE=y
824# Multifunction device drivers 829# Multifunction device drivers
825# 830#
826# CONFIG_MFD_SM501 is not set 831# CONFIG_MFD_SM501 is not set
832# CONFIG_HTC_PASIC3 is not set
827 833
828# 834#
829# Multimedia devices 835# Multimedia devices
830# 836#
837
838#
839# Multimedia core support
840#
831# CONFIG_VIDEO_DEV is not set 841# CONFIG_VIDEO_DEV is not set
832CONFIG_DVB_CORE=m 842CONFIG_DVB_CORE=m
833# CONFIG_DVB_CORE_ATTACH is not set 843CONFIG_VIDEO_MEDIA=m
844
845#
846# Multimedia drivers
847#
848# CONFIG_MEDIA_ATTACH is not set
849CONFIG_MEDIA_TUNER=m
850# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
851CONFIG_MEDIA_TUNER_SIMPLE=m
852CONFIG_MEDIA_TUNER_TDA8290=m
853CONFIG_MEDIA_TUNER_TDA9887=m
854CONFIG_MEDIA_TUNER_TEA5761=m
855CONFIG_MEDIA_TUNER_TEA5767=m
856CONFIG_MEDIA_TUNER_MT20XX=m
857CONFIG_MEDIA_TUNER_XC2028=m
858CONFIG_MEDIA_TUNER_XC5000=m
834CONFIG_DVB_CAPTURE_DRIVERS=y 859CONFIG_DVB_CAPTURE_DRIVERS=y
835 860
836# 861#
@@ -873,14 +898,17 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
873# 898#
874# DVB-S (satellite) frontends 899# DVB-S (satellite) frontends
875# 900#
876# CONFIG_DVB_STV0299 is not set
877# CONFIG_DVB_CX24110 is not set 901# CONFIG_DVB_CX24110 is not set
878# CONFIG_DVB_CX24123 is not set 902# CONFIG_DVB_CX24123 is not set
879# CONFIG_DVB_TDA8083 is not set
880# CONFIG_DVB_MT312 is not set 903# CONFIG_DVB_MT312 is not set
881# CONFIG_DVB_VES1X93 is not set
882# CONFIG_DVB_S5H1420 is not set 904# CONFIG_DVB_S5H1420 is not set
905# CONFIG_DVB_STV0299 is not set
906# CONFIG_DVB_TDA8083 is not set
883# CONFIG_DVB_TDA10086 is not set 907# CONFIG_DVB_TDA10086 is not set
908# CONFIG_DVB_VES1X93 is not set
909# CONFIG_DVB_TUNER_ITD1000 is not set
910# CONFIG_DVB_TDA826X is not set
911# CONFIG_DVB_TUA6100 is not set
884 912
885# 913#
886# DVB-T (terrestrial) frontends 914# DVB-T (terrestrial) frontends
@@ -898,6 +926,7 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
898# CONFIG_DVB_DIB3000MC is not set 926# CONFIG_DVB_DIB3000MC is not set
899# CONFIG_DVB_DIB7000M is not set 927# CONFIG_DVB_DIB7000M is not set
900# CONFIG_DVB_DIB7000P is not set 928# CONFIG_DVB_DIB7000P is not set
929# CONFIG_DVB_TDA10048 is not set
901 930
902# 931#
903# DVB-C (cable) frontends 932# DVB-C (cable) frontends
@@ -916,27 +945,21 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
916# CONFIG_DVB_BCM3510 is not set 945# CONFIG_DVB_BCM3510 is not set
917# CONFIG_DVB_LGDT330X is not set 946# CONFIG_DVB_LGDT330X is not set
918# CONFIG_DVB_S5H1409 is not set 947# CONFIG_DVB_S5H1409 is not set
948# CONFIG_DVB_AU8522 is not set
949# CONFIG_DVB_S5H1411 is not set
919 950
920# 951#
921# Tuners/PLL support 952# Digital terrestrial only tuners/PLL
922# 953#
923# CONFIG_DVB_PLL is not set 954# CONFIG_DVB_PLL is not set
924# CONFIG_DVB_TDA826X is not set
925# CONFIG_DVB_TDA827X is not set
926# CONFIG_DVB_TDA18271 is not set
927# CONFIG_DVB_TUNER_QT1010 is not set
928# CONFIG_DVB_TUNER_MT2060 is not set
929# CONFIG_DVB_TUNER_MT2266 is not set
930# CONFIG_DVB_TUNER_MT2131 is not set
931# CONFIG_DVB_TUNER_DIB0070 is not set 955# CONFIG_DVB_TUNER_DIB0070 is not set
932# CONFIG_DVB_TUNER_XC5000 is not set
933 956
934# 957#
935# Miscellaneous devices 958# SEC control devices for DVB-S
936# 959#
937# CONFIG_DVB_LNBP21 is not set 960# CONFIG_DVB_LNBP21 is not set
961# CONFIG_DVB_ISL6405 is not set
938# CONFIG_DVB_ISL6421 is not set 962# CONFIG_DVB_ISL6421 is not set
939# CONFIG_DVB_TUA6100 is not set
940CONFIG_DAB=y 963CONFIG_DAB=y
941# CONFIG_USB_DABUSB is not set 964# CONFIG_USB_DABUSB is not set
942 965
@@ -1003,6 +1026,7 @@ CONFIG_SND_AC97_CODEC=y
1003# CONFIG_SND_AU8810 is not set 1026# CONFIG_SND_AU8810 is not set
1004# CONFIG_SND_AU8820 is not set 1027# CONFIG_SND_AU8820 is not set
1005# CONFIG_SND_AU8830 is not set 1028# CONFIG_SND_AU8830 is not set
1029# CONFIG_SND_AW2 is not set
1006# CONFIG_SND_AZT3328 is not set 1030# CONFIG_SND_AZT3328 is not set
1007# CONFIG_SND_BT87X is not set 1031# CONFIG_SND_BT87X is not set
1008# CONFIG_SND_CA0106 is not set 1032# CONFIG_SND_CA0106 is not set
@@ -1077,11 +1101,11 @@ CONFIG_SND_INTEL8X0=y
1077# CONFIG_SND_SOC is not set 1101# CONFIG_SND_SOC is not set
1078 1102
1079# 1103#
1080# SoC Audio support for SuperH 1104# ALSA SoC audio for Freescale SOCs
1081# 1105#
1082 1106
1083# 1107#
1084# ALSA SoC audio for Freescale SOCs 1108# SoC Audio for the Texas Instruments OMAP
1085# 1109#
1086 1110
1087# 1111#
@@ -1116,16 +1140,20 @@ CONFIG_USB_DEVICEFS=y
1116CONFIG_USB_DEVICE_CLASS=y 1140CONFIG_USB_DEVICE_CLASS=y
1117# CONFIG_USB_DYNAMIC_MINORS is not set 1141# CONFIG_USB_DYNAMIC_MINORS is not set
1118# CONFIG_USB_OTG is not set 1142# CONFIG_USB_OTG is not set
1143# CONFIG_USB_OTG_WHITELIST is not set
1144# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1119 1145
1120# 1146#
1121# USB Host Controller Drivers 1147# USB Host Controller Drivers
1122# 1148#
1149# CONFIG_USB_C67X00_HCD is not set
1123CONFIG_USB_EHCI_HCD=y 1150CONFIG_USB_EHCI_HCD=y
1124# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1151# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1125# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1152# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1126# CONFIG_USB_EHCI_FSL is not set 1153# CONFIG_USB_EHCI_FSL is not set
1127CONFIG_USB_EHCI_HCD_PPC_OF=y 1154CONFIG_USB_EHCI_HCD_PPC_OF=y
1128# CONFIG_USB_ISP116X_HCD is not set 1155# CONFIG_USB_ISP116X_HCD is not set
1156# CONFIG_USB_ISP1760_HCD is not set
1129CONFIG_USB_OHCI_HCD=y 1157CONFIG_USB_OHCI_HCD=y
1130CONFIG_USB_OHCI_HCD_PPC_OF=y 1158CONFIG_USB_OHCI_HCD_PPC_OF=y
1131CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1159CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
@@ -1143,6 +1171,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1143# 1171#
1144# CONFIG_USB_ACM is not set 1172# CONFIG_USB_ACM is not set
1145# CONFIG_USB_PRINTER is not set 1173# CONFIG_USB_PRINTER is not set
1174# CONFIG_USB_WDM is not set
1146 1175
1147# 1176#
1148# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1177# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1162,7 +1191,9 @@ CONFIG_USB_STORAGE=y
1162# CONFIG_USB_STORAGE_SDDR55 is not set 1191# CONFIG_USB_STORAGE_SDDR55 is not set
1163# CONFIG_USB_STORAGE_JUMPSHOT is not set 1192# CONFIG_USB_STORAGE_JUMPSHOT is not set
1164# CONFIG_USB_STORAGE_ALAUDA is not set 1193# CONFIG_USB_STORAGE_ALAUDA is not set
1194# CONFIG_USB_STORAGE_ONETOUCH is not set
1165# CONFIG_USB_STORAGE_KARMA is not set 1195# CONFIG_USB_STORAGE_KARMA is not set
1196# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1166# CONFIG_USB_LIBUSUAL is not set 1197# CONFIG_USB_LIBUSUAL is not set
1167 1198
1168# 1199#
@@ -1200,10 +1231,12 @@ CONFIG_USB_MON=y
1200# CONFIG_USB_TRANCEVIBRATOR is not set 1231# CONFIG_USB_TRANCEVIBRATOR is not set
1201# CONFIG_USB_IOWARRIOR is not set 1232# CONFIG_USB_IOWARRIOR is not set
1202# CONFIG_USB_TEST is not set 1233# CONFIG_USB_TEST is not set
1234# CONFIG_USB_ISIGHTFW is not set
1203# CONFIG_USB_GADGET is not set 1235# CONFIG_USB_GADGET is not set
1204# CONFIG_MMC is not set 1236# CONFIG_MMC is not set
1205# CONFIG_MEMSTICK is not set 1237# CONFIG_MEMSTICK is not set
1206# CONFIG_NEW_LEDS is not set 1238# CONFIG_NEW_LEDS is not set
1239# CONFIG_ACCESSIBILITY is not set
1207# CONFIG_INFINIBAND is not set 1240# CONFIG_INFINIBAND is not set
1208# CONFIG_EDAC is not set 1241# CONFIG_EDAC is not set
1209CONFIG_RTC_LIB=y 1242CONFIG_RTC_LIB=y
@@ -1255,11 +1288,8 @@ CONFIG_RTC_DRV_CMOS=y
1255# 1288#
1256# on-CPU RTC drivers 1289# on-CPU RTC drivers
1257# 1290#
1291# CONFIG_RTC_DRV_PPC is not set
1258# CONFIG_DMADEVICES is not set 1292# CONFIG_DMADEVICES is not set
1259
1260#
1261# Userspace I/O
1262#
1263# CONFIG_UIO is not set 1293# CONFIG_UIO is not set
1264 1294
1265# 1295#
@@ -1279,7 +1309,6 @@ CONFIG_FS_MBCACHE=y
1279# CONFIG_JFS_FS is not set 1309# CONFIG_JFS_FS is not set
1280# CONFIG_FS_POSIX_ACL is not set 1310# CONFIG_FS_POSIX_ACL is not set
1281# CONFIG_XFS_FS is not set 1311# CONFIG_XFS_FS is not set
1282# CONFIG_GFS2_FS is not set
1283# CONFIG_OCFS2_FS is not set 1312# CONFIG_OCFS2_FS is not set
1284CONFIG_DNOTIFY=y 1313CONFIG_DNOTIFY=y
1285CONFIG_INOTIFY=y 1314CONFIG_INOTIFY=y
@@ -1349,10 +1378,9 @@ CONFIG_NFS_FS=y
1349CONFIG_NFS_V3=y 1378CONFIG_NFS_V3=y
1350# CONFIG_NFS_V3_ACL is not set 1379# CONFIG_NFS_V3_ACL is not set
1351CONFIG_NFS_V4=y 1380CONFIG_NFS_V4=y
1352# CONFIG_NFS_DIRECTIO is not set
1353CONFIG_NFSD=y 1381CONFIG_NFSD=y
1354# CONFIG_NFSD_V3 is not set 1382# CONFIG_NFSD_V3 is not set
1355CONFIG_NFSD_TCP=y 1383# CONFIG_NFSD_V4 is not set
1356CONFIG_ROOT_NFS=y 1384CONFIG_ROOT_NFS=y
1357CONFIG_LOCKD=y 1385CONFIG_LOCKD=y
1358CONFIG_LOCKD_V4=y 1386CONFIG_LOCKD_V4=y
@@ -1436,9 +1464,10 @@ CONFIG_NLS_UTF8=m
1436# Library routines 1464# Library routines
1437# 1465#
1438CONFIG_BITREVERSE=y 1466CONFIG_BITREVERSE=y
1467# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1439# CONFIG_CRC_CCITT is not set 1468# CONFIG_CRC_CCITT is not set
1440# CONFIG_CRC16 is not set 1469# CONFIG_CRC16 is not set
1441# CONFIG_CRC_ITU_T is not set 1470CONFIG_CRC_ITU_T=m
1442CONFIG_CRC32=y 1471CONFIG_CRC32=y
1443# CONFIG_CRC7 is not set 1472# CONFIG_CRC7 is not set
1444CONFIG_LIBCRC32C=m 1473CONFIG_LIBCRC32C=m
@@ -1447,6 +1476,7 @@ CONFIG_PLIST=y
1447CONFIG_HAS_IOMEM=y 1476CONFIG_HAS_IOMEM=y
1448CONFIG_HAS_IOPORT=y 1477CONFIG_HAS_IOPORT=y
1449CONFIG_HAS_DMA=y 1478CONFIG_HAS_DMA=y
1479CONFIG_HAVE_LMB=y
1450 1480
1451# 1481#
1452# Kernel hacking 1482# Kernel hacking
@@ -1454,6 +1484,7 @@ CONFIG_HAS_DMA=y
1454# CONFIG_PRINTK_TIME is not set 1484# CONFIG_PRINTK_TIME is not set
1455CONFIG_ENABLE_WARN_DEPRECATED=y 1485CONFIG_ENABLE_WARN_DEPRECATED=y
1456CONFIG_ENABLE_MUST_CHECK=y 1486CONFIG_ENABLE_MUST_CHECK=y
1487CONFIG_FRAME_WARN=1024
1457# CONFIG_MAGIC_SYSRQ is not set 1488# CONFIG_MAGIC_SYSRQ is not set
1458# CONFIG_UNUSED_SYMBOLS is not set 1489# CONFIG_UNUSED_SYMBOLS is not set
1459# CONFIG_DEBUG_FS is not set 1490# CONFIG_DEBUG_FS is not set
@@ -1464,6 +1495,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1464CONFIG_SCHED_DEBUG=y 1495CONFIG_SCHED_DEBUG=y
1465# CONFIG_SCHEDSTATS is not set 1496# CONFIG_SCHEDSTATS is not set
1466# CONFIG_TIMER_STATS is not set 1497# CONFIG_TIMER_STATS is not set
1498# CONFIG_DEBUG_OBJECTS is not set
1467# CONFIG_SLUB_DEBUG_ON is not set 1499# CONFIG_SLUB_DEBUG_ON is not set
1468# CONFIG_SLUB_STATS is not set 1500# CONFIG_SLUB_STATS is not set
1469# CONFIG_DEBUG_RT_MUTEXES is not set 1501# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1477,6 +1509,7 @@ CONFIG_SCHED_DEBUG=y
1477# CONFIG_DEBUG_BUGVERBOSE is not set 1509# CONFIG_DEBUG_BUGVERBOSE is not set
1478CONFIG_DEBUG_INFO=y 1510CONFIG_DEBUG_INFO=y
1479# CONFIG_DEBUG_VM is not set 1511# CONFIG_DEBUG_VM is not set
1512# CONFIG_DEBUG_WRITECOUNT is not set
1480# CONFIG_DEBUG_LIST is not set 1513# CONFIG_DEBUG_LIST is not set
1481# CONFIG_DEBUG_SG is not set 1514# CONFIG_DEBUG_SG is not set
1482# CONFIG_BOOT_PRINTK_DELAY is not set 1515# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1488,6 +1521,7 @@ CONFIG_DEBUG_INFO=y
1488# CONFIG_DEBUG_STACK_USAGE is not set 1521# CONFIG_DEBUG_STACK_USAGE is not set
1489# CONFIG_DEBUG_PAGEALLOC is not set 1522# CONFIG_DEBUG_PAGEALLOC is not set
1490# CONFIG_DEBUGGER is not set 1523# CONFIG_DEBUGGER is not set
1524# CONFIG_IRQSTACKS is not set
1491# CONFIG_BDI_SWITCH is not set 1525# CONFIG_BDI_SWITCH is not set
1492# CONFIG_PPC_EARLY_DEBUG is not set 1526# CONFIG_PPC_EARLY_DEBUG is not set
1493 1527
@@ -1498,52 +1532,82 @@ CONFIG_DEBUG_INFO=y
1498# CONFIG_SECURITY is not set 1532# CONFIG_SECURITY is not set
1499# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1533# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1500CONFIG_CRYPTO=y 1534CONFIG_CRYPTO=y
1535
1536#
1537# Crypto core or helper
1538#
1501CONFIG_CRYPTO_ALGAPI=y 1539CONFIG_CRYPTO_ALGAPI=y
1502CONFIG_CRYPTO_BLKCIPHER=y 1540CONFIG_CRYPTO_BLKCIPHER=y
1503# CONFIG_CRYPTO_SEQIV is not set
1504CONFIG_CRYPTO_HASH=y 1541CONFIG_CRYPTO_HASH=y
1505CONFIG_CRYPTO_MANAGER=y 1542CONFIG_CRYPTO_MANAGER=y
1543# CONFIG_CRYPTO_GF128MUL is not set
1544# CONFIG_CRYPTO_NULL is not set
1545# CONFIG_CRYPTO_CRYPTD is not set
1546# CONFIG_CRYPTO_AUTHENC is not set
1547# CONFIG_CRYPTO_TEST is not set
1548
1549#
1550# Authenticated Encryption with Associated Data
1551#
1552# CONFIG_CRYPTO_CCM is not set
1553# CONFIG_CRYPTO_GCM is not set
1554# CONFIG_CRYPTO_SEQIV is not set
1555
1556#
1557# Block modes
1558#
1559CONFIG_CRYPTO_CBC=y
1560# CONFIG_CRYPTO_CTR is not set
1561# CONFIG_CRYPTO_CTS is not set
1562# CONFIG_CRYPTO_ECB is not set
1563# CONFIG_CRYPTO_LRW is not set
1564CONFIG_CRYPTO_PCBC=m
1565# CONFIG_CRYPTO_XTS is not set
1566
1567#
1568# Hash modes
1569#
1506CONFIG_CRYPTO_HMAC=y 1570CONFIG_CRYPTO_HMAC=y
1507# CONFIG_CRYPTO_XCBC is not set 1571# CONFIG_CRYPTO_XCBC is not set
1508# CONFIG_CRYPTO_NULL is not set 1572
1573#
1574# Digest
1575#
1576# CONFIG_CRYPTO_CRC32C is not set
1509# CONFIG_CRYPTO_MD4 is not set 1577# CONFIG_CRYPTO_MD4 is not set
1510CONFIG_CRYPTO_MD5=y 1578CONFIG_CRYPTO_MD5=y
1579# CONFIG_CRYPTO_MICHAEL_MIC is not set
1511CONFIG_CRYPTO_SHA1=m 1580CONFIG_CRYPTO_SHA1=m
1512# CONFIG_CRYPTO_SHA256 is not set 1581# CONFIG_CRYPTO_SHA256 is not set
1513# CONFIG_CRYPTO_SHA512 is not set 1582# CONFIG_CRYPTO_SHA512 is not set
1514# CONFIG_CRYPTO_WP512 is not set
1515# CONFIG_CRYPTO_TGR192 is not set 1583# CONFIG_CRYPTO_TGR192 is not set
1516# CONFIG_CRYPTO_GF128MUL is not set 1584# CONFIG_CRYPTO_WP512 is not set
1517# CONFIG_CRYPTO_ECB is not set 1585
1518CONFIG_CRYPTO_CBC=y 1586#
1519CONFIG_CRYPTO_PCBC=m 1587# Ciphers
1520# CONFIG_CRYPTO_LRW is not set 1588#
1521# CONFIG_CRYPTO_XTS is not set
1522# CONFIG_CRYPTO_CTR is not set
1523# CONFIG_CRYPTO_GCM is not set
1524# CONFIG_CRYPTO_CCM is not set
1525# CONFIG_CRYPTO_CRYPTD is not set
1526CONFIG_CRYPTO_DES=y
1527# CONFIG_CRYPTO_FCRYPT is not set
1528# CONFIG_CRYPTO_BLOWFISH is not set
1529# CONFIG_CRYPTO_TWOFISH is not set
1530# CONFIG_CRYPTO_SERPENT is not set
1531# CONFIG_CRYPTO_AES is not set 1589# CONFIG_CRYPTO_AES is not set
1590# CONFIG_CRYPTO_ANUBIS is not set
1591# CONFIG_CRYPTO_ARC4 is not set
1592# CONFIG_CRYPTO_BLOWFISH is not set
1593# CONFIG_CRYPTO_CAMELLIA is not set
1532# CONFIG_CRYPTO_CAST5 is not set 1594# CONFIG_CRYPTO_CAST5 is not set
1533# CONFIG_CRYPTO_CAST6 is not set 1595# CONFIG_CRYPTO_CAST6 is not set
1534# CONFIG_CRYPTO_TEA is not set 1596CONFIG_CRYPTO_DES=y
1535# CONFIG_CRYPTO_ARC4 is not set 1597# CONFIG_CRYPTO_FCRYPT is not set
1536# CONFIG_CRYPTO_KHAZAD is not set 1598# CONFIG_CRYPTO_KHAZAD is not set
1537# CONFIG_CRYPTO_ANUBIS is not set
1538# CONFIG_CRYPTO_SEED is not set
1539# CONFIG_CRYPTO_SALSA20 is not set 1599# CONFIG_CRYPTO_SALSA20 is not set
1600# CONFIG_CRYPTO_SEED is not set
1601# CONFIG_CRYPTO_SERPENT is not set
1602# CONFIG_CRYPTO_TEA is not set
1603# CONFIG_CRYPTO_TWOFISH is not set
1604
1605#
1606# Compression
1607#
1540# CONFIG_CRYPTO_DEFLATE is not set 1608# CONFIG_CRYPTO_DEFLATE is not set
1541# CONFIG_CRYPTO_MICHAEL_MIC is not set
1542# CONFIG_CRYPTO_CRC32C is not set
1543# CONFIG_CRYPTO_CAMELLIA is not set
1544# CONFIG_CRYPTO_TEST is not set
1545# CONFIG_CRYPTO_AUTHENC is not set
1546# CONFIG_CRYPTO_LZO is not set 1609# CONFIG_CRYPTO_LZO is not set
1547CONFIG_CRYPTO_HW=y 1610CONFIG_CRYPTO_HW=y
1548# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1611# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1549# CONFIG_PPC_CLOCK is not set 1612# CONFIG_PPC_CLOCK is not set
1613# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig b/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig
index a469fe918816..b09f0032a10b 100644
--- a/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig
+++ b/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:30 2008 4# Mon Jun 9 08:52:36 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90CONFIG_KALLSYMS=y 93CONFIG_KALLSYMS=y
91# CONFIG_KALLSYMS_ALL is not set 94# CONFIG_KALLSYMS_ALL is not set
92# CONFIG_KALLSYMS_EXTRA_PASS is not set 95# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -113,6 +116,7 @@ CONFIG_SLUB=y
113CONFIG_HAVE_OPROFILE=y 116CONFIG_HAVE_OPROFILE=y
114CONFIG_HAVE_KPROBES=y 117CONFIG_HAVE_KPROBES=y
115CONFIG_HAVE_KRETPROBES=y 118CONFIG_HAVE_KRETPROBES=y
119# CONFIG_HAVE_DMA_ATTRS is not set
116CONFIG_PROC_PAGE_MONITOR=y 120CONFIG_PROC_PAGE_MONITOR=y
117CONFIG_SLABINFO=y 121CONFIG_SLABINFO=y
118CONFIG_RT_MUTEXES=y 122CONFIG_RT_MUTEXES=y
@@ -153,6 +157,7 @@ CONFIG_MPC85xx=y
153CONFIG_MPC85xx_CDS=y 157CONFIG_MPC85xx_CDS=y
154# CONFIG_MPC85xx_MDS is not set 158# CONFIG_MPC85xx_MDS is not set
155# CONFIG_MPC85xx_DS is not set 159# CONFIG_MPC85xx_DS is not set
160# CONFIG_KSI8560 is not set
156# CONFIG_STX_GP3 is not set 161# CONFIG_STX_GP3 is not set
157# CONFIG_TQM8540 is not set 162# CONFIG_TQM8540 is not set
158# CONFIG_TQM8541 is not set 163# CONFIG_TQM8541 is not set
@@ -208,11 +213,13 @@ CONFIG_FLATMEM=y
208CONFIG_FLAT_NODE_MEM_MAP=y 213CONFIG_FLAT_NODE_MEM_MAP=y
209# CONFIG_SPARSEMEM_STATIC is not set 214# CONFIG_SPARSEMEM_STATIC is not set
210# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 215# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
216CONFIG_PAGEFLAGS_EXTENDED=y
211CONFIG_SPLIT_PTLOCK_CPUS=4 217CONFIG_SPLIT_PTLOCK_CPUS=4
212# CONFIG_RESOURCES_64BIT is not set 218# CONFIG_RESOURCES_64BIT is not set
213CONFIG_ZONE_DMA_FLAG=1 219CONFIG_ZONE_DMA_FLAG=1
214CONFIG_BOUNCE=y 220CONFIG_BOUNCE=y
215CONFIG_VIRT_TO_BUS=y 221CONFIG_VIRT_TO_BUS=y
222CONFIG_FORCE_MAX_ZONEORDER=11
216CONFIG_PROC_DEVICETREE=y 223CONFIG_PROC_DEVICETREE=y
217# CONFIG_CMDLINE_BOOL is not set 224# CONFIG_CMDLINE_BOOL is not set
218# CONFIG_PM is not set 225# CONFIG_PM is not set
@@ -236,6 +243,7 @@ CONFIG_PCI_LEGACY=y
236# CONFIG_PCI_DEBUG is not set 243# CONFIG_PCI_DEBUG is not set
237# CONFIG_PCCARD is not set 244# CONFIG_PCCARD is not set
238# CONFIG_HOTPLUG_PCI is not set 245# CONFIG_HOTPLUG_PCI is not set
246# CONFIG_HAS_RAPIDIO is not set
239 247
240# 248#
241# Advanced setup 249# Advanced setup
@@ -245,11 +253,12 @@ CONFIG_PCI_LEGACY=y
245# 253#
246# Default settings for advanced configuration options are used 254# Default settings for advanced configuration options are used
247# 255#
248CONFIG_HIGHMEM_START=0xfe000000
249CONFIG_LOWMEM_SIZE=0x30000000 256CONFIG_LOWMEM_SIZE=0x30000000
257CONFIG_PAGE_OFFSET=0xc0000000
250CONFIG_KERNEL_START=0xc0000000 258CONFIG_KERNEL_START=0xc0000000
259CONFIG_PHYSICAL_START=0x00000000
260CONFIG_PHYSICAL_ALIGN=0x10000000
251CONFIG_TASK_SIZE=0xc0000000 261CONFIG_TASK_SIZE=0xc0000000
252CONFIG_BOOT_LOAD=0x00800000
253 262
254# 263#
255# Networking 264# Networking
@@ -297,8 +306,6 @@ CONFIG_TCP_CONG_CUBIC=y
297CONFIG_DEFAULT_TCP_CONG="cubic" 306CONFIG_DEFAULT_TCP_CONG="cubic"
298# CONFIG_TCP_MD5SIG is not set 307# CONFIG_TCP_MD5SIG is not set
299# CONFIG_IPV6 is not set 308# CONFIG_IPV6 is not set
300# CONFIG_INET6_XFRM_TUNNEL is not set
301# CONFIG_INET6_TUNNEL is not set
302# CONFIG_NETWORK_SECMARK is not set 309# CONFIG_NETWORK_SECMARK is not set
303# CONFIG_NETFILTER is not set 310# CONFIG_NETFILTER is not set
304# CONFIG_IP_DCCP is not set 311# CONFIG_IP_DCCP is not set
@@ -437,7 +444,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
437CONFIG_BLK_DEV_VIA82CXXX=y 444CONFIG_BLK_DEV_VIA82CXXX=y
438# CONFIG_BLK_DEV_TC86C001 is not set 445# CONFIG_BLK_DEV_TC86C001 is not set
439CONFIG_BLK_DEV_IDEDMA=y 446CONFIG_BLK_DEV_IDEDMA=y
440CONFIG_IDE_ARCH_OBSOLETE_INIT=y 447# CONFIG_BLK_DEV_HD_ONLY is not set
441# CONFIG_BLK_DEV_HD is not set 448# CONFIG_BLK_DEV_HD is not set
442 449
443# 450#
@@ -515,7 +522,6 @@ CONFIG_E1000_NAPI=y
515# CONFIG_SIS190 is not set 522# CONFIG_SIS190 is not set
516# CONFIG_SKGE is not set 523# CONFIG_SKGE is not set
517# CONFIG_SKY2 is not set 524# CONFIG_SKY2 is not set
518# CONFIG_SK98LIN is not set
519# CONFIG_VIA_VELOCITY is not set 525# CONFIG_VIA_VELOCITY is not set
520# CONFIG_TIGON3 is not set 526# CONFIG_TIGON3 is not set
521# CONFIG_BNX2 is not set 527# CONFIG_BNX2 is not set
@@ -535,6 +541,7 @@ CONFIG_NETDEV_10000=y
535# CONFIG_MLX4_CORE is not set 541# CONFIG_MLX4_CORE is not set
536# CONFIG_TEHUTI is not set 542# CONFIG_TEHUTI is not set
537# CONFIG_BNX2X is not set 543# CONFIG_BNX2X is not set
544# CONFIG_SFC is not set
538# CONFIG_TR is not set 545# CONFIG_TR is not set
539 546
540# 547#
@@ -542,6 +549,7 @@ CONFIG_NETDEV_10000=y
542# 549#
543# CONFIG_WLAN_PRE80211 is not set 550# CONFIG_WLAN_PRE80211 is not set
544# CONFIG_WLAN_80211 is not set 551# CONFIG_WLAN_80211 is not set
552# CONFIG_IWLWIFI_LEDS is not set
545# CONFIG_WAN is not set 553# CONFIG_WAN is not set
546# CONFIG_FDDI is not set 554# CONFIG_FDDI is not set
547# CONFIG_HIPPI is not set 555# CONFIG_HIPPI is not set
@@ -588,6 +596,7 @@ CONFIG_INPUT=y
588# Character devices 596# Character devices
589# 597#
590# CONFIG_VT is not set 598# CONFIG_VT is not set
599CONFIG_DEVKMEM=y
591# CONFIG_SERIAL_NONSTANDARD is not set 600# CONFIG_SERIAL_NONSTANDARD is not set
592# CONFIG_NOZOMI is not set 601# CONFIG_NOZOMI is not set
593 602
@@ -624,12 +633,7 @@ CONFIG_GEN_RTC=y
624# CONFIG_TCG_TPM is not set 633# CONFIG_TCG_TPM is not set
625CONFIG_DEVPORT=y 634CONFIG_DEVPORT=y
626# CONFIG_I2C is not set 635# CONFIG_I2C is not set
627
628#
629# SPI support
630#
631# CONFIG_SPI is not set 636# CONFIG_SPI is not set
632# CONFIG_SPI_MASTER is not set
633# CONFIG_W1 is not set 637# CONFIG_W1 is not set
634# CONFIG_POWER_SUPPLY is not set 638# CONFIG_POWER_SUPPLY is not set
635CONFIG_HWMON=y 639CONFIG_HWMON=y
@@ -662,12 +666,22 @@ CONFIG_SSB_POSSIBLE=y
662# Multifunction device drivers 666# Multifunction device drivers
663# 667#
664# CONFIG_MFD_SM501 is not set 668# CONFIG_MFD_SM501 is not set
669# CONFIG_HTC_PASIC3 is not set
665 670
666# 671#
667# Multimedia devices 672# Multimedia devices
668# 673#
674
675#
676# Multimedia core support
677#
669# CONFIG_VIDEO_DEV is not set 678# CONFIG_VIDEO_DEV is not set
670# CONFIG_DVB_CORE is not set 679# CONFIG_DVB_CORE is not set
680# CONFIG_VIDEO_MEDIA is not set
681
682#
683# Multimedia drivers
684#
671CONFIG_DAB=y 685CONFIG_DAB=y
672 686
673# 687#
@@ -698,6 +712,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
698CONFIG_USB_ARCH_HAS_OHCI=y 712CONFIG_USB_ARCH_HAS_OHCI=y
699CONFIG_USB_ARCH_HAS_EHCI=y 713CONFIG_USB_ARCH_HAS_EHCI=y
700# CONFIG_USB is not set 714# CONFIG_USB is not set
715# CONFIG_USB_OTG_WHITELIST is not set
716# CONFIG_USB_OTG_BLACKLIST_HUB is not set
701 717
702# 718#
703# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 719# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -706,14 +722,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
706# CONFIG_MMC is not set 722# CONFIG_MMC is not set
707# CONFIG_MEMSTICK is not set 723# CONFIG_MEMSTICK is not set
708# CONFIG_NEW_LEDS is not set 724# CONFIG_NEW_LEDS is not set
725# CONFIG_ACCESSIBILITY is not set
709# CONFIG_INFINIBAND is not set 726# CONFIG_INFINIBAND is not set
710# CONFIG_EDAC is not set 727# CONFIG_EDAC is not set
711# CONFIG_RTC_CLASS is not set 728# CONFIG_RTC_CLASS is not set
712# CONFIG_DMADEVICES is not set 729# CONFIG_DMADEVICES is not set
713
714#
715# Userspace I/O
716#
717# CONFIG_UIO is not set 730# CONFIG_UIO is not set
718 731
719# 732#
@@ -733,7 +746,6 @@ CONFIG_FS_MBCACHE=y
733# CONFIG_JFS_FS is not set 746# CONFIG_JFS_FS is not set
734# CONFIG_FS_POSIX_ACL is not set 747# CONFIG_FS_POSIX_ACL is not set
735# CONFIG_XFS_FS is not set 748# CONFIG_XFS_FS is not set
736# CONFIG_GFS2_FS is not set
737# CONFIG_OCFS2_FS is not set 749# CONFIG_OCFS2_FS is not set
738CONFIG_DNOTIFY=y 750CONFIG_DNOTIFY=y
739CONFIG_INOTIFY=y 751CONFIG_INOTIFY=y
@@ -790,7 +802,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
790CONFIG_NFS_FS=y 802CONFIG_NFS_FS=y
791# CONFIG_NFS_V3 is not set 803# CONFIG_NFS_V3 is not set
792# CONFIG_NFS_V4 is not set 804# CONFIG_NFS_V4 is not set
793# CONFIG_NFS_DIRECTIO is not set
794# CONFIG_NFSD is not set 805# CONFIG_NFSD is not set
795CONFIG_ROOT_NFS=y 806CONFIG_ROOT_NFS=y
796CONFIG_LOCKD=y 807CONFIG_LOCKD=y
@@ -829,6 +840,7 @@ CONFIG_PARTITION_ADVANCED=y
829# Library routines 840# Library routines
830# 841#
831CONFIG_BITREVERSE=y 842CONFIG_BITREVERSE=y
843# CONFIG_GENERIC_FIND_FIRST_BIT is not set
832# CONFIG_CRC_CCITT is not set 844# CONFIG_CRC_CCITT is not set
833# CONFIG_CRC16 is not set 845# CONFIG_CRC16 is not set
834# CONFIG_CRC_ITU_T is not set 846# CONFIG_CRC_ITU_T is not set
@@ -839,6 +851,7 @@ CONFIG_PLIST=y
839CONFIG_HAS_IOMEM=y 851CONFIG_HAS_IOMEM=y
840CONFIG_HAS_IOPORT=y 852CONFIG_HAS_IOPORT=y
841CONFIG_HAS_DMA=y 853CONFIG_HAS_DMA=y
854CONFIG_HAVE_LMB=y
842 855
843# 856#
844# Kernel hacking 857# Kernel hacking
@@ -846,6 +859,7 @@ CONFIG_HAS_DMA=y
846# CONFIG_PRINTK_TIME is not set 859# CONFIG_PRINTK_TIME is not set
847CONFIG_ENABLE_WARN_DEPRECATED=y 860CONFIG_ENABLE_WARN_DEPRECATED=y
848CONFIG_ENABLE_MUST_CHECK=y 861CONFIG_ENABLE_MUST_CHECK=y
862CONFIG_FRAME_WARN=1024
849# CONFIG_MAGIC_SYSRQ is not set 863# CONFIG_MAGIC_SYSRQ is not set
850# CONFIG_UNUSED_SYMBOLS is not set 864# CONFIG_UNUSED_SYMBOLS is not set
851# CONFIG_DEBUG_FS is not set 865# CONFIG_DEBUG_FS is not set
@@ -856,6 +870,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
856CONFIG_SCHED_DEBUG=y 870CONFIG_SCHED_DEBUG=y
857# CONFIG_SCHEDSTATS is not set 871# CONFIG_SCHEDSTATS is not set
858# CONFIG_TIMER_STATS is not set 872# CONFIG_TIMER_STATS is not set
873# CONFIG_DEBUG_OBJECTS is not set
859# CONFIG_SLUB_DEBUG_ON is not set 874# CONFIG_SLUB_DEBUG_ON is not set
860# CONFIG_SLUB_STATS is not set 875# CONFIG_SLUB_STATS is not set
861# CONFIG_DEBUG_RT_MUTEXES is not set 876# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -868,6 +883,7 @@ CONFIG_DEBUG_MUTEXES=y
868# CONFIG_DEBUG_BUGVERBOSE is not set 883# CONFIG_DEBUG_BUGVERBOSE is not set
869# CONFIG_DEBUG_INFO is not set 884# CONFIG_DEBUG_INFO is not set
870# CONFIG_DEBUG_VM is not set 885# CONFIG_DEBUG_VM is not set
886# CONFIG_DEBUG_WRITECOUNT is not set
871# CONFIG_DEBUG_LIST is not set 887# CONFIG_DEBUG_LIST is not set
872# CONFIG_DEBUG_SG is not set 888# CONFIG_DEBUG_SG is not set
873# CONFIG_BOOT_PRINTK_DELAY is not set 889# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -878,6 +894,7 @@ CONFIG_DEBUG_MUTEXES=y
878# CONFIG_DEBUG_STACK_USAGE is not set 894# CONFIG_DEBUG_STACK_USAGE is not set
879# CONFIG_DEBUG_PAGEALLOC is not set 895# CONFIG_DEBUG_PAGEALLOC is not set
880# CONFIG_DEBUGGER is not set 896# CONFIG_DEBUGGER is not set
897# CONFIG_IRQSTACKS is not set
881# CONFIG_BDI_SWITCH is not set 898# CONFIG_BDI_SWITCH is not set
882# CONFIG_PPC_EARLY_DEBUG is not set 899# CONFIG_PPC_EARLY_DEBUG is not set
883 900
@@ -888,48 +905,78 @@ CONFIG_DEBUG_MUTEXES=y
888# CONFIG_SECURITY is not set 905# CONFIG_SECURITY is not set
889# CONFIG_SECURITY_FILE_CAPABILITIES is not set 906# CONFIG_SECURITY_FILE_CAPABILITIES is not set
890CONFIG_CRYPTO=y 907CONFIG_CRYPTO=y
891# CONFIG_CRYPTO_SEQIV is not set 908
909#
910# Crypto core or helper
911#
892# CONFIG_CRYPTO_MANAGER is not set 912# CONFIG_CRYPTO_MANAGER is not set
913# CONFIG_CRYPTO_GF128MUL is not set
914# CONFIG_CRYPTO_NULL is not set
915# CONFIG_CRYPTO_CRYPTD is not set
916# CONFIG_CRYPTO_AUTHENC is not set
917
918#
919# Authenticated Encryption with Associated Data
920#
921# CONFIG_CRYPTO_CCM is not set
922# CONFIG_CRYPTO_GCM is not set
923# CONFIG_CRYPTO_SEQIV is not set
924
925#
926# Block modes
927#
928# CONFIG_CRYPTO_CBC is not set
929# CONFIG_CRYPTO_CTR is not set
930# CONFIG_CRYPTO_CTS is not set
931# CONFIG_CRYPTO_ECB is not set
932# CONFIG_CRYPTO_LRW is not set
933# CONFIG_CRYPTO_PCBC is not set
934# CONFIG_CRYPTO_XTS is not set
935
936#
937# Hash modes
938#
893# CONFIG_CRYPTO_HMAC is not set 939# CONFIG_CRYPTO_HMAC is not set
894# CONFIG_CRYPTO_XCBC is not set 940# CONFIG_CRYPTO_XCBC is not set
895# CONFIG_CRYPTO_NULL is not set 941
942#
943# Digest
944#
945# CONFIG_CRYPTO_CRC32C is not set
896# CONFIG_CRYPTO_MD4 is not set 946# CONFIG_CRYPTO_MD4 is not set
897# CONFIG_CRYPTO_MD5 is not set 947# CONFIG_CRYPTO_MD5 is not set
948# CONFIG_CRYPTO_MICHAEL_MIC is not set
898# CONFIG_CRYPTO_SHA1 is not set 949# CONFIG_CRYPTO_SHA1 is not set
899# CONFIG_CRYPTO_SHA256 is not set 950# CONFIG_CRYPTO_SHA256 is not set
900# CONFIG_CRYPTO_SHA512 is not set 951# CONFIG_CRYPTO_SHA512 is not set
901# CONFIG_CRYPTO_WP512 is not set
902# CONFIG_CRYPTO_TGR192 is not set 952# CONFIG_CRYPTO_TGR192 is not set
903# CONFIG_CRYPTO_GF128MUL is not set 953# CONFIG_CRYPTO_WP512 is not set
904# CONFIG_CRYPTO_ECB is not set 954
905# CONFIG_CRYPTO_CBC is not set 955#
906# CONFIG_CRYPTO_PCBC is not set 956# Ciphers
907# CONFIG_CRYPTO_LRW is not set 957#
908# CONFIG_CRYPTO_XTS is not set
909# CONFIG_CRYPTO_CTR is not set
910# CONFIG_CRYPTO_GCM is not set
911# CONFIG_CRYPTO_CCM is not set
912# CONFIG_CRYPTO_CRYPTD is not set
913# CONFIG_CRYPTO_DES is not set
914# CONFIG_CRYPTO_FCRYPT is not set
915# CONFIG_CRYPTO_BLOWFISH is not set
916# CONFIG_CRYPTO_TWOFISH is not set
917# CONFIG_CRYPTO_SERPENT is not set
918# CONFIG_CRYPTO_AES is not set 958# CONFIG_CRYPTO_AES is not set
959# CONFIG_CRYPTO_ANUBIS is not set
960# CONFIG_CRYPTO_ARC4 is not set
961# CONFIG_CRYPTO_BLOWFISH is not set
962# CONFIG_CRYPTO_CAMELLIA is not set
919# CONFIG_CRYPTO_CAST5 is not set 963# CONFIG_CRYPTO_CAST5 is not set
920# CONFIG_CRYPTO_CAST6 is not set 964# CONFIG_CRYPTO_CAST6 is not set
921# CONFIG_CRYPTO_TEA is not set 965# CONFIG_CRYPTO_DES is not set
922# CONFIG_CRYPTO_ARC4 is not set 966# CONFIG_CRYPTO_FCRYPT is not set
923# CONFIG_CRYPTO_KHAZAD is not set 967# CONFIG_CRYPTO_KHAZAD is not set
924# CONFIG_CRYPTO_ANUBIS is not set
925# CONFIG_CRYPTO_SEED is not set
926# CONFIG_CRYPTO_SALSA20 is not set 968# CONFIG_CRYPTO_SALSA20 is not set
969# CONFIG_CRYPTO_SEED is not set
970# CONFIG_CRYPTO_SERPENT is not set
971# CONFIG_CRYPTO_TEA is not set
972# CONFIG_CRYPTO_TWOFISH is not set
973
974#
975# Compression
976#
927# CONFIG_CRYPTO_DEFLATE is not set 977# CONFIG_CRYPTO_DEFLATE is not set
928# CONFIG_CRYPTO_MICHAEL_MIC is not set
929# CONFIG_CRYPTO_CRC32C is not set
930# CONFIG_CRYPTO_CAMELLIA is not set
931# CONFIG_CRYPTO_AUTHENC is not set
932# CONFIG_CRYPTO_LZO is not set 978# CONFIG_CRYPTO_LZO is not set
933CONFIG_CRYPTO_HW=y 979CONFIG_CRYPTO_HW=y
934# CONFIG_CRYPTO_DEV_HIFN_795X is not set 980# CONFIG_CRYPTO_DEV_HIFN_795X is not set
935# CONFIG_PPC_CLOCK is not set 981# CONFIG_PPC_CLOCK is not set
982# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/sbc8548_defconfig b/arch/powerpc/configs/85xx/sbc8548_defconfig
index 67f67978c742..24f7f44b4821 100644
--- a/arch/powerpc/configs/85xx/sbc8548_defconfig
+++ b/arch/powerpc/configs/85xx/sbc8548_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:39 2008 4# Mon Jun 9 08:52:37 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90CONFIG_KALLSYMS=y 93CONFIG_KALLSYMS=y
91# CONFIG_KALLSYMS_EXTRA_PASS is not set 94# CONFIG_KALLSYMS_EXTRA_PASS is not set
92CONFIG_HOTPLUG=y 95CONFIG_HOTPLUG=y
@@ -111,6 +114,7 @@ CONFIG_SLAB=y
111CONFIG_HAVE_OPROFILE=y 114CONFIG_HAVE_OPROFILE=y
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
@@ -151,6 +155,7 @@ CONFIG_MPC85xx=y
151# CONFIG_MPC85xx_CDS is not set 155# CONFIG_MPC85xx_CDS is not set
152# CONFIG_MPC85xx_MDS is not set 156# CONFIG_MPC85xx_MDS is not set
153# CONFIG_MPC85xx_DS is not set 157# CONFIG_MPC85xx_DS is not set
158# CONFIG_KSI8560 is not set
154# CONFIG_STX_GP3 is not set 159# CONFIG_STX_GP3 is not set
155# CONFIG_TQM8540 is not set 160# CONFIG_TQM8540 is not set
156# CONFIG_TQM8541 is not set 161# CONFIG_TQM8541 is not set
@@ -206,11 +211,13 @@ CONFIG_FLATMEM=y
206CONFIG_FLAT_NODE_MEM_MAP=y 211CONFIG_FLAT_NODE_MEM_MAP=y
207# CONFIG_SPARSEMEM_STATIC is not set 212# CONFIG_SPARSEMEM_STATIC is not set
208# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 213# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
214CONFIG_PAGEFLAGS_EXTENDED=y
209CONFIG_SPLIT_PTLOCK_CPUS=4 215CONFIG_SPLIT_PTLOCK_CPUS=4
210# CONFIG_RESOURCES_64BIT is not set 216# CONFIG_RESOURCES_64BIT is not set
211CONFIG_ZONE_DMA_FLAG=1 217CONFIG_ZONE_DMA_FLAG=1
212CONFIG_BOUNCE=y 218CONFIG_BOUNCE=y
213CONFIG_VIRT_TO_BUS=y 219CONFIG_VIRT_TO_BUS=y
220CONFIG_FORCE_MAX_ZONEORDER=11
214CONFIG_PROC_DEVICETREE=y 221CONFIG_PROC_DEVICETREE=y
215# CONFIG_CMDLINE_BOOL is not set 222# CONFIG_CMDLINE_BOOL is not set
216# CONFIG_PM is not set 223# CONFIG_PM is not set
@@ -233,6 +240,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
233CONFIG_PCI_LEGACY=y 240CONFIG_PCI_LEGACY=y
234# CONFIG_PCCARD is not set 241# CONFIG_PCCARD is not set
235# CONFIG_HOTPLUG_PCI is not set 242# CONFIG_HOTPLUG_PCI is not set
243# CONFIG_HAS_RAPIDIO is not set
236 244
237# 245#
238# Advanced setup 246# Advanced setup
@@ -242,11 +250,12 @@ CONFIG_PCI_LEGACY=y
242# 250#
243# Default settings for advanced configuration options are used 251# Default settings for advanced configuration options are used
244# 252#
245CONFIG_HIGHMEM_START=0xfe000000
246CONFIG_LOWMEM_SIZE=0x30000000 253CONFIG_LOWMEM_SIZE=0x30000000
254CONFIG_PAGE_OFFSET=0xc0000000
247CONFIG_KERNEL_START=0xc0000000 255CONFIG_KERNEL_START=0xc0000000
256CONFIG_PHYSICAL_START=0x00000000
257CONFIG_PHYSICAL_ALIGN=0x10000000
248CONFIG_TASK_SIZE=0xc0000000 258CONFIG_TASK_SIZE=0xc0000000
249CONFIG_BOOT_LOAD=0x00800000
250 259
251# 260#
252# Networking 261# Networking
@@ -294,8 +303,6 @@ CONFIG_TCP_CONG_CUBIC=y
294CONFIG_DEFAULT_TCP_CONG="cubic" 303CONFIG_DEFAULT_TCP_CONG="cubic"
295# CONFIG_TCP_MD5SIG is not set 304# CONFIG_TCP_MD5SIG is not set
296# CONFIG_IPV6 is not set 305# CONFIG_IPV6 is not set
297# CONFIG_INET6_XFRM_TUNNEL is not set
298# CONFIG_INET6_TUNNEL is not set
299# CONFIG_NETWORK_SECMARK is not set 306# CONFIG_NETWORK_SECMARK is not set
300# CONFIG_NETFILTER is not set 307# CONFIG_NETFILTER is not set
301# CONFIG_IP_DCCP is not set 308# CONFIG_IP_DCCP is not set
@@ -449,7 +456,6 @@ CONFIG_NETDEV_1000=y
449# CONFIG_SIS190 is not set 456# CONFIG_SIS190 is not set
450# CONFIG_SKGE is not set 457# CONFIG_SKGE is not set
451# CONFIG_SKY2 is not set 458# CONFIG_SKY2 is not set
452# CONFIG_SK98LIN is not set
453# CONFIG_VIA_VELOCITY is not set 459# CONFIG_VIA_VELOCITY is not set
454# CONFIG_TIGON3 is not set 460# CONFIG_TIGON3 is not set
455# CONFIG_BNX2 is not set 461# CONFIG_BNX2 is not set
@@ -469,6 +475,7 @@ CONFIG_NETDEV_10000=y
469# CONFIG_MLX4_CORE is not set 475# CONFIG_MLX4_CORE is not set
470# CONFIG_TEHUTI is not set 476# CONFIG_TEHUTI is not set
471# CONFIG_BNX2X is not set 477# CONFIG_BNX2X is not set
478# CONFIG_SFC is not set
472# CONFIG_TR is not set 479# CONFIG_TR is not set
473 480
474# 481#
@@ -476,6 +483,7 @@ CONFIG_NETDEV_10000=y
476# 483#
477# CONFIG_WLAN_PRE80211 is not set 484# CONFIG_WLAN_PRE80211 is not set
478# CONFIG_WLAN_80211 is not set 485# CONFIG_WLAN_80211 is not set
486# CONFIG_IWLWIFI_LEDS is not set
479# CONFIG_WAN is not set 487# CONFIG_WAN is not set
480# CONFIG_FDDI is not set 488# CONFIG_FDDI is not set
481# CONFIG_HIPPI is not set 489# CONFIG_HIPPI is not set
@@ -522,6 +530,7 @@ CONFIG_INPUT=y
522# Character devices 530# Character devices
523# 531#
524# CONFIG_VT is not set 532# CONFIG_VT is not set
533CONFIG_DEVKMEM=y
525# CONFIG_SERIAL_NONSTANDARD is not set 534# CONFIG_SERIAL_NONSTANDARD is not set
526# CONFIG_NOZOMI is not set 535# CONFIG_NOZOMI is not set
527 536
@@ -558,12 +567,7 @@ CONFIG_GEN_RTC=y
558# CONFIG_TCG_TPM is not set 567# CONFIG_TCG_TPM is not set
559CONFIG_DEVPORT=y 568CONFIG_DEVPORT=y
560# CONFIG_I2C is not set 569# CONFIG_I2C is not set
561
562#
563# SPI support
564#
565# CONFIG_SPI is not set 570# CONFIG_SPI is not set
566# CONFIG_SPI_MASTER is not set
567# CONFIG_W1 is not set 571# CONFIG_W1 is not set
568# CONFIG_POWER_SUPPLY is not set 572# CONFIG_POWER_SUPPLY is not set
569CONFIG_HWMON=y 573CONFIG_HWMON=y
@@ -596,12 +600,22 @@ CONFIG_SSB_POSSIBLE=y
596# Multifunction device drivers 600# Multifunction device drivers
597# 601#
598# CONFIG_MFD_SM501 is not set 602# CONFIG_MFD_SM501 is not set
603# CONFIG_HTC_PASIC3 is not set
599 604
600# 605#
601# Multimedia devices 606# Multimedia devices
602# 607#
608
609#
610# Multimedia core support
611#
603# CONFIG_VIDEO_DEV is not set 612# CONFIG_VIDEO_DEV is not set
604# CONFIG_DVB_CORE is not set 613# CONFIG_DVB_CORE is not set
614# CONFIG_VIDEO_MEDIA is not set
615
616#
617# Multimedia drivers
618#
605CONFIG_DAB=y 619CONFIG_DAB=y
606 620
607# 621#
@@ -628,14 +642,11 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
628# CONFIG_MMC is not set 642# CONFIG_MMC is not set
629# CONFIG_MEMSTICK is not set 643# CONFIG_MEMSTICK is not set
630# CONFIG_NEW_LEDS is not set 644# CONFIG_NEW_LEDS is not set
645# CONFIG_ACCESSIBILITY is not set
631# CONFIG_INFINIBAND is not set 646# CONFIG_INFINIBAND is not set
632# CONFIG_EDAC is not set 647# CONFIG_EDAC is not set
633# CONFIG_RTC_CLASS is not set 648# CONFIG_RTC_CLASS is not set
634# CONFIG_DMADEVICES is not set 649# CONFIG_DMADEVICES is not set
635
636#
637# Userspace I/O
638#
639# CONFIG_UIO is not set 650# CONFIG_UIO is not set
640 651
641# 652#
@@ -648,7 +659,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
648# CONFIG_JFS_FS is not set 659# CONFIG_JFS_FS is not set
649# CONFIG_FS_POSIX_ACL is not set 660# CONFIG_FS_POSIX_ACL is not set
650# CONFIG_XFS_FS is not set 661# CONFIG_XFS_FS is not set
651# CONFIG_GFS2_FS is not set
652# CONFIG_OCFS2_FS is not set 662# CONFIG_OCFS2_FS is not set
653CONFIG_DNOTIFY=y 663CONFIG_DNOTIFY=y
654CONFIG_INOTIFY=y 664CONFIG_INOTIFY=y
@@ -705,7 +715,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
705CONFIG_NFS_FS=y 715CONFIG_NFS_FS=y
706# CONFIG_NFS_V3 is not set 716# CONFIG_NFS_V3 is not set
707# CONFIG_NFS_V4 is not set 717# CONFIG_NFS_V4 is not set
708# CONFIG_NFS_DIRECTIO is not set
709# CONFIG_NFSD is not set 718# CONFIG_NFSD is not set
710CONFIG_ROOT_NFS=y 719CONFIG_ROOT_NFS=y
711CONFIG_LOCKD=y 720CONFIG_LOCKD=y
@@ -732,6 +741,7 @@ CONFIG_MSDOS_PARTITION=y
732# Library routines 741# Library routines
733# 742#
734CONFIG_BITREVERSE=y 743CONFIG_BITREVERSE=y
744# CONFIG_GENERIC_FIND_FIRST_BIT is not set
735# CONFIG_CRC_CCITT is not set 745# CONFIG_CRC_CCITT is not set
736# CONFIG_CRC16 is not set 746# CONFIG_CRC16 is not set
737# CONFIG_CRC_ITU_T is not set 747# CONFIG_CRC_ITU_T is not set
@@ -742,6 +752,7 @@ CONFIG_PLIST=y
742CONFIG_HAS_IOMEM=y 752CONFIG_HAS_IOMEM=y
743CONFIG_HAS_IOPORT=y 753CONFIG_HAS_IOPORT=y
744CONFIG_HAS_DMA=y 754CONFIG_HAS_DMA=y
755CONFIG_HAVE_LMB=y
745 756
746# 757#
747# Kernel hacking 758# Kernel hacking
@@ -749,6 +760,7 @@ CONFIG_HAS_DMA=y
749# CONFIG_PRINTK_TIME is not set 760# CONFIG_PRINTK_TIME is not set
750CONFIG_ENABLE_WARN_DEPRECATED=y 761CONFIG_ENABLE_WARN_DEPRECATED=y
751CONFIG_ENABLE_MUST_CHECK=y 762CONFIG_ENABLE_MUST_CHECK=y
763CONFIG_FRAME_WARN=1024
752# CONFIG_MAGIC_SYSRQ is not set 764# CONFIG_MAGIC_SYSRQ is not set
753# CONFIG_UNUSED_SYMBOLS is not set 765# CONFIG_UNUSED_SYMBOLS is not set
754# CONFIG_DEBUG_FS is not set 766# CONFIG_DEBUG_FS is not set
@@ -756,6 +768,7 @@ CONFIG_ENABLE_MUST_CHECK=y
756# CONFIG_DEBUG_KERNEL is not set 768# CONFIG_DEBUG_KERNEL is not set
757# CONFIG_DEBUG_BUGVERBOSE is not set 769# CONFIG_DEBUG_BUGVERBOSE is not set
758# CONFIG_SAMPLES is not set 770# CONFIG_SAMPLES is not set
771# CONFIG_IRQSTACKS is not set
759# CONFIG_PPC_EARLY_DEBUG is not set 772# CONFIG_PPC_EARLY_DEBUG is not set
760 773
761# 774#
@@ -765,48 +778,78 @@ CONFIG_ENABLE_MUST_CHECK=y
765# CONFIG_SECURITY is not set 778# CONFIG_SECURITY is not set
766# CONFIG_SECURITY_FILE_CAPABILITIES is not set 779# CONFIG_SECURITY_FILE_CAPABILITIES is not set
767CONFIG_CRYPTO=y 780CONFIG_CRYPTO=y
768# CONFIG_CRYPTO_SEQIV is not set 781
782#
783# Crypto core or helper
784#
769# CONFIG_CRYPTO_MANAGER is not set 785# CONFIG_CRYPTO_MANAGER is not set
786# CONFIG_CRYPTO_GF128MUL is not set
787# CONFIG_CRYPTO_NULL is not set
788# CONFIG_CRYPTO_CRYPTD is not set
789# CONFIG_CRYPTO_AUTHENC is not set
790
791#
792# Authenticated Encryption with Associated Data
793#
794# CONFIG_CRYPTO_CCM is not set
795# CONFIG_CRYPTO_GCM is not set
796# CONFIG_CRYPTO_SEQIV is not set
797
798#
799# Block modes
800#
801# CONFIG_CRYPTO_CBC is not set
802# CONFIG_CRYPTO_CTR is not set
803# CONFIG_CRYPTO_CTS is not set
804# CONFIG_CRYPTO_ECB is not set
805# CONFIG_CRYPTO_LRW is not set
806# CONFIG_CRYPTO_PCBC is not set
807# CONFIG_CRYPTO_XTS is not set
808
809#
810# Hash modes
811#
770# CONFIG_CRYPTO_HMAC is not set 812# CONFIG_CRYPTO_HMAC is not set
771# CONFIG_CRYPTO_XCBC is not set 813# CONFIG_CRYPTO_XCBC is not set
772# CONFIG_CRYPTO_NULL is not set 814
815#
816# Digest
817#
818# CONFIG_CRYPTO_CRC32C is not set
773# CONFIG_CRYPTO_MD4 is not set 819# CONFIG_CRYPTO_MD4 is not set
774# CONFIG_CRYPTO_MD5 is not set 820# CONFIG_CRYPTO_MD5 is not set
821# CONFIG_CRYPTO_MICHAEL_MIC is not set
775# CONFIG_CRYPTO_SHA1 is not set 822# CONFIG_CRYPTO_SHA1 is not set
776# CONFIG_CRYPTO_SHA256 is not set 823# CONFIG_CRYPTO_SHA256 is not set
777# CONFIG_CRYPTO_SHA512 is not set 824# CONFIG_CRYPTO_SHA512 is not set
778# CONFIG_CRYPTO_WP512 is not set
779# CONFIG_CRYPTO_TGR192 is not set 825# CONFIG_CRYPTO_TGR192 is not set
780# CONFIG_CRYPTO_GF128MUL is not set 826# CONFIG_CRYPTO_WP512 is not set
781# CONFIG_CRYPTO_ECB is not set 827
782# CONFIG_CRYPTO_CBC is not set 828#
783# CONFIG_CRYPTO_PCBC is not set 829# Ciphers
784# CONFIG_CRYPTO_LRW is not set 830#
785# CONFIG_CRYPTO_XTS is not set
786# CONFIG_CRYPTO_CTR is not set
787# CONFIG_CRYPTO_GCM is not set
788# CONFIG_CRYPTO_CCM is not set
789# CONFIG_CRYPTO_CRYPTD is not set
790# CONFIG_CRYPTO_DES is not set
791# CONFIG_CRYPTO_FCRYPT is not set
792# CONFIG_CRYPTO_BLOWFISH is not set
793# CONFIG_CRYPTO_TWOFISH is not set
794# CONFIG_CRYPTO_SERPENT is not set
795# CONFIG_CRYPTO_AES is not set 831# CONFIG_CRYPTO_AES is not set
832# CONFIG_CRYPTO_ANUBIS is not set
833# CONFIG_CRYPTO_ARC4 is not set
834# CONFIG_CRYPTO_BLOWFISH is not set
835# CONFIG_CRYPTO_CAMELLIA is not set
796# CONFIG_CRYPTO_CAST5 is not set 836# CONFIG_CRYPTO_CAST5 is not set
797# CONFIG_CRYPTO_CAST6 is not set 837# CONFIG_CRYPTO_CAST6 is not set
798# CONFIG_CRYPTO_TEA is not set 838# CONFIG_CRYPTO_DES is not set
799# CONFIG_CRYPTO_ARC4 is not set 839# CONFIG_CRYPTO_FCRYPT is not set
800# CONFIG_CRYPTO_KHAZAD is not set 840# CONFIG_CRYPTO_KHAZAD is not set
801# CONFIG_CRYPTO_ANUBIS is not set
802# CONFIG_CRYPTO_SEED is not set
803# CONFIG_CRYPTO_SALSA20 is not set 841# CONFIG_CRYPTO_SALSA20 is not set
842# CONFIG_CRYPTO_SEED is not set
843# CONFIG_CRYPTO_SERPENT is not set
844# CONFIG_CRYPTO_TEA is not set
845# CONFIG_CRYPTO_TWOFISH is not set
846
847#
848# Compression
849#
804# CONFIG_CRYPTO_DEFLATE is not set 850# CONFIG_CRYPTO_DEFLATE is not set
805# CONFIG_CRYPTO_MICHAEL_MIC is not set
806# CONFIG_CRYPTO_CRC32C is not set
807# CONFIG_CRYPTO_CAMELLIA is not set
808# CONFIG_CRYPTO_AUTHENC is not set
809# CONFIG_CRYPTO_LZO is not set 851# CONFIG_CRYPTO_LZO is not set
810CONFIG_CRYPTO_HW=y 852CONFIG_CRYPTO_HW=y
811# CONFIG_CRYPTO_DEV_HIFN_795X is not set 853# CONFIG_CRYPTO_DEV_HIFN_795X is not set
812# CONFIG_PPC_CLOCK is not set 854# CONFIG_PPC_CLOCK is not set
855# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/sbc8560_defconfig b/arch/powerpc/configs/85xx/sbc8560_defconfig
index fef605579e29..655518dcd73f 100644
--- a/arch/powerpc/configs/85xx/sbc8560_defconfig
+++ b/arch/powerpc/configs/85xx/sbc8560_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:39 2008 4# Mon Jun 9 08:52:38 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90CONFIG_KALLSYMS=y 93CONFIG_KALLSYMS=y
91# CONFIG_KALLSYMS_ALL is not set 94# CONFIG_KALLSYMS_ALL is not set
92# CONFIG_KALLSYMS_EXTRA_PASS is not set 95# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -112,6 +115,7 @@ CONFIG_SLAB=y
112CONFIG_HAVE_OPROFILE=y 115CONFIG_HAVE_OPROFILE=y
113CONFIG_HAVE_KPROBES=y 116CONFIG_HAVE_KPROBES=y
114CONFIG_HAVE_KRETPROBES=y 117CONFIG_HAVE_KRETPROBES=y
118# CONFIG_HAVE_DMA_ATTRS is not set
115CONFIG_PROC_PAGE_MONITOR=y 119CONFIG_PROC_PAGE_MONITOR=y
116CONFIG_SLABINFO=y 120CONFIG_SLABINFO=y
117CONFIG_RT_MUTEXES=y 121CONFIG_RT_MUTEXES=y
@@ -152,6 +156,7 @@ CONFIG_MPC85xx=y
152# CONFIG_MPC85xx_CDS is not set 156# CONFIG_MPC85xx_CDS is not set
153# CONFIG_MPC85xx_MDS is not set 157# CONFIG_MPC85xx_MDS is not set
154# CONFIG_MPC85xx_DS is not set 158# CONFIG_MPC85xx_DS is not set
159# CONFIG_KSI8560 is not set
155# CONFIG_STX_GP3 is not set 160# CONFIG_STX_GP3 is not set
156# CONFIG_TQM8540 is not set 161# CONFIG_TQM8540 is not set
157# CONFIG_TQM8541 is not set 162# CONFIG_TQM8541 is not set
@@ -207,11 +212,13 @@ CONFIG_FLATMEM=y
207CONFIG_FLAT_NODE_MEM_MAP=y 212CONFIG_FLAT_NODE_MEM_MAP=y
208# CONFIG_SPARSEMEM_STATIC is not set 213# CONFIG_SPARSEMEM_STATIC is not set
209# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 214# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
215CONFIG_PAGEFLAGS_EXTENDED=y
210CONFIG_SPLIT_PTLOCK_CPUS=4 216CONFIG_SPLIT_PTLOCK_CPUS=4
211# CONFIG_RESOURCES_64BIT is not set 217# CONFIG_RESOURCES_64BIT is not set
212CONFIG_ZONE_DMA_FLAG=1 218CONFIG_ZONE_DMA_FLAG=1
213CONFIG_BOUNCE=y 219CONFIG_BOUNCE=y
214CONFIG_VIRT_TO_BUS=y 220CONFIG_VIRT_TO_BUS=y
221CONFIG_FORCE_MAX_ZONEORDER=11
215CONFIG_PROC_DEVICETREE=y 222CONFIG_PROC_DEVICETREE=y
216# CONFIG_CMDLINE_BOOL is not set 223# CONFIG_CMDLINE_BOOL is not set
217# CONFIG_PM is not set 224# CONFIG_PM is not set
@@ -228,6 +235,7 @@ CONFIG_FSL_SOC=y
228# CONFIG_PCI_SYSCALL is not set 235# CONFIG_PCI_SYSCALL is not set
229# CONFIG_ARCH_SUPPORTS_MSI is not set 236# CONFIG_ARCH_SUPPORTS_MSI is not set
230# CONFIG_PCCARD is not set 237# CONFIG_PCCARD is not set
238# CONFIG_HAS_RAPIDIO is not set
231 239
232# 240#
233# Advanced setup 241# Advanced setup
@@ -237,11 +245,12 @@ CONFIG_FSL_SOC=y
237# 245#
238# Default settings for advanced configuration options are used 246# Default settings for advanced configuration options are used
239# 247#
240CONFIG_HIGHMEM_START=0xfe000000
241CONFIG_LOWMEM_SIZE=0x30000000 248CONFIG_LOWMEM_SIZE=0x30000000
249CONFIG_PAGE_OFFSET=0xc0000000
242CONFIG_KERNEL_START=0xc0000000 250CONFIG_KERNEL_START=0xc0000000
251CONFIG_PHYSICAL_START=0x00000000
252CONFIG_PHYSICAL_ALIGN=0x10000000
243CONFIG_TASK_SIZE=0xc0000000 253CONFIG_TASK_SIZE=0xc0000000
244CONFIG_BOOT_LOAD=0x00800000
245 254
246# 255#
247# Networking 256# Networking
@@ -289,8 +298,6 @@ CONFIG_TCP_CONG_CUBIC=y
289CONFIG_DEFAULT_TCP_CONG="cubic" 298CONFIG_DEFAULT_TCP_CONG="cubic"
290# CONFIG_TCP_MD5SIG is not set 299# CONFIG_TCP_MD5SIG is not set
291# CONFIG_IPV6 is not set 300# CONFIG_IPV6 is not set
292# CONFIG_INET6_XFRM_TUNNEL is not set
293# CONFIG_INET6_TUNNEL is not set
294# CONFIG_NETWORK_SECMARK is not set 301# CONFIG_NETWORK_SECMARK is not set
295# CONFIG_NETFILTER is not set 302# CONFIG_NETFILTER is not set
296# CONFIG_IP_DCCP is not set 303# CONFIG_IP_DCCP is not set
@@ -418,6 +425,7 @@ CONFIG_NETDEV_10000=y
418# 425#
419# CONFIG_WLAN_PRE80211 is not set 426# CONFIG_WLAN_PRE80211 is not set
420# CONFIG_WLAN_80211 is not set 427# CONFIG_WLAN_80211 is not set
428# CONFIG_IWLWIFI_LEDS is not set
421# CONFIG_WAN is not set 429# CONFIG_WAN is not set
422# CONFIG_PPP is not set 430# CONFIG_PPP is not set
423# CONFIG_SLIP is not set 431# CONFIG_SLIP is not set
@@ -462,6 +470,7 @@ CONFIG_INPUT=y
462# Character devices 470# Character devices
463# 471#
464# CONFIG_VT is not set 472# CONFIG_VT is not set
473CONFIG_DEVKMEM=y
465# CONFIG_SERIAL_NONSTANDARD is not set 474# CONFIG_SERIAL_NONSTANDARD is not set
466 475
467# 476#
@@ -487,17 +496,11 @@ CONFIG_LEGACY_PTY_COUNT=256
487# CONFIG_IPMI_HANDLER is not set 496# CONFIG_IPMI_HANDLER is not set
488# CONFIG_HW_RANDOM is not set 497# CONFIG_HW_RANDOM is not set
489# CONFIG_NVRAM is not set 498# CONFIG_NVRAM is not set
490# CONFIG_GEN_RTC is not set
491# CONFIG_R3964 is not set 499# CONFIG_R3964 is not set
492# CONFIG_RAW_DRIVER is not set 500# CONFIG_RAW_DRIVER is not set
493# CONFIG_TCG_TPM is not set 501# CONFIG_TCG_TPM is not set
494# CONFIG_I2C is not set 502# CONFIG_I2C is not set
495
496#
497# SPI support
498#
499# CONFIG_SPI is not set 503# CONFIG_SPI is not set
500# CONFIG_SPI_MASTER is not set
501# CONFIG_W1 is not set 504# CONFIG_W1 is not set
502# CONFIG_POWER_SUPPLY is not set 505# CONFIG_POWER_SUPPLY is not set
503CONFIG_HWMON=y 506CONFIG_HWMON=y
@@ -526,12 +529,22 @@ CONFIG_SSB_POSSIBLE=y
526# Multifunction device drivers 529# Multifunction device drivers
527# 530#
528# CONFIG_MFD_SM501 is not set 531# CONFIG_MFD_SM501 is not set
532# CONFIG_HTC_PASIC3 is not set
529 533
530# 534#
531# Multimedia devices 535# Multimedia devices
532# 536#
537
538#
539# Multimedia core support
540#
533# CONFIG_VIDEO_DEV is not set 541# CONFIG_VIDEO_DEV is not set
534# CONFIG_DVB_CORE is not set 542# CONFIG_DVB_CORE is not set
543# CONFIG_VIDEO_MEDIA is not set
544
545#
546# Multimedia drivers
547#
535CONFIG_DAB=y 548CONFIG_DAB=y
536 549
537# 550#
@@ -559,6 +572,8 @@ CONFIG_USB_SUPPORT=y
559# CONFIG_USB_ARCH_HAS_HCD is not set 572# CONFIG_USB_ARCH_HAS_HCD is not set
560# CONFIG_USB_ARCH_HAS_OHCI is not set 573# CONFIG_USB_ARCH_HAS_OHCI is not set
561# CONFIG_USB_ARCH_HAS_EHCI is not set 574# CONFIG_USB_ARCH_HAS_EHCI is not set
575# CONFIG_USB_OTG_WHITELIST is not set
576# CONFIG_USB_OTG_BLACKLIST_HUB is not set
562 577
563# 578#
564# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 579# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -567,6 +582,7 @@ CONFIG_USB_SUPPORT=y
567# CONFIG_MMC is not set 582# CONFIG_MMC is not set
568# CONFIG_MEMSTICK is not set 583# CONFIG_MEMSTICK is not set
569# CONFIG_NEW_LEDS is not set 584# CONFIG_NEW_LEDS is not set
585# CONFIG_ACCESSIBILITY is not set
570# CONFIG_EDAC is not set 586# CONFIG_EDAC is not set
571CONFIG_RTC_LIB=y 587CONFIG_RTC_LIB=y
572CONFIG_RTC_CLASS=y 588CONFIG_RTC_CLASS=y
@@ -602,11 +618,8 @@ CONFIG_RTC_DRV_M48T59=y
602# 618#
603# on-CPU RTC drivers 619# on-CPU RTC drivers
604# 620#
621# CONFIG_RTC_DRV_PPC is not set
605# CONFIG_DMADEVICES is not set 622# CONFIG_DMADEVICES is not set
606
607#
608# Userspace I/O
609#
610# CONFIG_UIO is not set 623# CONFIG_UIO is not set
611 624
612# 625#
@@ -619,7 +632,6 @@ CONFIG_RTC_DRV_M48T59=y
619# CONFIG_JFS_FS is not set 632# CONFIG_JFS_FS is not set
620# CONFIG_FS_POSIX_ACL is not set 633# CONFIG_FS_POSIX_ACL is not set
621# CONFIG_XFS_FS is not set 634# CONFIG_XFS_FS is not set
622# CONFIG_GFS2_FS is not set
623# CONFIG_OCFS2_FS is not set 635# CONFIG_OCFS2_FS is not set
624CONFIG_DNOTIFY=y 636CONFIG_DNOTIFY=y
625CONFIG_INOTIFY=y 637CONFIG_INOTIFY=y
@@ -676,7 +688,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
676CONFIG_NFS_FS=y 688CONFIG_NFS_FS=y
677# CONFIG_NFS_V3 is not set 689# CONFIG_NFS_V3 is not set
678# CONFIG_NFS_V4 is not set 690# CONFIG_NFS_V4 is not set
679# CONFIG_NFS_DIRECTIO is not set
680# CONFIG_NFSD is not set 691# CONFIG_NFSD is not set
681CONFIG_ROOT_NFS=y 692CONFIG_ROOT_NFS=y
682CONFIG_LOCKD=y 693CONFIG_LOCKD=y
@@ -715,6 +726,7 @@ CONFIG_PARTITION_ADVANCED=y
715# Library routines 726# Library routines
716# 727#
717CONFIG_BITREVERSE=y 728CONFIG_BITREVERSE=y
729# CONFIG_GENERIC_FIND_FIRST_BIT is not set
718# CONFIG_CRC_CCITT is not set 730# CONFIG_CRC_CCITT is not set
719# CONFIG_CRC16 is not set 731# CONFIG_CRC16 is not set
720# CONFIG_CRC_ITU_T is not set 732# CONFIG_CRC_ITU_T is not set
@@ -725,6 +737,7 @@ CONFIG_PLIST=y
725CONFIG_HAS_IOMEM=y 737CONFIG_HAS_IOMEM=y
726CONFIG_HAS_IOPORT=y 738CONFIG_HAS_IOPORT=y
727CONFIG_HAS_DMA=y 739CONFIG_HAS_DMA=y
740CONFIG_HAVE_LMB=y
728 741
729# 742#
730# Kernel hacking 743# Kernel hacking
@@ -732,6 +745,7 @@ CONFIG_HAS_DMA=y
732# CONFIG_PRINTK_TIME is not set 745# CONFIG_PRINTK_TIME is not set
733CONFIG_ENABLE_WARN_DEPRECATED=y 746CONFIG_ENABLE_WARN_DEPRECATED=y
734CONFIG_ENABLE_MUST_CHECK=y 747CONFIG_ENABLE_MUST_CHECK=y
748CONFIG_FRAME_WARN=1024
735CONFIG_MAGIC_SYSRQ=y 749CONFIG_MAGIC_SYSRQ=y
736# CONFIG_UNUSED_SYMBOLS is not set 750# CONFIG_UNUSED_SYMBOLS is not set
737# CONFIG_DEBUG_FS is not set 751# CONFIG_DEBUG_FS is not set
@@ -742,6 +756,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
742CONFIG_SCHED_DEBUG=y 756CONFIG_SCHED_DEBUG=y
743# CONFIG_SCHEDSTATS is not set 757# CONFIG_SCHEDSTATS is not set
744# CONFIG_TIMER_STATS is not set 758# CONFIG_TIMER_STATS is not set
759# CONFIG_DEBUG_OBJECTS is not set
745# CONFIG_DEBUG_SLAB is not set 760# CONFIG_DEBUG_SLAB is not set
746# CONFIG_DEBUG_RT_MUTEXES is not set 761# CONFIG_DEBUG_RT_MUTEXES is not set
747# CONFIG_RT_MUTEX_TESTER is not set 762# CONFIG_RT_MUTEX_TESTER is not set
@@ -753,6 +768,7 @@ CONFIG_DEBUG_MUTEXES=y
753# CONFIG_DEBUG_BUGVERBOSE is not set 768# CONFIG_DEBUG_BUGVERBOSE is not set
754# CONFIG_DEBUG_INFO is not set 769# CONFIG_DEBUG_INFO is not set
755# CONFIG_DEBUG_VM is not set 770# CONFIG_DEBUG_VM is not set
771# CONFIG_DEBUG_WRITECOUNT is not set
756# CONFIG_DEBUG_LIST is not set 772# CONFIG_DEBUG_LIST is not set
757# CONFIG_DEBUG_SG is not set 773# CONFIG_DEBUG_SG is not set
758# CONFIG_BOOT_PRINTK_DELAY is not set 774# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -763,6 +779,7 @@ CONFIG_DEBUG_MUTEXES=y
763# CONFIG_DEBUG_STACK_USAGE is not set 779# CONFIG_DEBUG_STACK_USAGE is not set
764# CONFIG_DEBUG_PAGEALLOC is not set 780# CONFIG_DEBUG_PAGEALLOC is not set
765# CONFIG_DEBUGGER is not set 781# CONFIG_DEBUGGER is not set
782# CONFIG_IRQSTACKS is not set
766# CONFIG_BDI_SWITCH is not set 783# CONFIG_BDI_SWITCH is not set
767CONFIG_PPC_EARLY_DEBUG=y 784CONFIG_PPC_EARLY_DEBUG=y
768# CONFIG_PPC_EARLY_DEBUG_LPAR is not set 785# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
@@ -784,47 +801,77 @@ CONFIG_PPC_EARLY_DEBUG=y
784# CONFIG_SECURITY is not set 801# CONFIG_SECURITY is not set
785# CONFIG_SECURITY_FILE_CAPABILITIES is not set 802# CONFIG_SECURITY_FILE_CAPABILITIES is not set
786CONFIG_CRYPTO=y 803CONFIG_CRYPTO=y
787# CONFIG_CRYPTO_SEQIV is not set 804
805#
806# Crypto core or helper
807#
788# CONFIG_CRYPTO_MANAGER is not set 808# CONFIG_CRYPTO_MANAGER is not set
809# CONFIG_CRYPTO_GF128MUL is not set
810# CONFIG_CRYPTO_NULL is not set
811# CONFIG_CRYPTO_CRYPTD is not set
812# CONFIG_CRYPTO_AUTHENC is not set
813
814#
815# Authenticated Encryption with Associated Data
816#
817# CONFIG_CRYPTO_CCM is not set
818# CONFIG_CRYPTO_GCM is not set
819# CONFIG_CRYPTO_SEQIV is not set
820
821#
822# Block modes
823#
824# CONFIG_CRYPTO_CBC is not set
825# CONFIG_CRYPTO_CTR is not set
826# CONFIG_CRYPTO_CTS is not set
827# CONFIG_CRYPTO_ECB is not set
828# CONFIG_CRYPTO_LRW is not set
829# CONFIG_CRYPTO_PCBC is not set
830# CONFIG_CRYPTO_XTS is not set
831
832#
833# Hash modes
834#
789# CONFIG_CRYPTO_HMAC is not set 835# CONFIG_CRYPTO_HMAC is not set
790# CONFIG_CRYPTO_XCBC is not set 836# CONFIG_CRYPTO_XCBC is not set
791# CONFIG_CRYPTO_NULL is not set 837
838#
839# Digest
840#
841# CONFIG_CRYPTO_CRC32C is not set
792# CONFIG_CRYPTO_MD4 is not set 842# CONFIG_CRYPTO_MD4 is not set
793# CONFIG_CRYPTO_MD5 is not set 843# CONFIG_CRYPTO_MD5 is not set
844# CONFIG_CRYPTO_MICHAEL_MIC is not set
794# CONFIG_CRYPTO_SHA1 is not set 845# CONFIG_CRYPTO_SHA1 is not set
795# CONFIG_CRYPTO_SHA256 is not set 846# CONFIG_CRYPTO_SHA256 is not set
796# CONFIG_CRYPTO_SHA512 is not set 847# CONFIG_CRYPTO_SHA512 is not set
797# CONFIG_CRYPTO_WP512 is not set
798# CONFIG_CRYPTO_TGR192 is not set 848# CONFIG_CRYPTO_TGR192 is not set
799# CONFIG_CRYPTO_GF128MUL is not set 849# CONFIG_CRYPTO_WP512 is not set
800# CONFIG_CRYPTO_ECB is not set 850
801# CONFIG_CRYPTO_CBC is not set 851#
802# CONFIG_CRYPTO_PCBC is not set 852# Ciphers
803# CONFIG_CRYPTO_LRW is not set 853#
804# CONFIG_CRYPTO_XTS is not set
805# CONFIG_CRYPTO_CTR is not set
806# CONFIG_CRYPTO_GCM is not set
807# CONFIG_CRYPTO_CCM is not set
808# CONFIG_CRYPTO_CRYPTD is not set
809# CONFIG_CRYPTO_DES is not set
810# CONFIG_CRYPTO_FCRYPT is not set
811# CONFIG_CRYPTO_BLOWFISH is not set
812# CONFIG_CRYPTO_TWOFISH is not set
813# CONFIG_CRYPTO_SERPENT is not set
814# CONFIG_CRYPTO_AES is not set 854# CONFIG_CRYPTO_AES is not set
855# CONFIG_CRYPTO_ANUBIS is not set
856# CONFIG_CRYPTO_ARC4 is not set
857# CONFIG_CRYPTO_BLOWFISH is not set
858# CONFIG_CRYPTO_CAMELLIA is not set
815# CONFIG_CRYPTO_CAST5 is not set 859# CONFIG_CRYPTO_CAST5 is not set
816# CONFIG_CRYPTO_CAST6 is not set 860# CONFIG_CRYPTO_CAST6 is not set
817# CONFIG_CRYPTO_TEA is not set 861# CONFIG_CRYPTO_DES is not set
818# CONFIG_CRYPTO_ARC4 is not set 862# CONFIG_CRYPTO_FCRYPT is not set
819# CONFIG_CRYPTO_KHAZAD is not set 863# CONFIG_CRYPTO_KHAZAD is not set
820# CONFIG_CRYPTO_ANUBIS is not set
821# CONFIG_CRYPTO_SEED is not set
822# CONFIG_CRYPTO_SALSA20 is not set 864# CONFIG_CRYPTO_SALSA20 is not set
865# CONFIG_CRYPTO_SEED is not set
866# CONFIG_CRYPTO_SERPENT is not set
867# CONFIG_CRYPTO_TEA is not set
868# CONFIG_CRYPTO_TWOFISH is not set
869
870#
871# Compression
872#
823# CONFIG_CRYPTO_DEFLATE is not set 873# CONFIG_CRYPTO_DEFLATE is not set
824# CONFIG_CRYPTO_MICHAEL_MIC is not set
825# CONFIG_CRYPTO_CRC32C is not set
826# CONFIG_CRYPTO_CAMELLIA is not set
827# CONFIG_CRYPTO_AUTHENC is not set
828# CONFIG_CRYPTO_LZO is not set 874# CONFIG_CRYPTO_LZO is not set
829CONFIG_CRYPTO_HW=y 875CONFIG_CRYPTO_HW=y
830# CONFIG_PPC_CLOCK is not set 876# CONFIG_PPC_CLOCK is not set
877# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/stx_gp3_defconfig b/arch/powerpc/configs/85xx/stx_gp3_defconfig
index 1d303c49bb0c..7804ca1ecc94 100644
--- a/arch/powerpc/configs/85xx/stx_gp3_defconfig
+++ b/arch/powerpc/configs/85xx/stx_gp3_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:42 2008 4# Mon Jun 9 08:52:38 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90CONFIG_KALLSYMS=y 93CONFIG_KALLSYMS=y
91# CONFIG_KALLSYMS_ALL is not set 94# CONFIG_KALLSYMS_ALL is not set
92# CONFIG_KALLSYMS_EXTRA_PASS is not set 95# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -114,12 +117,14 @@ CONFIG_HAVE_OPROFILE=y
114# CONFIG_KPROBES is not set 117# CONFIG_KPROBES is not set
115CONFIG_HAVE_KPROBES=y 118CONFIG_HAVE_KPROBES=y
116CONFIG_HAVE_KRETPROBES=y 119CONFIG_HAVE_KRETPROBES=y
120# CONFIG_HAVE_DMA_ATTRS is not set
117CONFIG_PROC_PAGE_MONITOR=y 121CONFIG_PROC_PAGE_MONITOR=y
118CONFIG_SLABINFO=y 122CONFIG_SLABINFO=y
119CONFIG_RT_MUTEXES=y 123CONFIG_RT_MUTEXES=y
120# CONFIG_TINY_SHMEM is not set 124# CONFIG_TINY_SHMEM is not set
121CONFIG_BASE_SMALL=0 125CONFIG_BASE_SMALL=0
122CONFIG_MODULES=y 126CONFIG_MODULES=y
127# CONFIG_MODULE_FORCE_LOAD is not set
123# CONFIG_MODULE_UNLOAD is not set 128# CONFIG_MODULE_UNLOAD is not set
124CONFIG_MODVERSIONS=y 129CONFIG_MODVERSIONS=y
125# CONFIG_MODULE_SRCVERSION_ALL is not set 130# CONFIG_MODULE_SRCVERSION_ALL is not set
@@ -158,6 +163,7 @@ CONFIG_MPC85xx=y
158# CONFIG_MPC85xx_CDS is not set 163# CONFIG_MPC85xx_CDS is not set
159# CONFIG_MPC85xx_MDS is not set 164# CONFIG_MPC85xx_MDS is not set
160# CONFIG_MPC85xx_DS is not set 165# CONFIG_MPC85xx_DS is not set
166# CONFIG_KSI8560 is not set
161CONFIG_STX_GP3=y 167CONFIG_STX_GP3=y
162# CONFIG_TQM8540 is not set 168# CONFIG_TQM8540 is not set
163# CONFIG_TQM8541 is not set 169# CONFIG_TQM8541 is not set
@@ -215,11 +221,13 @@ CONFIG_FLATMEM=y
215CONFIG_FLAT_NODE_MEM_MAP=y 221CONFIG_FLAT_NODE_MEM_MAP=y
216# CONFIG_SPARSEMEM_STATIC is not set 222# CONFIG_SPARSEMEM_STATIC is not set
217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 223# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
224CONFIG_PAGEFLAGS_EXTENDED=y
218CONFIG_SPLIT_PTLOCK_CPUS=4 225CONFIG_SPLIT_PTLOCK_CPUS=4
219# CONFIG_RESOURCES_64BIT is not set 226# CONFIG_RESOURCES_64BIT is not set
220CONFIG_ZONE_DMA_FLAG=1 227CONFIG_ZONE_DMA_FLAG=1
221CONFIG_BOUNCE=y 228CONFIG_BOUNCE=y
222CONFIG_VIRT_TO_BUS=y 229CONFIG_VIRT_TO_BUS=y
230CONFIG_FORCE_MAX_ZONEORDER=11
223CONFIG_PROC_DEVICETREE=y 231CONFIG_PROC_DEVICETREE=y
224# CONFIG_CMDLINE_BOOL is not set 232# CONFIG_CMDLINE_BOOL is not set
225# CONFIG_PM is not set 233# CONFIG_PM is not set
@@ -243,6 +251,7 @@ CONFIG_PCI_LEGACY=y
243# CONFIG_PCI_DEBUG is not set 251# CONFIG_PCI_DEBUG is not set
244# CONFIG_PCCARD is not set 252# CONFIG_PCCARD is not set
245# CONFIG_HOTPLUG_PCI is not set 253# CONFIG_HOTPLUG_PCI is not set
254# CONFIG_HAS_RAPIDIO is not set
246 255
247# 256#
248# Advanced setup 257# Advanced setup
@@ -252,11 +261,12 @@ CONFIG_PCI_LEGACY=y
252# 261#
253# Default settings for advanced configuration options are used 262# Default settings for advanced configuration options are used
254# 263#
255CONFIG_HIGHMEM_START=0xfe000000
256CONFIG_LOWMEM_SIZE=0x30000000 264CONFIG_LOWMEM_SIZE=0x30000000
265CONFIG_PAGE_OFFSET=0xc0000000
257CONFIG_KERNEL_START=0xc0000000 266CONFIG_KERNEL_START=0xc0000000
267CONFIG_PHYSICAL_START=0x00000000
268CONFIG_PHYSICAL_ALIGN=0x10000000
258CONFIG_TASK_SIZE=0xc0000000 269CONFIG_TASK_SIZE=0xc0000000
259CONFIG_BOOT_LOAD=0x00800000
260 270
261# 271#
262# Networking 272# Networking
@@ -304,8 +314,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
304# CONFIG_TCP_MD5SIG is not set 314# CONFIG_TCP_MD5SIG is not set
305# CONFIG_IP_VS is not set 315# CONFIG_IP_VS is not set
306# CONFIG_IPV6 is not set 316# CONFIG_IPV6 is not set
307# CONFIG_INET6_XFRM_TUNNEL is not set
308# CONFIG_INET6_TUNNEL is not set
309# CONFIG_NETWORK_SECMARK is not set 317# CONFIG_NETWORK_SECMARK is not set
310CONFIG_NETFILTER=y 318CONFIG_NETFILTER=y
311# CONFIG_NETFILTER_DEBUG is not set 319# CONFIG_NETFILTER_DEBUG is not set
@@ -418,6 +426,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
418# CONFIG_CONNECTOR is not set 426# CONFIG_CONNECTOR is not set
419# CONFIG_MTD is not set 427# CONFIG_MTD is not set
420CONFIG_OF_DEVICE=y 428CONFIG_OF_DEVICE=y
429CONFIG_OF_I2C=m
421CONFIG_PARPORT=m 430CONFIG_PARPORT=m
422CONFIG_PARPORT_PC=m 431CONFIG_PARPORT_PC=m
423# CONFIG_PARPORT_PC_FIFO is not set 432# CONFIG_PARPORT_PC_FIFO is not set
@@ -505,7 +514,7 @@ CONFIG_IDE_GENERIC=y
505# CONFIG_BLK_DEV_VIA82CXXX is not set 514# CONFIG_BLK_DEV_VIA82CXXX is not set
506# CONFIG_BLK_DEV_TC86C001 is not set 515# CONFIG_BLK_DEV_TC86C001 is not set
507# CONFIG_BLK_DEV_IDEDMA is not set 516# CONFIG_BLK_DEV_IDEDMA is not set
508CONFIG_IDE_ARCH_OBSOLETE_INIT=y 517# CONFIG_BLK_DEV_HD_ONLY is not set
509# CONFIG_BLK_DEV_HD is not set 518# CONFIG_BLK_DEV_HD is not set
510 519
511# 520#
@@ -653,7 +662,6 @@ CONFIG_NETDEV_1000=y
653# CONFIG_SIS190 is not set 662# CONFIG_SIS190 is not set
654# CONFIG_SKGE is not set 663# CONFIG_SKGE is not set
655# CONFIG_SKY2 is not set 664# CONFIG_SKY2 is not set
656# CONFIG_SK98LIN is not set
657# CONFIG_VIA_VELOCITY is not set 665# CONFIG_VIA_VELOCITY is not set
658# CONFIG_TIGON3 is not set 666# CONFIG_TIGON3 is not set
659# CONFIG_BNX2 is not set 667# CONFIG_BNX2 is not set
@@ -673,6 +681,7 @@ CONFIG_NETDEV_10000=y
673# CONFIG_MLX4_CORE is not set 681# CONFIG_MLX4_CORE is not set
674# CONFIG_TEHUTI is not set 682# CONFIG_TEHUTI is not set
675# CONFIG_BNX2X is not set 683# CONFIG_BNX2X is not set
684# CONFIG_SFC is not set
676# CONFIG_TR is not set 685# CONFIG_TR is not set
677 686
678# 687#
@@ -680,6 +689,7 @@ CONFIG_NETDEV_10000=y
680# 689#
681# CONFIG_WLAN_PRE80211 is not set 690# CONFIG_WLAN_PRE80211 is not set
682# CONFIG_WLAN_80211 is not set 691# CONFIG_WLAN_80211 is not set
692# CONFIG_IWLWIFI_LEDS is not set
683# CONFIG_WAN is not set 693# CONFIG_WAN is not set
684# CONFIG_FDDI is not set 694# CONFIG_FDDI is not set
685# CONFIG_HIPPI is not set 695# CONFIG_HIPPI is not set
@@ -753,6 +763,7 @@ CONFIG_SERIO_LIBPS2=y
753# Character devices 763# Character devices
754# 764#
755# CONFIG_VT is not set 765# CONFIG_VT is not set
766CONFIG_DEVKMEM=y
756# CONFIG_SERIAL_NONSTANDARD is not set 767# CONFIG_SERIAL_NONSTANDARD is not set
757# CONFIG_NOZOMI is not set 768# CONFIG_NOZOMI is not set
758 769
@@ -796,13 +807,6 @@ CONFIG_I2C_BOARDINFO=y
796CONFIG_I2C_CHARDEV=m 807CONFIG_I2C_CHARDEV=m
797 808
798# 809#
799# I2C Algorithms
800#
801CONFIG_I2C_ALGOBIT=m
802# CONFIG_I2C_ALGOPCF is not set
803# CONFIG_I2C_ALGOPCA is not set
804
805#
806# I2C Hardware Bus support 810# I2C Hardware Bus support
807# 811#
808# CONFIG_I2C_ALI1535 is not set 812# CONFIG_I2C_ALI1535 is not set
@@ -829,6 +833,7 @@ CONFIG_I2C_ALGOBIT=m
829# CONFIG_I2C_VIA is not set 833# CONFIG_I2C_VIA is not set
830# CONFIG_I2C_VIAPRO is not set 834# CONFIG_I2C_VIAPRO is not set
831# CONFIG_I2C_VOODOO3 is not set 835# CONFIG_I2C_VOODOO3 is not set
836# CONFIG_I2C_PCA_PLATFORM is not set
832 837
833# 838#
834# Miscellaneous I2C Chip support 839# Miscellaneous I2C Chip support
@@ -838,19 +843,13 @@ CONFIG_I2C_ALGOBIT=m
838# CONFIG_SENSORS_PCF8574 is not set 843# CONFIG_SENSORS_PCF8574 is not set
839# CONFIG_PCF8575 is not set 844# CONFIG_PCF8575 is not set
840# CONFIG_SENSORS_PCF8591 is not set 845# CONFIG_SENSORS_PCF8591 is not set
841# CONFIG_TPS65010 is not set
842# CONFIG_SENSORS_MAX6875 is not set 846# CONFIG_SENSORS_MAX6875 is not set
843# CONFIG_SENSORS_TSL2550 is not set 847# CONFIG_SENSORS_TSL2550 is not set
844# CONFIG_I2C_DEBUG_CORE is not set 848# CONFIG_I2C_DEBUG_CORE is not set
845# CONFIG_I2C_DEBUG_ALGO is not set 849# CONFIG_I2C_DEBUG_ALGO is not set
846# CONFIG_I2C_DEBUG_BUS is not set 850# CONFIG_I2C_DEBUG_BUS is not set
847# CONFIG_I2C_DEBUG_CHIP is not set 851# CONFIG_I2C_DEBUG_CHIP is not set
848
849#
850# SPI support
851#
852# CONFIG_SPI is not set 852# CONFIG_SPI is not set
853# CONFIG_SPI_MASTER is not set
854# CONFIG_W1 is not set 853# CONFIG_W1 is not set
855# CONFIG_POWER_SUPPLY is not set 854# CONFIG_POWER_SUPPLY is not set
856CONFIG_HWMON=y 855CONFIG_HWMON=y
@@ -920,12 +919,22 @@ CONFIG_SSB_POSSIBLE=y
920# Multifunction device drivers 919# Multifunction device drivers
921# 920#
922# CONFIG_MFD_SM501 is not set 921# CONFIG_MFD_SM501 is not set
922# CONFIG_HTC_PASIC3 is not set
923 923
924# 924#
925# Multimedia devices 925# Multimedia devices
926# 926#
927
928#
929# Multimedia core support
930#
927# CONFIG_VIDEO_DEV is not set 931# CONFIG_VIDEO_DEV is not set
928# CONFIG_DVB_CORE is not set 932# CONFIG_DVB_CORE is not set
933# CONFIG_VIDEO_MEDIA is not set
934
935#
936# Multimedia drivers
937#
929CONFIG_DAB=y 938CONFIG_DAB=y
930 939
931# 940#
@@ -973,6 +982,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
973CONFIG_USB_ARCH_HAS_OHCI=y 982CONFIG_USB_ARCH_HAS_OHCI=y
974CONFIG_USB_ARCH_HAS_EHCI=y 983CONFIG_USB_ARCH_HAS_EHCI=y
975# CONFIG_USB is not set 984# CONFIG_USB is not set
985# CONFIG_USB_OTG_WHITELIST is not set
986# CONFIG_USB_OTG_BLACKLIST_HUB is not set
976 987
977# 988#
978# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 989# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -981,15 +992,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
981# CONFIG_MMC is not set 992# CONFIG_MMC is not set
982# CONFIG_MEMSTICK is not set 993# CONFIG_MEMSTICK is not set
983# CONFIG_NEW_LEDS is not set 994# CONFIG_NEW_LEDS is not set
995# CONFIG_ACCESSIBILITY is not set
984# CONFIG_INFINIBAND is not set 996# CONFIG_INFINIBAND is not set
985# CONFIG_EDAC is not set 997# CONFIG_EDAC is not set
986# CONFIG_RTC_CLASS is not set 998# CONFIG_RTC_CLASS is not set
987# CONFIG_DMADEVICES is not set 999# CONFIG_DMADEVICES is not set
988# CONFIG_AUXDISPLAY is not set 1000# CONFIG_AUXDISPLAY is not set
989
990#
991# Userspace I/O
992#
993# CONFIG_UIO is not set 1001# CONFIG_UIO is not set
994 1002
995# 1003#
@@ -1009,7 +1017,6 @@ CONFIG_FS_MBCACHE=y
1009# CONFIG_JFS_FS is not set 1017# CONFIG_JFS_FS is not set
1010# CONFIG_FS_POSIX_ACL is not set 1018# CONFIG_FS_POSIX_ACL is not set
1011# CONFIG_XFS_FS is not set 1019# CONFIG_XFS_FS is not set
1012# CONFIG_GFS2_FS is not set
1013# CONFIG_OCFS2_FS is not set 1020# CONFIG_OCFS2_FS is not set
1014CONFIG_DNOTIFY=y 1021CONFIG_DNOTIFY=y
1015CONFIG_INOTIFY=y 1022CONFIG_INOTIFY=y
@@ -1073,7 +1080,6 @@ CONFIG_NFS_FS=y
1073CONFIG_NFS_V3=y 1080CONFIG_NFS_V3=y
1074# CONFIG_NFS_V3_ACL is not set 1081# CONFIG_NFS_V3_ACL is not set
1075# CONFIG_NFS_V4 is not set 1082# CONFIG_NFS_V4 is not set
1076# CONFIG_NFS_DIRECTIO is not set
1077# CONFIG_NFSD is not set 1083# CONFIG_NFSD is not set
1078CONFIG_ROOT_NFS=y 1084CONFIG_ROOT_NFS=y
1079CONFIG_LOCKD=y 1085CONFIG_LOCKD=y
@@ -1141,9 +1147,10 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1141# Library routines 1147# Library routines
1142# 1148#
1143CONFIG_BITREVERSE=y 1149CONFIG_BITREVERSE=y
1150# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1144CONFIG_CRC_CCITT=y 1151CONFIG_CRC_CCITT=y
1145# CONFIG_CRC16 is not set 1152# CONFIG_CRC16 is not set
1146# CONFIG_CRC_ITU_T is not set 1153CONFIG_CRC_ITU_T=m
1147CONFIG_CRC32=y 1154CONFIG_CRC32=y
1148# CONFIG_CRC7 is not set 1155# CONFIG_CRC7 is not set
1149# CONFIG_LIBCRC32C is not set 1156# CONFIG_LIBCRC32C is not set
@@ -1152,6 +1159,7 @@ CONFIG_PLIST=y
1152CONFIG_HAS_IOMEM=y 1159CONFIG_HAS_IOMEM=y
1153CONFIG_HAS_IOPORT=y 1160CONFIG_HAS_IOPORT=y
1154CONFIG_HAS_DMA=y 1161CONFIG_HAS_DMA=y
1162CONFIG_HAVE_LMB=y
1155 1163
1156# 1164#
1157# Kernel hacking 1165# Kernel hacking
@@ -1159,6 +1167,7 @@ CONFIG_HAS_DMA=y
1159# CONFIG_PRINTK_TIME is not set 1167# CONFIG_PRINTK_TIME is not set
1160CONFIG_ENABLE_WARN_DEPRECATED=y 1168CONFIG_ENABLE_WARN_DEPRECATED=y
1161CONFIG_ENABLE_MUST_CHECK=y 1169CONFIG_ENABLE_MUST_CHECK=y
1170CONFIG_FRAME_WARN=1024
1162# CONFIG_MAGIC_SYSRQ is not set 1171# CONFIG_MAGIC_SYSRQ is not set
1163# CONFIG_UNUSED_SYMBOLS is not set 1172# CONFIG_UNUSED_SYMBOLS is not set
1164# CONFIG_DEBUG_FS is not set 1173# CONFIG_DEBUG_FS is not set
@@ -1169,6 +1178,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1169CONFIG_SCHED_DEBUG=y 1178CONFIG_SCHED_DEBUG=y
1170# CONFIG_SCHEDSTATS is not set 1179# CONFIG_SCHEDSTATS is not set
1171# CONFIG_TIMER_STATS is not set 1180# CONFIG_TIMER_STATS is not set
1181# CONFIG_DEBUG_OBJECTS is not set
1172# CONFIG_SLUB_DEBUG_ON is not set 1182# CONFIG_SLUB_DEBUG_ON is not set
1173# CONFIG_SLUB_STATS is not set 1183# CONFIG_SLUB_STATS is not set
1174# CONFIG_DEBUG_RT_MUTEXES is not set 1184# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1182,6 +1192,7 @@ CONFIG_SCHED_DEBUG=y
1182# CONFIG_DEBUG_BUGVERBOSE is not set 1192# CONFIG_DEBUG_BUGVERBOSE is not set
1183# CONFIG_DEBUG_INFO is not set 1193# CONFIG_DEBUG_INFO is not set
1184# CONFIG_DEBUG_VM is not set 1194# CONFIG_DEBUG_VM is not set
1195# CONFIG_DEBUG_WRITECOUNT is not set
1185# CONFIG_DEBUG_LIST is not set 1196# CONFIG_DEBUG_LIST is not set
1186# CONFIG_DEBUG_SG is not set 1197# CONFIG_DEBUG_SG is not set
1187# CONFIG_BOOT_PRINTK_DELAY is not set 1198# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1194,6 +1205,7 @@ CONFIG_SCHED_DEBUG=y
1194# CONFIG_DEBUG_PAGEALLOC is not set 1205# CONFIG_DEBUG_PAGEALLOC is not set
1195# CONFIG_DEBUGGER is not set 1206# CONFIG_DEBUGGER is not set
1196# CONFIG_KGDB_CONSOLE is not set 1207# CONFIG_KGDB_CONSOLE is not set
1208# CONFIG_IRQSTACKS is not set
1197CONFIG_BDI_SWITCH=y 1209CONFIG_BDI_SWITCH=y
1198# CONFIG_PPC_EARLY_DEBUG is not set 1210# CONFIG_PPC_EARLY_DEBUG is not set
1199 1211
@@ -1204,50 +1216,80 @@ CONFIG_BDI_SWITCH=y
1204# CONFIG_SECURITY is not set 1216# CONFIG_SECURITY is not set
1205# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1217# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1206CONFIG_CRYPTO=y 1218CONFIG_CRYPTO=y
1207# CONFIG_CRYPTO_SEQIV is not set 1219
1220#
1221# Crypto core or helper
1222#
1208# CONFIG_CRYPTO_MANAGER is not set 1223# CONFIG_CRYPTO_MANAGER is not set
1224# CONFIG_CRYPTO_GF128MUL is not set
1225# CONFIG_CRYPTO_NULL is not set
1226# CONFIG_CRYPTO_CRYPTD is not set
1227# CONFIG_CRYPTO_AUTHENC is not set
1228# CONFIG_CRYPTO_TEST is not set
1229
1230#
1231# Authenticated Encryption with Associated Data
1232#
1233# CONFIG_CRYPTO_CCM is not set
1234# CONFIG_CRYPTO_GCM is not set
1235# CONFIG_CRYPTO_SEQIV is not set
1236
1237#
1238# Block modes
1239#
1240# CONFIG_CRYPTO_CBC is not set
1241# CONFIG_CRYPTO_CTR is not set
1242# CONFIG_CRYPTO_CTS is not set
1243# CONFIG_CRYPTO_ECB is not set
1244# CONFIG_CRYPTO_LRW is not set
1245# CONFIG_CRYPTO_PCBC is not set
1246# CONFIG_CRYPTO_XTS is not set
1247
1248#
1249# Hash modes
1250#
1209# CONFIG_CRYPTO_HMAC is not set 1251# CONFIG_CRYPTO_HMAC is not set
1210# CONFIG_CRYPTO_XCBC is not set 1252# CONFIG_CRYPTO_XCBC is not set
1211# CONFIG_CRYPTO_NULL is not set 1253
1254#
1255# Digest
1256#
1257# CONFIG_CRYPTO_CRC32C is not set
1212# CONFIG_CRYPTO_MD4 is not set 1258# CONFIG_CRYPTO_MD4 is not set
1213# CONFIG_CRYPTO_MD5 is not set 1259# CONFIG_CRYPTO_MD5 is not set
1260# CONFIG_CRYPTO_MICHAEL_MIC is not set
1214# CONFIG_CRYPTO_SHA1 is not set 1261# CONFIG_CRYPTO_SHA1 is not set
1215# CONFIG_CRYPTO_SHA256 is not set 1262# CONFIG_CRYPTO_SHA256 is not set
1216# CONFIG_CRYPTO_SHA512 is not set 1263# CONFIG_CRYPTO_SHA512 is not set
1217# CONFIG_CRYPTO_WP512 is not set
1218# CONFIG_CRYPTO_TGR192 is not set 1264# CONFIG_CRYPTO_TGR192 is not set
1219# CONFIG_CRYPTO_GF128MUL is not set 1265# CONFIG_CRYPTO_WP512 is not set
1220# CONFIG_CRYPTO_ECB is not set 1266
1221# CONFIG_CRYPTO_CBC is not set 1267#
1222# CONFIG_CRYPTO_PCBC is not set 1268# Ciphers
1223# CONFIG_CRYPTO_LRW is not set 1269#
1224# CONFIG_CRYPTO_XTS is not set
1225# CONFIG_CRYPTO_CTR is not set
1226# CONFIG_CRYPTO_GCM is not set
1227# CONFIG_CRYPTO_CCM is not set
1228# CONFIG_CRYPTO_CRYPTD is not set
1229# CONFIG_CRYPTO_DES is not set
1230# CONFIG_CRYPTO_FCRYPT is not set
1231# CONFIG_CRYPTO_BLOWFISH is not set
1232# CONFIG_CRYPTO_TWOFISH is not set
1233# CONFIG_CRYPTO_SERPENT is not set
1234# CONFIG_CRYPTO_AES is not set 1270# CONFIG_CRYPTO_AES is not set
1271# CONFIG_CRYPTO_ANUBIS is not set
1272# CONFIG_CRYPTO_ARC4 is not set
1273# CONFIG_CRYPTO_BLOWFISH is not set
1274# CONFIG_CRYPTO_CAMELLIA is not set
1235# CONFIG_CRYPTO_CAST5 is not set 1275# CONFIG_CRYPTO_CAST5 is not set
1236# CONFIG_CRYPTO_CAST6 is not set 1276# CONFIG_CRYPTO_CAST6 is not set
1237# CONFIG_CRYPTO_TEA is not set 1277# CONFIG_CRYPTO_DES is not set
1238# CONFIG_CRYPTO_ARC4 is not set 1278# CONFIG_CRYPTO_FCRYPT is not set
1239# CONFIG_CRYPTO_KHAZAD is not set 1279# CONFIG_CRYPTO_KHAZAD is not set
1240# CONFIG_CRYPTO_ANUBIS is not set
1241# CONFIG_CRYPTO_SEED is not set
1242# CONFIG_CRYPTO_SALSA20 is not set 1280# CONFIG_CRYPTO_SALSA20 is not set
1281# CONFIG_CRYPTO_SEED is not set
1282# CONFIG_CRYPTO_SERPENT is not set
1283# CONFIG_CRYPTO_TEA is not set
1284# CONFIG_CRYPTO_TWOFISH is not set
1285
1286#
1287# Compression
1288#
1243# CONFIG_CRYPTO_DEFLATE is not set 1289# CONFIG_CRYPTO_DEFLATE is not set
1244# CONFIG_CRYPTO_MICHAEL_MIC is not set
1245# CONFIG_CRYPTO_CRC32C is not set
1246# CONFIG_CRYPTO_CAMELLIA is not set
1247# CONFIG_CRYPTO_TEST is not set
1248# CONFIG_CRYPTO_AUTHENC is not set
1249# CONFIG_CRYPTO_LZO is not set 1290# CONFIG_CRYPTO_LZO is not set
1250CONFIG_CRYPTO_HW=y 1291CONFIG_CRYPTO_HW=y
1251# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1292# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1252# CONFIG_PPC_CLOCK is not set 1293# CONFIG_PPC_CLOCK is not set
1253CONFIG_PPC_LIB_RHEAP=y 1294CONFIG_PPC_LIB_RHEAP=y
1295# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/tqm8540_defconfig b/arch/powerpc/configs/85xx/tqm8540_defconfig
index d39ee3b35bfc..e0b5559e84aa 100644
--- a/arch/powerpc/configs/85xx/tqm8540_defconfig
+++ b/arch/powerpc/configs/85xx/tqm8540_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:43 2008 4# Mon Jun 9 08:52:39 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90# CONFIG_KALLSYMS is not set 93# CONFIG_KALLSYMS is not set
91# CONFIG_HOTPLUG is not set 94# CONFIG_HOTPLUG is not set
92CONFIG_PRINTK=y 95CONFIG_PRINTK=y
@@ -111,6 +114,7 @@ CONFIG_SLUB=y
111CONFIG_HAVE_OPROFILE=y 114CONFIG_HAVE_OPROFILE=y
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
@@ -151,6 +155,7 @@ CONFIG_MPC85xx=y
151# CONFIG_MPC85xx_CDS is not set 155# CONFIG_MPC85xx_CDS is not set
152# CONFIG_MPC85xx_MDS is not set 156# CONFIG_MPC85xx_MDS is not set
153# CONFIG_MPC85xx_DS is not set 157# CONFIG_MPC85xx_DS is not set
158# CONFIG_KSI8560 is not set
154# CONFIG_STX_GP3 is not set 159# CONFIG_STX_GP3 is not set
155CONFIG_TQM8540=y 160CONFIG_TQM8540=y
156# CONFIG_TQM8541 is not set 161# CONFIG_TQM8541 is not set
@@ -171,7 +176,6 @@ CONFIG_MPIC=y
171# CONFIG_GENERIC_IOMAP is not set 176# CONFIG_GENERIC_IOMAP is not set
172# CONFIG_CPU_FREQ is not set 177# CONFIG_CPU_FREQ is not set
173# CONFIG_CPM2 is not set 178# CONFIG_CPM2 is not set
174CONFIG_PPC_CPM_NEW_BINDING=y
175# CONFIG_FSL_ULI1575 is not set 179# CONFIG_FSL_ULI1575 is not set
176 180
177# 181#
@@ -208,11 +212,13 @@ CONFIG_FLATMEM=y
208CONFIG_FLAT_NODE_MEM_MAP=y 212CONFIG_FLAT_NODE_MEM_MAP=y
209# CONFIG_SPARSEMEM_STATIC is not set 213# CONFIG_SPARSEMEM_STATIC is not set
210# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 214# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
215CONFIG_PAGEFLAGS_EXTENDED=y
211CONFIG_SPLIT_PTLOCK_CPUS=4 216CONFIG_SPLIT_PTLOCK_CPUS=4
212# CONFIG_RESOURCES_64BIT is not set 217# CONFIG_RESOURCES_64BIT is not set
213CONFIG_ZONE_DMA_FLAG=1 218CONFIG_ZONE_DMA_FLAG=1
214CONFIG_BOUNCE=y 219CONFIG_BOUNCE=y
215CONFIG_VIRT_TO_BUS=y 220CONFIG_VIRT_TO_BUS=y
221CONFIG_FORCE_MAX_ZONEORDER=11
216# CONFIG_PROC_DEVICETREE is not set 222# CONFIG_PROC_DEVICETREE is not set
217# CONFIG_CMDLINE_BOOL is not set 223# CONFIG_CMDLINE_BOOL is not set
218# CONFIG_PM is not set 224# CONFIG_PM is not set
@@ -233,6 +239,7 @@ CONFIG_PCI_SYSCALL=y
233CONFIG_ARCH_SUPPORTS_MSI=y 239CONFIG_ARCH_SUPPORTS_MSI=y
234# CONFIG_PCI_MSI is not set 240# CONFIG_PCI_MSI is not set
235CONFIG_PCI_LEGACY=y 241CONFIG_PCI_LEGACY=y
242# CONFIG_HAS_RAPIDIO is not set
236 243
237# 244#
238# Advanced setup 245# Advanced setup
@@ -242,11 +249,12 @@ CONFIG_PCI_LEGACY=y
242# 249#
243# Default settings for advanced configuration options are used 250# Default settings for advanced configuration options are used
244# 251#
245CONFIG_HIGHMEM_START=0xfe000000
246CONFIG_LOWMEM_SIZE=0x30000000 252CONFIG_LOWMEM_SIZE=0x30000000
253CONFIG_PAGE_OFFSET=0xc0000000
247CONFIG_KERNEL_START=0xc0000000 254CONFIG_KERNEL_START=0xc0000000
255CONFIG_PHYSICAL_START=0x00000000
256CONFIG_PHYSICAL_ALIGN=0x10000000
248CONFIG_TASK_SIZE=0xc0000000 257CONFIG_TASK_SIZE=0xc0000000
249CONFIG_BOOT_LOAD=0x00800000
250 258
251# 259#
252# Networking 260# Networking
@@ -294,8 +302,6 @@ CONFIG_TCP_CONG_CUBIC=y
294CONFIG_DEFAULT_TCP_CONG="cubic" 302CONFIG_DEFAULT_TCP_CONG="cubic"
295# CONFIG_TCP_MD5SIG is not set 303# CONFIG_TCP_MD5SIG is not set
296# CONFIG_IPV6 is not set 304# CONFIG_IPV6 is not set
297# CONFIG_INET6_XFRM_TUNNEL is not set
298# CONFIG_INET6_TUNNEL is not set
299# CONFIG_NETWORK_SECMARK is not set 305# CONFIG_NETWORK_SECMARK is not set
300# CONFIG_NETFILTER is not set 306# CONFIG_NETFILTER is not set
301# CONFIG_IP_DCCP is not set 307# CONFIG_IP_DCCP is not set
@@ -352,6 +358,7 @@ CONFIG_MTD_PARTITIONS=y
352# CONFIG_MTD_REDBOOT_PARTS is not set 358# CONFIG_MTD_REDBOOT_PARTS is not set
353CONFIG_MTD_CMDLINE_PARTS=y 359CONFIG_MTD_CMDLINE_PARTS=y
354# CONFIG_MTD_OF_PARTS is not set 360# CONFIG_MTD_OF_PARTS is not set
361# CONFIG_MTD_AR7_PARTS is not set
355 362
356# 363#
357# User Modules And Translation Layers 364# User Modules And Translation Layers
@@ -423,6 +430,7 @@ CONFIG_MTD_CFI_UTIL=y
423# 430#
424# CONFIG_MTD_UBI is not set 431# CONFIG_MTD_UBI is not set
425CONFIG_OF_DEVICE=y 432CONFIG_OF_DEVICE=y
433CONFIG_OF_I2C=y
426# CONFIG_PARPORT is not set 434# CONFIG_PARPORT is not set
427CONFIG_BLK_DEV=y 435CONFIG_BLK_DEV=y
428# CONFIG_BLK_DEV_FD is not set 436# CONFIG_BLK_DEV_FD is not set
@@ -506,7 +514,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
506CONFIG_BLK_DEV_VIA82CXXX=y 514CONFIG_BLK_DEV_VIA82CXXX=y
507# CONFIG_BLK_DEV_TC86C001 is not set 515# CONFIG_BLK_DEV_TC86C001 is not set
508CONFIG_BLK_DEV_IDEDMA=y 516CONFIG_BLK_DEV_IDEDMA=y
509CONFIG_IDE_ARCH_OBSOLETE_INIT=y 517# CONFIG_BLK_DEV_HD_ONLY is not set
510# CONFIG_BLK_DEV_HD is not set 518# CONFIG_BLK_DEV_HD is not set
511 519
512# 520#
@@ -600,7 +608,6 @@ CONFIG_NETDEV_1000=y
600# CONFIG_SIS190 is not set 608# CONFIG_SIS190 is not set
601# CONFIG_SKGE is not set 609# CONFIG_SKGE is not set
602# CONFIG_SKY2 is not set 610# CONFIG_SKY2 is not set
603# CONFIG_SK98LIN is not set
604# CONFIG_VIA_VELOCITY is not set 611# CONFIG_VIA_VELOCITY is not set
605# CONFIG_TIGON3 is not set 612# CONFIG_TIGON3 is not set
606# CONFIG_BNX2 is not set 613# CONFIG_BNX2 is not set
@@ -620,6 +627,7 @@ CONFIG_NETDEV_10000=y
620# CONFIG_MLX4_CORE is not set 627# CONFIG_MLX4_CORE is not set
621# CONFIG_TEHUTI is not set 628# CONFIG_TEHUTI is not set
622# CONFIG_BNX2X is not set 629# CONFIG_BNX2X is not set
630# CONFIG_SFC is not set
623# CONFIG_TR is not set 631# CONFIG_TR is not set
624 632
625# 633#
@@ -627,6 +635,7 @@ CONFIG_NETDEV_10000=y
627# 635#
628# CONFIG_WLAN_PRE80211 is not set 636# CONFIG_WLAN_PRE80211 is not set
629# CONFIG_WLAN_80211 is not set 637# CONFIG_WLAN_80211 is not set
638# CONFIG_IWLWIFI_LEDS is not set
630# CONFIG_WAN is not set 639# CONFIG_WAN is not set
631# CONFIG_FDDI is not set 640# CONFIG_FDDI is not set
632# CONFIG_HIPPI is not set 641# CONFIG_HIPPI is not set
@@ -673,6 +682,7 @@ CONFIG_INPUT=y
673# Character devices 682# Character devices
674# 683#
675# CONFIG_VT is not set 684# CONFIG_VT is not set
685CONFIG_DEVKMEM=y
676# CONFIG_SERIAL_NONSTANDARD is not set 686# CONFIG_SERIAL_NONSTANDARD is not set
677# CONFIG_NOZOMI is not set 687# CONFIG_NOZOMI is not set
678 688
@@ -713,13 +723,6 @@ CONFIG_I2C_BOARDINFO=y
713CONFIG_I2C_CHARDEV=y 723CONFIG_I2C_CHARDEV=y
714 724
715# 725#
716# I2C Algorithms
717#
718# CONFIG_I2C_ALGOBIT is not set
719# CONFIG_I2C_ALGOPCF is not set
720# CONFIG_I2C_ALGOPCA is not set
721
722#
723# I2C Hardware Bus support 726# I2C Hardware Bus support
724# 727#
725# CONFIG_I2C_ALI1535 is not set 728# CONFIG_I2C_ALI1535 is not set
@@ -744,6 +747,7 @@ CONFIG_I2C_MPC=y
744# CONFIG_I2C_VIA is not set 747# CONFIG_I2C_VIA is not set
745# CONFIG_I2C_VIAPRO is not set 748# CONFIG_I2C_VIAPRO is not set
746# CONFIG_I2C_VOODOO3 is not set 749# CONFIG_I2C_VOODOO3 is not set
750# CONFIG_I2C_PCA_PLATFORM is not set
747 751
748# 752#
749# Miscellaneous I2C Chip support 753# Miscellaneous I2C Chip support
@@ -753,19 +757,13 @@ CONFIG_I2C_MPC=y
753# CONFIG_SENSORS_PCF8574 is not set 757# CONFIG_SENSORS_PCF8574 is not set
754# CONFIG_PCF8575 is not set 758# CONFIG_PCF8575 is not set
755# CONFIG_SENSORS_PCF8591 is not set 759# CONFIG_SENSORS_PCF8591 is not set
756# CONFIG_TPS65010 is not set
757# CONFIG_SENSORS_MAX6875 is not set 760# CONFIG_SENSORS_MAX6875 is not set
758# CONFIG_SENSORS_TSL2550 is not set 761# CONFIG_SENSORS_TSL2550 is not set
759# CONFIG_I2C_DEBUG_CORE is not set 762# CONFIG_I2C_DEBUG_CORE is not set
760# CONFIG_I2C_DEBUG_ALGO is not set 763# CONFIG_I2C_DEBUG_ALGO is not set
761# CONFIG_I2C_DEBUG_BUS is not set 764# CONFIG_I2C_DEBUG_BUS is not set
762# CONFIG_I2C_DEBUG_CHIP is not set 765# CONFIG_I2C_DEBUG_CHIP is not set
763
764#
765# SPI support
766#
767# CONFIG_SPI is not set 766# CONFIG_SPI is not set
768# CONFIG_SPI_MASTER is not set
769# CONFIG_W1 is not set 767# CONFIG_W1 is not set
770# CONFIG_POWER_SUPPLY is not set 768# CONFIG_POWER_SUPPLY is not set
771CONFIG_HWMON=y 769CONFIG_HWMON=y
@@ -835,12 +833,22 @@ CONFIG_SSB_POSSIBLE=y
835# Multifunction device drivers 833# Multifunction device drivers
836# 834#
837# CONFIG_MFD_SM501 is not set 835# CONFIG_MFD_SM501 is not set
836# CONFIG_HTC_PASIC3 is not set
838 837
839# 838#
840# Multimedia devices 839# Multimedia devices
841# 840#
841
842#
843# Multimedia core support
844#
842# CONFIG_VIDEO_DEV is not set 845# CONFIG_VIDEO_DEV is not set
843# CONFIG_DVB_CORE is not set 846# CONFIG_DVB_CORE is not set
847# CONFIG_VIDEO_MEDIA is not set
848
849#
850# Multimedia drivers
851#
844CONFIG_DAB=y 852CONFIG_DAB=y
845 853
846# 854#
@@ -871,6 +879,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
871CONFIG_USB_ARCH_HAS_OHCI=y 879CONFIG_USB_ARCH_HAS_OHCI=y
872CONFIG_USB_ARCH_HAS_EHCI=y 880CONFIG_USB_ARCH_HAS_EHCI=y
873# CONFIG_USB is not set 881# CONFIG_USB is not set
882# CONFIG_USB_OTG_WHITELIST is not set
883# CONFIG_USB_OTG_BLACKLIST_HUB is not set
874 884
875# 885#
876# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 886# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -879,14 +889,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
879# CONFIG_MMC is not set 889# CONFIG_MMC is not set
880# CONFIG_MEMSTICK is not set 890# CONFIG_MEMSTICK is not set
881# CONFIG_NEW_LEDS is not set 891# CONFIG_NEW_LEDS is not set
892# CONFIG_ACCESSIBILITY is not set
882# CONFIG_INFINIBAND is not set 893# CONFIG_INFINIBAND is not set
883# CONFIG_EDAC is not set 894# CONFIG_EDAC is not set
884# CONFIG_RTC_CLASS is not set 895# CONFIG_RTC_CLASS is not set
885# CONFIG_DMADEVICES is not set 896# CONFIG_DMADEVICES is not set
886
887#
888# Userspace I/O
889#
890# CONFIG_UIO is not set 897# CONFIG_UIO is not set
891 898
892# 899#
@@ -906,7 +913,6 @@ CONFIG_FS_MBCACHE=y
906# CONFIG_JFS_FS is not set 913# CONFIG_JFS_FS is not set
907# CONFIG_FS_POSIX_ACL is not set 914# CONFIG_FS_POSIX_ACL is not set
908# CONFIG_XFS_FS is not set 915# CONFIG_XFS_FS is not set
909# CONFIG_GFS2_FS is not set
910# CONFIG_OCFS2_FS is not set 916# CONFIG_OCFS2_FS is not set
911CONFIG_DNOTIFY=y 917CONFIG_DNOTIFY=y
912CONFIG_INOTIFY=y 918CONFIG_INOTIFY=y
@@ -974,7 +980,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
974CONFIG_NFS_FS=y 980CONFIG_NFS_FS=y
975# CONFIG_NFS_V3 is not set 981# CONFIG_NFS_V3 is not set
976# CONFIG_NFS_V4 is not set 982# CONFIG_NFS_V4 is not set
977# CONFIG_NFS_DIRECTIO is not set
978# CONFIG_NFSD is not set 983# CONFIG_NFSD is not set
979CONFIG_ROOT_NFS=y 984CONFIG_ROOT_NFS=y
980CONFIG_LOCKD=y 985CONFIG_LOCKD=y
@@ -1013,6 +1018,7 @@ CONFIG_PARTITION_ADVANCED=y
1013# Library routines 1018# Library routines
1014# 1019#
1015CONFIG_BITREVERSE=y 1020CONFIG_BITREVERSE=y
1021# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1016# CONFIG_CRC_CCITT is not set 1022# CONFIG_CRC_CCITT is not set
1017# CONFIG_CRC16 is not set 1023# CONFIG_CRC16 is not set
1018# CONFIG_CRC_ITU_T is not set 1024# CONFIG_CRC_ITU_T is not set
@@ -1025,6 +1031,7 @@ CONFIG_PLIST=y
1025CONFIG_HAS_IOMEM=y 1031CONFIG_HAS_IOMEM=y
1026CONFIG_HAS_IOPORT=y 1032CONFIG_HAS_IOPORT=y
1027CONFIG_HAS_DMA=y 1033CONFIG_HAS_DMA=y
1034CONFIG_HAVE_LMB=y
1028 1035
1029# 1036#
1030# Kernel hacking 1037# Kernel hacking
@@ -1032,6 +1039,7 @@ CONFIG_HAS_DMA=y
1032# CONFIG_PRINTK_TIME is not set 1039# CONFIG_PRINTK_TIME is not set
1033CONFIG_ENABLE_WARN_DEPRECATED=y 1040CONFIG_ENABLE_WARN_DEPRECATED=y
1034CONFIG_ENABLE_MUST_CHECK=y 1041CONFIG_ENABLE_MUST_CHECK=y
1042CONFIG_FRAME_WARN=1024
1035# CONFIG_MAGIC_SYSRQ is not set 1043# CONFIG_MAGIC_SYSRQ is not set
1036# CONFIG_UNUSED_SYMBOLS is not set 1044# CONFIG_UNUSED_SYMBOLS is not set
1037# CONFIG_DEBUG_FS is not set 1045# CONFIG_DEBUG_FS is not set
@@ -1041,6 +1049,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1041# CONFIG_SLUB_STATS is not set 1049# CONFIG_SLUB_STATS is not set
1042# CONFIG_DEBUG_BUGVERBOSE is not set 1050# CONFIG_DEBUG_BUGVERBOSE is not set
1043# CONFIG_SAMPLES is not set 1051# CONFIG_SAMPLES is not set
1052# CONFIG_IRQSTACKS is not set
1044# CONFIG_PPC_EARLY_DEBUG is not set 1053# CONFIG_PPC_EARLY_DEBUG is not set
1045 1054
1046# 1055#
@@ -1050,48 +1059,78 @@ CONFIG_ENABLE_MUST_CHECK=y
1050# CONFIG_SECURITY is not set 1059# CONFIG_SECURITY is not set
1051# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1060# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1052CONFIG_CRYPTO=y 1061CONFIG_CRYPTO=y
1053# CONFIG_CRYPTO_SEQIV is not set 1062
1063#
1064# Crypto core or helper
1065#
1054# CONFIG_CRYPTO_MANAGER is not set 1066# CONFIG_CRYPTO_MANAGER is not set
1067# CONFIG_CRYPTO_GF128MUL is not set
1068# CONFIG_CRYPTO_NULL is not set
1069# CONFIG_CRYPTO_CRYPTD is not set
1070# CONFIG_CRYPTO_AUTHENC is not set
1071
1072#
1073# Authenticated Encryption with Associated Data
1074#
1075# CONFIG_CRYPTO_CCM is not set
1076# CONFIG_CRYPTO_GCM is not set
1077# CONFIG_CRYPTO_SEQIV is not set
1078
1079#
1080# Block modes
1081#
1082# CONFIG_CRYPTO_CBC is not set
1083# CONFIG_CRYPTO_CTR is not set
1084# CONFIG_CRYPTO_CTS is not set
1085# CONFIG_CRYPTO_ECB is not set
1086# CONFIG_CRYPTO_LRW is not set
1087# CONFIG_CRYPTO_PCBC is not set
1088# CONFIG_CRYPTO_XTS is not set
1089
1090#
1091# Hash modes
1092#
1055# CONFIG_CRYPTO_HMAC is not set 1093# CONFIG_CRYPTO_HMAC is not set
1056# CONFIG_CRYPTO_XCBC is not set 1094# CONFIG_CRYPTO_XCBC is not set
1057# CONFIG_CRYPTO_NULL is not set 1095
1096#
1097# Digest
1098#
1099# CONFIG_CRYPTO_CRC32C is not set
1058# CONFIG_CRYPTO_MD4 is not set 1100# CONFIG_CRYPTO_MD4 is not set
1059# CONFIG_CRYPTO_MD5 is not set 1101# CONFIG_CRYPTO_MD5 is not set
1102# CONFIG_CRYPTO_MICHAEL_MIC is not set
1060# CONFIG_CRYPTO_SHA1 is not set 1103# CONFIG_CRYPTO_SHA1 is not set
1061# CONFIG_CRYPTO_SHA256 is not set 1104# CONFIG_CRYPTO_SHA256 is not set
1062# CONFIG_CRYPTO_SHA512 is not set 1105# CONFIG_CRYPTO_SHA512 is not set
1063# CONFIG_CRYPTO_WP512 is not set
1064# CONFIG_CRYPTO_TGR192 is not set 1106# CONFIG_CRYPTO_TGR192 is not set
1065# CONFIG_CRYPTO_GF128MUL is not set 1107# CONFIG_CRYPTO_WP512 is not set
1066# CONFIG_CRYPTO_ECB is not set 1108
1067# CONFIG_CRYPTO_CBC is not set 1109#
1068# CONFIG_CRYPTO_PCBC is not set 1110# Ciphers
1069# CONFIG_CRYPTO_LRW is not set 1111#
1070# CONFIG_CRYPTO_XTS is not set
1071# CONFIG_CRYPTO_CTR is not set
1072# CONFIG_CRYPTO_GCM is not set
1073# CONFIG_CRYPTO_CCM is not set
1074# CONFIG_CRYPTO_CRYPTD is not set
1075# CONFIG_CRYPTO_DES is not set
1076# CONFIG_CRYPTO_FCRYPT is not set
1077# CONFIG_CRYPTO_BLOWFISH is not set
1078# CONFIG_CRYPTO_TWOFISH is not set
1079# CONFIG_CRYPTO_SERPENT is not set
1080# CONFIG_CRYPTO_AES is not set 1112# CONFIG_CRYPTO_AES is not set
1113# CONFIG_CRYPTO_ANUBIS is not set
1114# CONFIG_CRYPTO_ARC4 is not set
1115# CONFIG_CRYPTO_BLOWFISH is not set
1116# CONFIG_CRYPTO_CAMELLIA is not set
1081# CONFIG_CRYPTO_CAST5 is not set 1117# CONFIG_CRYPTO_CAST5 is not set
1082# CONFIG_CRYPTO_CAST6 is not set 1118# CONFIG_CRYPTO_CAST6 is not set
1083# CONFIG_CRYPTO_TEA is not set 1119# CONFIG_CRYPTO_DES is not set
1084# CONFIG_CRYPTO_ARC4 is not set 1120# CONFIG_CRYPTO_FCRYPT is not set
1085# CONFIG_CRYPTO_KHAZAD is not set 1121# CONFIG_CRYPTO_KHAZAD is not set
1086# CONFIG_CRYPTO_ANUBIS is not set
1087# CONFIG_CRYPTO_SEED is not set
1088# CONFIG_CRYPTO_SALSA20 is not set 1122# CONFIG_CRYPTO_SALSA20 is not set
1123# CONFIG_CRYPTO_SEED is not set
1124# CONFIG_CRYPTO_SERPENT is not set
1125# CONFIG_CRYPTO_TEA is not set
1126# CONFIG_CRYPTO_TWOFISH is not set
1127
1128#
1129# Compression
1130#
1089# CONFIG_CRYPTO_DEFLATE is not set 1131# CONFIG_CRYPTO_DEFLATE is not set
1090# CONFIG_CRYPTO_MICHAEL_MIC is not set
1091# CONFIG_CRYPTO_CRC32C is not set
1092# CONFIG_CRYPTO_CAMELLIA is not set
1093# CONFIG_CRYPTO_AUTHENC is not set
1094# CONFIG_CRYPTO_LZO is not set 1132# CONFIG_CRYPTO_LZO is not set
1095CONFIG_CRYPTO_HW=y 1133CONFIG_CRYPTO_HW=y
1096# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1134# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1097# CONFIG_PPC_CLOCK is not set 1135# CONFIG_PPC_CLOCK is not set
1136# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/tqm8541_defconfig b/arch/powerpc/configs/85xx/tqm8541_defconfig
index cbf6ad2d71da..6f9067b49e07 100644
--- a/arch/powerpc/configs/85xx/tqm8541_defconfig
+++ b/arch/powerpc/configs/85xx/tqm8541_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:44 2008 4# Mon Jun 9 08:52:40 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90# CONFIG_KALLSYMS is not set 93# CONFIG_KALLSYMS is not set
91# CONFIG_HOTPLUG is not set 94# CONFIG_HOTPLUG is not set
92CONFIG_PRINTK=y 95CONFIG_PRINTK=y
@@ -111,6 +114,7 @@ CONFIG_SLUB=y
111CONFIG_HAVE_OPROFILE=y 114CONFIG_HAVE_OPROFILE=y
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
@@ -151,6 +155,7 @@ CONFIG_MPC85xx=y
151# CONFIG_MPC85xx_CDS is not set 155# CONFIG_MPC85xx_CDS is not set
152# CONFIG_MPC85xx_MDS is not set 156# CONFIG_MPC85xx_MDS is not set
153# CONFIG_MPC85xx_DS is not set 157# CONFIG_MPC85xx_DS is not set
158# CONFIG_KSI8560 is not set
154# CONFIG_STX_GP3 is not set 159# CONFIG_STX_GP3 is not set
155# CONFIG_TQM8540 is not set 160# CONFIG_TQM8540 is not set
156CONFIG_TQM8541=y 161CONFIG_TQM8541=y
@@ -209,11 +214,13 @@ CONFIG_FLATMEM=y
209CONFIG_FLAT_NODE_MEM_MAP=y 214CONFIG_FLAT_NODE_MEM_MAP=y
210# CONFIG_SPARSEMEM_STATIC is not set 215# CONFIG_SPARSEMEM_STATIC is not set
211# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 216# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
217CONFIG_PAGEFLAGS_EXTENDED=y
212CONFIG_SPLIT_PTLOCK_CPUS=4 218CONFIG_SPLIT_PTLOCK_CPUS=4
213# CONFIG_RESOURCES_64BIT is not set 219# CONFIG_RESOURCES_64BIT is not set
214CONFIG_ZONE_DMA_FLAG=1 220CONFIG_ZONE_DMA_FLAG=1
215CONFIG_BOUNCE=y 221CONFIG_BOUNCE=y
216CONFIG_VIRT_TO_BUS=y 222CONFIG_VIRT_TO_BUS=y
223CONFIG_FORCE_MAX_ZONEORDER=11
217# CONFIG_PROC_DEVICETREE is not set 224# CONFIG_PROC_DEVICETREE is not set
218# CONFIG_CMDLINE_BOOL is not set 225# CONFIG_CMDLINE_BOOL is not set
219# CONFIG_PM is not set 226# CONFIG_PM is not set
@@ -234,6 +241,7 @@ CONFIG_PCI_SYSCALL=y
234CONFIG_ARCH_SUPPORTS_MSI=y 241CONFIG_ARCH_SUPPORTS_MSI=y
235# CONFIG_PCI_MSI is not set 242# CONFIG_PCI_MSI is not set
236CONFIG_PCI_LEGACY=y 243CONFIG_PCI_LEGACY=y
244# CONFIG_HAS_RAPIDIO is not set
237 245
238# 246#
239# Advanced setup 247# Advanced setup
@@ -243,11 +251,12 @@ CONFIG_PCI_LEGACY=y
243# 251#
244# Default settings for advanced configuration options are used 252# Default settings for advanced configuration options are used
245# 253#
246CONFIG_HIGHMEM_START=0xfe000000
247CONFIG_LOWMEM_SIZE=0x30000000 254CONFIG_LOWMEM_SIZE=0x30000000
255CONFIG_PAGE_OFFSET=0xc0000000
248CONFIG_KERNEL_START=0xc0000000 256CONFIG_KERNEL_START=0xc0000000
257CONFIG_PHYSICAL_START=0x00000000
258CONFIG_PHYSICAL_ALIGN=0x10000000
249CONFIG_TASK_SIZE=0xc0000000 259CONFIG_TASK_SIZE=0xc0000000
250CONFIG_BOOT_LOAD=0x00800000
251 260
252# 261#
253# Networking 262# Networking
@@ -295,8 +304,6 @@ CONFIG_TCP_CONG_CUBIC=y
295CONFIG_DEFAULT_TCP_CONG="cubic" 304CONFIG_DEFAULT_TCP_CONG="cubic"
296# CONFIG_TCP_MD5SIG is not set 305# CONFIG_TCP_MD5SIG is not set
297# CONFIG_IPV6 is not set 306# CONFIG_IPV6 is not set
298# CONFIG_INET6_XFRM_TUNNEL is not set
299# CONFIG_INET6_TUNNEL is not set
300# CONFIG_NETWORK_SECMARK is not set 307# CONFIG_NETWORK_SECMARK is not set
301# CONFIG_NETFILTER is not set 308# CONFIG_NETFILTER is not set
302# CONFIG_IP_DCCP is not set 309# CONFIG_IP_DCCP is not set
@@ -353,6 +360,7 @@ CONFIG_MTD_PARTITIONS=y
353# CONFIG_MTD_REDBOOT_PARTS is not set 360# CONFIG_MTD_REDBOOT_PARTS is not set
354CONFIG_MTD_CMDLINE_PARTS=y 361CONFIG_MTD_CMDLINE_PARTS=y
355# CONFIG_MTD_OF_PARTS is not set 362# CONFIG_MTD_OF_PARTS is not set
363# CONFIG_MTD_AR7_PARTS is not set
356 364
357# 365#
358# User Modules And Translation Layers 366# User Modules And Translation Layers
@@ -424,6 +432,7 @@ CONFIG_MTD_CFI_UTIL=y
424# 432#
425# CONFIG_MTD_UBI is not set 433# CONFIG_MTD_UBI is not set
426CONFIG_OF_DEVICE=y 434CONFIG_OF_DEVICE=y
435CONFIG_OF_I2C=y
427# CONFIG_PARPORT is not set 436# CONFIG_PARPORT is not set
428CONFIG_BLK_DEV=y 437CONFIG_BLK_DEV=y
429# CONFIG_BLK_DEV_FD is not set 438# CONFIG_BLK_DEV_FD is not set
@@ -507,7 +516,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
507CONFIG_BLK_DEV_VIA82CXXX=y 516CONFIG_BLK_DEV_VIA82CXXX=y
508# CONFIG_BLK_DEV_TC86C001 is not set 517# CONFIG_BLK_DEV_TC86C001 is not set
509CONFIG_BLK_DEV_IDEDMA=y 518CONFIG_BLK_DEV_IDEDMA=y
510CONFIG_IDE_ARCH_OBSOLETE_INIT=y 519# CONFIG_BLK_DEV_HD_ONLY is not set
511# CONFIG_BLK_DEV_HD is not set 520# CONFIG_BLK_DEV_HD is not set
512 521
513# 522#
@@ -602,7 +611,6 @@ CONFIG_NETDEV_1000=y
602# CONFIG_SIS190 is not set 611# CONFIG_SIS190 is not set
603# CONFIG_SKGE is not set 612# CONFIG_SKGE is not set
604# CONFIG_SKY2 is not set 613# CONFIG_SKY2 is not set
605# CONFIG_SK98LIN is not set
606# CONFIG_VIA_VELOCITY is not set 614# CONFIG_VIA_VELOCITY is not set
607# CONFIG_TIGON3 is not set 615# CONFIG_TIGON3 is not set
608# CONFIG_BNX2 is not set 616# CONFIG_BNX2 is not set
@@ -622,6 +630,7 @@ CONFIG_NETDEV_10000=y
622# CONFIG_MLX4_CORE is not set 630# CONFIG_MLX4_CORE is not set
623# CONFIG_TEHUTI is not set 631# CONFIG_TEHUTI is not set
624# CONFIG_BNX2X is not set 632# CONFIG_BNX2X is not set
633# CONFIG_SFC is not set
625# CONFIG_TR is not set 634# CONFIG_TR is not set
626 635
627# 636#
@@ -629,6 +638,7 @@ CONFIG_NETDEV_10000=y
629# 638#
630# CONFIG_WLAN_PRE80211 is not set 639# CONFIG_WLAN_PRE80211 is not set
631# CONFIG_WLAN_80211 is not set 640# CONFIG_WLAN_80211 is not set
641# CONFIG_IWLWIFI_LEDS is not set
632# CONFIG_WAN is not set 642# CONFIG_WAN is not set
633# CONFIG_FDDI is not set 643# CONFIG_FDDI is not set
634# CONFIG_HIPPI is not set 644# CONFIG_HIPPI is not set
@@ -675,6 +685,7 @@ CONFIG_INPUT=y
675# Character devices 685# Character devices
676# 686#
677# CONFIG_VT is not set 687# CONFIG_VT is not set
688CONFIG_DEVKMEM=y
678# CONFIG_SERIAL_NONSTANDARD is not set 689# CONFIG_SERIAL_NONSTANDARD is not set
679# CONFIG_NOZOMI is not set 690# CONFIG_NOZOMI is not set
680 691
@@ -723,13 +734,6 @@ CONFIG_I2C_BOARDINFO=y
723CONFIG_I2C_CHARDEV=y 734CONFIG_I2C_CHARDEV=y
724 735
725# 736#
726# I2C Algorithms
727#
728# CONFIG_I2C_ALGOBIT is not set
729# CONFIG_I2C_ALGOPCF is not set
730# CONFIG_I2C_ALGOPCA is not set
731
732#
733# I2C Hardware Bus support 737# I2C Hardware Bus support
734# 738#
735# CONFIG_I2C_ALI1535 is not set 739# CONFIG_I2C_ALI1535 is not set
@@ -754,6 +758,7 @@ CONFIG_I2C_MPC=y
754# CONFIG_I2C_VIA is not set 758# CONFIG_I2C_VIA is not set
755# CONFIG_I2C_VIAPRO is not set 759# CONFIG_I2C_VIAPRO is not set
756# CONFIG_I2C_VOODOO3 is not set 760# CONFIG_I2C_VOODOO3 is not set
761# CONFIG_I2C_PCA_PLATFORM is not set
757 762
758# 763#
759# Miscellaneous I2C Chip support 764# Miscellaneous I2C Chip support
@@ -763,19 +768,13 @@ CONFIG_I2C_MPC=y
763# CONFIG_SENSORS_PCF8574 is not set 768# CONFIG_SENSORS_PCF8574 is not set
764# CONFIG_PCF8575 is not set 769# CONFIG_PCF8575 is not set
765# CONFIG_SENSORS_PCF8591 is not set 770# CONFIG_SENSORS_PCF8591 is not set
766# CONFIG_TPS65010 is not set
767# CONFIG_SENSORS_MAX6875 is not set 771# CONFIG_SENSORS_MAX6875 is not set
768# CONFIG_SENSORS_TSL2550 is not set 772# CONFIG_SENSORS_TSL2550 is not set
769# CONFIG_I2C_DEBUG_CORE is not set 773# CONFIG_I2C_DEBUG_CORE is not set
770# CONFIG_I2C_DEBUG_ALGO is not set 774# CONFIG_I2C_DEBUG_ALGO is not set
771# CONFIG_I2C_DEBUG_BUS is not set 775# CONFIG_I2C_DEBUG_BUS is not set
772# CONFIG_I2C_DEBUG_CHIP is not set 776# CONFIG_I2C_DEBUG_CHIP is not set
773
774#
775# SPI support
776#
777# CONFIG_SPI is not set 777# CONFIG_SPI is not set
778# CONFIG_SPI_MASTER is not set
779# CONFIG_W1 is not set 778# CONFIG_W1 is not set
780# CONFIG_POWER_SUPPLY is not set 779# CONFIG_POWER_SUPPLY is not set
781CONFIG_HWMON=y 780CONFIG_HWMON=y
@@ -845,12 +844,22 @@ CONFIG_SSB_POSSIBLE=y
845# Multifunction device drivers 844# Multifunction device drivers
846# 845#
847# CONFIG_MFD_SM501 is not set 846# CONFIG_MFD_SM501 is not set
847# CONFIG_HTC_PASIC3 is not set
848 848
849# 849#
850# Multimedia devices 850# Multimedia devices
851# 851#
852
853#
854# Multimedia core support
855#
852# CONFIG_VIDEO_DEV is not set 856# CONFIG_VIDEO_DEV is not set
853# CONFIG_DVB_CORE is not set 857# CONFIG_DVB_CORE is not set
858# CONFIG_VIDEO_MEDIA is not set
859
860#
861# Multimedia drivers
862#
854CONFIG_DAB=y 863CONFIG_DAB=y
855 864
856# 865#
@@ -881,6 +890,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
881CONFIG_USB_ARCH_HAS_OHCI=y 890CONFIG_USB_ARCH_HAS_OHCI=y
882CONFIG_USB_ARCH_HAS_EHCI=y 891CONFIG_USB_ARCH_HAS_EHCI=y
883# CONFIG_USB is not set 892# CONFIG_USB is not set
893# CONFIG_USB_OTG_WHITELIST is not set
894# CONFIG_USB_OTG_BLACKLIST_HUB is not set
884 895
885# 896#
886# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 897# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -889,14 +900,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
889# CONFIG_MMC is not set 900# CONFIG_MMC is not set
890# CONFIG_MEMSTICK is not set 901# CONFIG_MEMSTICK is not set
891# CONFIG_NEW_LEDS is not set 902# CONFIG_NEW_LEDS is not set
903# CONFIG_ACCESSIBILITY is not set
892# CONFIG_INFINIBAND is not set 904# CONFIG_INFINIBAND is not set
893# CONFIG_EDAC is not set 905# CONFIG_EDAC is not set
894# CONFIG_RTC_CLASS is not set 906# CONFIG_RTC_CLASS is not set
895# CONFIG_DMADEVICES is not set 907# CONFIG_DMADEVICES is not set
896
897#
898# Userspace I/O
899#
900# CONFIG_UIO is not set 908# CONFIG_UIO is not set
901 909
902# 910#
@@ -916,7 +924,6 @@ CONFIG_FS_MBCACHE=y
916# CONFIG_JFS_FS is not set 924# CONFIG_JFS_FS is not set
917# CONFIG_FS_POSIX_ACL is not set 925# CONFIG_FS_POSIX_ACL is not set
918# CONFIG_XFS_FS is not set 926# CONFIG_XFS_FS is not set
919# CONFIG_GFS2_FS is not set
920# CONFIG_OCFS2_FS is not set 927# CONFIG_OCFS2_FS is not set
921CONFIG_DNOTIFY=y 928CONFIG_DNOTIFY=y
922CONFIG_INOTIFY=y 929CONFIG_INOTIFY=y
@@ -984,7 +991,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
984CONFIG_NFS_FS=y 991CONFIG_NFS_FS=y
985# CONFIG_NFS_V3 is not set 992# CONFIG_NFS_V3 is not set
986# CONFIG_NFS_V4 is not set 993# CONFIG_NFS_V4 is not set
987# CONFIG_NFS_DIRECTIO is not set
988# CONFIG_NFSD is not set 994# CONFIG_NFSD is not set
989CONFIG_ROOT_NFS=y 995CONFIG_ROOT_NFS=y
990CONFIG_LOCKD=y 996CONFIG_LOCKD=y
@@ -1023,6 +1029,7 @@ CONFIG_PARTITION_ADVANCED=y
1023# Library routines 1029# Library routines
1024# 1030#
1025CONFIG_BITREVERSE=y 1031CONFIG_BITREVERSE=y
1032# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1026# CONFIG_CRC_CCITT is not set 1033# CONFIG_CRC_CCITT is not set
1027# CONFIG_CRC16 is not set 1034# CONFIG_CRC16 is not set
1028# CONFIG_CRC_ITU_T is not set 1035# CONFIG_CRC_ITU_T is not set
@@ -1035,6 +1042,7 @@ CONFIG_PLIST=y
1035CONFIG_HAS_IOMEM=y 1042CONFIG_HAS_IOMEM=y
1036CONFIG_HAS_IOPORT=y 1043CONFIG_HAS_IOPORT=y
1037CONFIG_HAS_DMA=y 1044CONFIG_HAS_DMA=y
1045CONFIG_HAVE_LMB=y
1038 1046
1039# 1047#
1040# Kernel hacking 1048# Kernel hacking
@@ -1042,6 +1050,7 @@ CONFIG_HAS_DMA=y
1042# CONFIG_PRINTK_TIME is not set 1050# CONFIG_PRINTK_TIME is not set
1043CONFIG_ENABLE_WARN_DEPRECATED=y 1051CONFIG_ENABLE_WARN_DEPRECATED=y
1044CONFIG_ENABLE_MUST_CHECK=y 1052CONFIG_ENABLE_MUST_CHECK=y
1053CONFIG_FRAME_WARN=1024
1045# CONFIG_MAGIC_SYSRQ is not set 1054# CONFIG_MAGIC_SYSRQ is not set
1046# CONFIG_UNUSED_SYMBOLS is not set 1055# CONFIG_UNUSED_SYMBOLS is not set
1047# CONFIG_DEBUG_FS is not set 1056# CONFIG_DEBUG_FS is not set
@@ -1052,6 +1061,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1052# CONFIG_DEBUG_BUGVERBOSE is not set 1061# CONFIG_DEBUG_BUGVERBOSE is not set
1053# CONFIG_SAMPLES is not set 1062# CONFIG_SAMPLES is not set
1054# CONFIG_KGDB_CONSOLE is not set 1063# CONFIG_KGDB_CONSOLE is not set
1064# CONFIG_IRQSTACKS is not set
1055# CONFIG_PPC_EARLY_DEBUG is not set 1065# CONFIG_PPC_EARLY_DEBUG is not set
1056 1066
1057# 1067#
@@ -1061,49 +1071,79 @@ CONFIG_ENABLE_MUST_CHECK=y
1061# CONFIG_SECURITY is not set 1071# CONFIG_SECURITY is not set
1062# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1072# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1063CONFIG_CRYPTO=y 1073CONFIG_CRYPTO=y
1064# CONFIG_CRYPTO_SEQIV is not set 1074
1075#
1076# Crypto core or helper
1077#
1065# CONFIG_CRYPTO_MANAGER is not set 1078# CONFIG_CRYPTO_MANAGER is not set
1079# CONFIG_CRYPTO_GF128MUL is not set
1080# CONFIG_CRYPTO_NULL is not set
1081# CONFIG_CRYPTO_CRYPTD is not set
1082# CONFIG_CRYPTO_AUTHENC is not set
1083
1084#
1085# Authenticated Encryption with Associated Data
1086#
1087# CONFIG_CRYPTO_CCM is not set
1088# CONFIG_CRYPTO_GCM is not set
1089# CONFIG_CRYPTO_SEQIV is not set
1090
1091#
1092# Block modes
1093#
1094# CONFIG_CRYPTO_CBC is not set
1095# CONFIG_CRYPTO_CTR is not set
1096# CONFIG_CRYPTO_CTS is not set
1097# CONFIG_CRYPTO_ECB is not set
1098# CONFIG_CRYPTO_LRW is not set
1099# CONFIG_CRYPTO_PCBC is not set
1100# CONFIG_CRYPTO_XTS is not set
1101
1102#
1103# Hash modes
1104#
1066# CONFIG_CRYPTO_HMAC is not set 1105# CONFIG_CRYPTO_HMAC is not set
1067# CONFIG_CRYPTO_XCBC is not set 1106# CONFIG_CRYPTO_XCBC is not set
1068# CONFIG_CRYPTO_NULL is not set 1107
1108#
1109# Digest
1110#
1111# CONFIG_CRYPTO_CRC32C is not set
1069# CONFIG_CRYPTO_MD4 is not set 1112# CONFIG_CRYPTO_MD4 is not set
1070# CONFIG_CRYPTO_MD5 is not set 1113# CONFIG_CRYPTO_MD5 is not set
1114# CONFIG_CRYPTO_MICHAEL_MIC is not set
1071# CONFIG_CRYPTO_SHA1 is not set 1115# CONFIG_CRYPTO_SHA1 is not set
1072# CONFIG_CRYPTO_SHA256 is not set 1116# CONFIG_CRYPTO_SHA256 is not set
1073# CONFIG_CRYPTO_SHA512 is not set 1117# CONFIG_CRYPTO_SHA512 is not set
1074# CONFIG_CRYPTO_WP512 is not set
1075# CONFIG_CRYPTO_TGR192 is not set 1118# CONFIG_CRYPTO_TGR192 is not set
1076# CONFIG_CRYPTO_GF128MUL is not set 1119# CONFIG_CRYPTO_WP512 is not set
1077# CONFIG_CRYPTO_ECB is not set 1120
1078# CONFIG_CRYPTO_CBC is not set 1121#
1079# CONFIG_CRYPTO_PCBC is not set 1122# Ciphers
1080# CONFIG_CRYPTO_LRW is not set 1123#
1081# CONFIG_CRYPTO_XTS is not set
1082# CONFIG_CRYPTO_CTR is not set
1083# CONFIG_CRYPTO_GCM is not set
1084# CONFIG_CRYPTO_CCM is not set
1085# CONFIG_CRYPTO_CRYPTD is not set
1086# CONFIG_CRYPTO_DES is not set
1087# CONFIG_CRYPTO_FCRYPT is not set
1088# CONFIG_CRYPTO_BLOWFISH is not set
1089# CONFIG_CRYPTO_TWOFISH is not set
1090# CONFIG_CRYPTO_SERPENT is not set
1091# CONFIG_CRYPTO_AES is not set 1124# CONFIG_CRYPTO_AES is not set
1125# CONFIG_CRYPTO_ANUBIS is not set
1126# CONFIG_CRYPTO_ARC4 is not set
1127# CONFIG_CRYPTO_BLOWFISH is not set
1128# CONFIG_CRYPTO_CAMELLIA is not set
1092# CONFIG_CRYPTO_CAST5 is not set 1129# CONFIG_CRYPTO_CAST5 is not set
1093# CONFIG_CRYPTO_CAST6 is not set 1130# CONFIG_CRYPTO_CAST6 is not set
1094# CONFIG_CRYPTO_TEA is not set 1131# CONFIG_CRYPTO_DES is not set
1095# CONFIG_CRYPTO_ARC4 is not set 1132# CONFIG_CRYPTO_FCRYPT is not set
1096# CONFIG_CRYPTO_KHAZAD is not set 1133# CONFIG_CRYPTO_KHAZAD is not set
1097# CONFIG_CRYPTO_ANUBIS is not set
1098# CONFIG_CRYPTO_SEED is not set
1099# CONFIG_CRYPTO_SALSA20 is not set 1134# CONFIG_CRYPTO_SALSA20 is not set
1135# CONFIG_CRYPTO_SEED is not set
1136# CONFIG_CRYPTO_SERPENT is not set
1137# CONFIG_CRYPTO_TEA is not set
1138# CONFIG_CRYPTO_TWOFISH is not set
1139
1140#
1141# Compression
1142#
1100# CONFIG_CRYPTO_DEFLATE is not set 1143# CONFIG_CRYPTO_DEFLATE is not set
1101# CONFIG_CRYPTO_MICHAEL_MIC is not set
1102# CONFIG_CRYPTO_CRC32C is not set
1103# CONFIG_CRYPTO_CAMELLIA is not set
1104# CONFIG_CRYPTO_AUTHENC is not set
1105# CONFIG_CRYPTO_LZO is not set 1144# CONFIG_CRYPTO_LZO is not set
1106CONFIG_CRYPTO_HW=y 1145CONFIG_CRYPTO_HW=y
1107# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1146# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1108# CONFIG_PPC_CLOCK is not set 1147# CONFIG_PPC_CLOCK is not set
1109CONFIG_PPC_LIB_RHEAP=y 1148CONFIG_PPC_LIB_RHEAP=y
1149# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/tqm8555_defconfig b/arch/powerpc/configs/85xx/tqm8555_defconfig
index bbff962c8472..03120b5b52fa 100644
--- a/arch/powerpc/configs/85xx/tqm8555_defconfig
+++ b/arch/powerpc/configs/85xx/tqm8555_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:44 2008 4# Mon Jun 9 08:52:41 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90# CONFIG_KALLSYMS is not set 93# CONFIG_KALLSYMS is not set
91# CONFIG_HOTPLUG is not set 94# CONFIG_HOTPLUG is not set
92CONFIG_PRINTK=y 95CONFIG_PRINTK=y
@@ -111,6 +114,7 @@ CONFIG_SLUB=y
111CONFIG_HAVE_OPROFILE=y 114CONFIG_HAVE_OPROFILE=y
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
@@ -151,6 +155,7 @@ CONFIG_MPC85xx=y
151# CONFIG_MPC85xx_CDS is not set 155# CONFIG_MPC85xx_CDS is not set
152# CONFIG_MPC85xx_MDS is not set 156# CONFIG_MPC85xx_MDS is not set
153# CONFIG_MPC85xx_DS is not set 157# CONFIG_MPC85xx_DS is not set
158# CONFIG_KSI8560 is not set
154# CONFIG_STX_GP3 is not set 159# CONFIG_STX_GP3 is not set
155# CONFIG_TQM8540 is not set 160# CONFIG_TQM8540 is not set
156# CONFIG_TQM8541 is not set 161# CONFIG_TQM8541 is not set
@@ -209,11 +214,13 @@ CONFIG_FLATMEM=y
209CONFIG_FLAT_NODE_MEM_MAP=y 214CONFIG_FLAT_NODE_MEM_MAP=y
210# CONFIG_SPARSEMEM_STATIC is not set 215# CONFIG_SPARSEMEM_STATIC is not set
211# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 216# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
217CONFIG_PAGEFLAGS_EXTENDED=y
212CONFIG_SPLIT_PTLOCK_CPUS=4 218CONFIG_SPLIT_PTLOCK_CPUS=4
213# CONFIG_RESOURCES_64BIT is not set 219# CONFIG_RESOURCES_64BIT is not set
214CONFIG_ZONE_DMA_FLAG=1 220CONFIG_ZONE_DMA_FLAG=1
215CONFIG_BOUNCE=y 221CONFIG_BOUNCE=y
216CONFIG_VIRT_TO_BUS=y 222CONFIG_VIRT_TO_BUS=y
223CONFIG_FORCE_MAX_ZONEORDER=11
217# CONFIG_PROC_DEVICETREE is not set 224# CONFIG_PROC_DEVICETREE is not set
218# CONFIG_CMDLINE_BOOL is not set 225# CONFIG_CMDLINE_BOOL is not set
219# CONFIG_PM is not set 226# CONFIG_PM is not set
@@ -234,6 +241,7 @@ CONFIG_PCI_SYSCALL=y
234CONFIG_ARCH_SUPPORTS_MSI=y 241CONFIG_ARCH_SUPPORTS_MSI=y
235# CONFIG_PCI_MSI is not set 242# CONFIG_PCI_MSI is not set
236CONFIG_PCI_LEGACY=y 243CONFIG_PCI_LEGACY=y
244# CONFIG_HAS_RAPIDIO is not set
237 245
238# 246#
239# Advanced setup 247# Advanced setup
@@ -243,11 +251,12 @@ CONFIG_PCI_LEGACY=y
243# 251#
244# Default settings for advanced configuration options are used 252# Default settings for advanced configuration options are used
245# 253#
246CONFIG_HIGHMEM_START=0xfe000000
247CONFIG_LOWMEM_SIZE=0x30000000 254CONFIG_LOWMEM_SIZE=0x30000000
255CONFIG_PAGE_OFFSET=0xc0000000
248CONFIG_KERNEL_START=0xc0000000 256CONFIG_KERNEL_START=0xc0000000
257CONFIG_PHYSICAL_START=0x00000000
258CONFIG_PHYSICAL_ALIGN=0x10000000
249CONFIG_TASK_SIZE=0xc0000000 259CONFIG_TASK_SIZE=0xc0000000
250CONFIG_BOOT_LOAD=0x00800000
251 260
252# 261#
253# Networking 262# Networking
@@ -295,8 +304,6 @@ CONFIG_TCP_CONG_CUBIC=y
295CONFIG_DEFAULT_TCP_CONG="cubic" 304CONFIG_DEFAULT_TCP_CONG="cubic"
296# CONFIG_TCP_MD5SIG is not set 305# CONFIG_TCP_MD5SIG is not set
297# CONFIG_IPV6 is not set 306# CONFIG_IPV6 is not set
298# CONFIG_INET6_XFRM_TUNNEL is not set
299# CONFIG_INET6_TUNNEL is not set
300# CONFIG_NETWORK_SECMARK is not set 307# CONFIG_NETWORK_SECMARK is not set
301# CONFIG_NETFILTER is not set 308# CONFIG_NETFILTER is not set
302# CONFIG_IP_DCCP is not set 309# CONFIG_IP_DCCP is not set
@@ -353,6 +360,7 @@ CONFIG_MTD_PARTITIONS=y
353# CONFIG_MTD_REDBOOT_PARTS is not set 360# CONFIG_MTD_REDBOOT_PARTS is not set
354CONFIG_MTD_CMDLINE_PARTS=y 361CONFIG_MTD_CMDLINE_PARTS=y
355# CONFIG_MTD_OF_PARTS is not set 362# CONFIG_MTD_OF_PARTS is not set
363# CONFIG_MTD_AR7_PARTS is not set
356 364
357# 365#
358# User Modules And Translation Layers 366# User Modules And Translation Layers
@@ -424,6 +432,7 @@ CONFIG_MTD_CFI_UTIL=y
424# 432#
425# CONFIG_MTD_UBI is not set 433# CONFIG_MTD_UBI is not set
426CONFIG_OF_DEVICE=y 434CONFIG_OF_DEVICE=y
435CONFIG_OF_I2C=y
427# CONFIG_PARPORT is not set 436# CONFIG_PARPORT is not set
428CONFIG_BLK_DEV=y 437CONFIG_BLK_DEV=y
429# CONFIG_BLK_DEV_FD is not set 438# CONFIG_BLK_DEV_FD is not set
@@ -507,7 +516,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
507CONFIG_BLK_DEV_VIA82CXXX=y 516CONFIG_BLK_DEV_VIA82CXXX=y
508# CONFIG_BLK_DEV_TC86C001 is not set 517# CONFIG_BLK_DEV_TC86C001 is not set
509CONFIG_BLK_DEV_IDEDMA=y 518CONFIG_BLK_DEV_IDEDMA=y
510CONFIG_IDE_ARCH_OBSOLETE_INIT=y 519# CONFIG_BLK_DEV_HD_ONLY is not set
511# CONFIG_BLK_DEV_HD is not set 520# CONFIG_BLK_DEV_HD is not set
512 521
513# 522#
@@ -602,7 +611,6 @@ CONFIG_NETDEV_1000=y
602# CONFIG_SIS190 is not set 611# CONFIG_SIS190 is not set
603# CONFIG_SKGE is not set 612# CONFIG_SKGE is not set
604# CONFIG_SKY2 is not set 613# CONFIG_SKY2 is not set
605# CONFIG_SK98LIN is not set
606# CONFIG_VIA_VELOCITY is not set 614# CONFIG_VIA_VELOCITY is not set
607# CONFIG_TIGON3 is not set 615# CONFIG_TIGON3 is not set
608# CONFIG_BNX2 is not set 616# CONFIG_BNX2 is not set
@@ -622,6 +630,7 @@ CONFIG_NETDEV_10000=y
622# CONFIG_MLX4_CORE is not set 630# CONFIG_MLX4_CORE is not set
623# CONFIG_TEHUTI is not set 631# CONFIG_TEHUTI is not set
624# CONFIG_BNX2X is not set 632# CONFIG_BNX2X is not set
633# CONFIG_SFC is not set
625# CONFIG_TR is not set 634# CONFIG_TR is not set
626 635
627# 636#
@@ -629,6 +638,7 @@ CONFIG_NETDEV_10000=y
629# 638#
630# CONFIG_WLAN_PRE80211 is not set 639# CONFIG_WLAN_PRE80211 is not set
631# CONFIG_WLAN_80211 is not set 640# CONFIG_WLAN_80211 is not set
641# CONFIG_IWLWIFI_LEDS is not set
632# CONFIG_WAN is not set 642# CONFIG_WAN is not set
633# CONFIG_FDDI is not set 643# CONFIG_FDDI is not set
634# CONFIG_HIPPI is not set 644# CONFIG_HIPPI is not set
@@ -675,6 +685,7 @@ CONFIG_INPUT=y
675# Character devices 685# Character devices
676# 686#
677# CONFIG_VT is not set 687# CONFIG_VT is not set
688CONFIG_DEVKMEM=y
678# CONFIG_SERIAL_NONSTANDARD is not set 689# CONFIG_SERIAL_NONSTANDARD is not set
679# CONFIG_NOZOMI is not set 690# CONFIG_NOZOMI is not set
680 691
@@ -723,13 +734,6 @@ CONFIG_I2C_BOARDINFO=y
723CONFIG_I2C_CHARDEV=y 734CONFIG_I2C_CHARDEV=y
724 735
725# 736#
726# I2C Algorithms
727#
728# CONFIG_I2C_ALGOBIT is not set
729# CONFIG_I2C_ALGOPCF is not set
730# CONFIG_I2C_ALGOPCA is not set
731
732#
733# I2C Hardware Bus support 737# I2C Hardware Bus support
734# 738#
735# CONFIG_I2C_ALI1535 is not set 739# CONFIG_I2C_ALI1535 is not set
@@ -754,6 +758,7 @@ CONFIG_I2C_MPC=y
754# CONFIG_I2C_VIA is not set 758# CONFIG_I2C_VIA is not set
755# CONFIG_I2C_VIAPRO is not set 759# CONFIG_I2C_VIAPRO is not set
756# CONFIG_I2C_VOODOO3 is not set 760# CONFIG_I2C_VOODOO3 is not set
761# CONFIG_I2C_PCA_PLATFORM is not set
757 762
758# 763#
759# Miscellaneous I2C Chip support 764# Miscellaneous I2C Chip support
@@ -763,19 +768,13 @@ CONFIG_I2C_MPC=y
763# CONFIG_SENSORS_PCF8574 is not set 768# CONFIG_SENSORS_PCF8574 is not set
764# CONFIG_PCF8575 is not set 769# CONFIG_PCF8575 is not set
765# CONFIG_SENSORS_PCF8591 is not set 770# CONFIG_SENSORS_PCF8591 is not set
766# CONFIG_TPS65010 is not set
767# CONFIG_SENSORS_MAX6875 is not set 771# CONFIG_SENSORS_MAX6875 is not set
768# CONFIG_SENSORS_TSL2550 is not set 772# CONFIG_SENSORS_TSL2550 is not set
769# CONFIG_I2C_DEBUG_CORE is not set 773# CONFIG_I2C_DEBUG_CORE is not set
770# CONFIG_I2C_DEBUG_ALGO is not set 774# CONFIG_I2C_DEBUG_ALGO is not set
771# CONFIG_I2C_DEBUG_BUS is not set 775# CONFIG_I2C_DEBUG_BUS is not set
772# CONFIG_I2C_DEBUG_CHIP is not set 776# CONFIG_I2C_DEBUG_CHIP is not set
773
774#
775# SPI support
776#
777# CONFIG_SPI is not set 777# CONFIG_SPI is not set
778# CONFIG_SPI_MASTER is not set
779# CONFIG_W1 is not set 778# CONFIG_W1 is not set
780# CONFIG_POWER_SUPPLY is not set 779# CONFIG_POWER_SUPPLY is not set
781CONFIG_HWMON=y 780CONFIG_HWMON=y
@@ -845,12 +844,22 @@ CONFIG_SSB_POSSIBLE=y
845# Multifunction device drivers 844# Multifunction device drivers
846# 845#
847# CONFIG_MFD_SM501 is not set 846# CONFIG_MFD_SM501 is not set
847# CONFIG_HTC_PASIC3 is not set
848 848
849# 849#
850# Multimedia devices 850# Multimedia devices
851# 851#
852
853#
854# Multimedia core support
855#
852# CONFIG_VIDEO_DEV is not set 856# CONFIG_VIDEO_DEV is not set
853# CONFIG_DVB_CORE is not set 857# CONFIG_DVB_CORE is not set
858# CONFIG_VIDEO_MEDIA is not set
859
860#
861# Multimedia drivers
862#
854CONFIG_DAB=y 863CONFIG_DAB=y
855 864
856# 865#
@@ -881,6 +890,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
881CONFIG_USB_ARCH_HAS_OHCI=y 890CONFIG_USB_ARCH_HAS_OHCI=y
882CONFIG_USB_ARCH_HAS_EHCI=y 891CONFIG_USB_ARCH_HAS_EHCI=y
883# CONFIG_USB is not set 892# CONFIG_USB is not set
893# CONFIG_USB_OTG_WHITELIST is not set
894# CONFIG_USB_OTG_BLACKLIST_HUB is not set
884 895
885# 896#
886# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 897# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -889,14 +900,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
889# CONFIG_MMC is not set 900# CONFIG_MMC is not set
890# CONFIG_MEMSTICK is not set 901# CONFIG_MEMSTICK is not set
891# CONFIG_NEW_LEDS is not set 902# CONFIG_NEW_LEDS is not set
903# CONFIG_ACCESSIBILITY is not set
892# CONFIG_INFINIBAND is not set 904# CONFIG_INFINIBAND is not set
893# CONFIG_EDAC is not set 905# CONFIG_EDAC is not set
894# CONFIG_RTC_CLASS is not set 906# CONFIG_RTC_CLASS is not set
895# CONFIG_DMADEVICES is not set 907# CONFIG_DMADEVICES is not set
896
897#
898# Userspace I/O
899#
900# CONFIG_UIO is not set 908# CONFIG_UIO is not set
901 909
902# 910#
@@ -916,7 +924,6 @@ CONFIG_FS_MBCACHE=y
916# CONFIG_JFS_FS is not set 924# CONFIG_JFS_FS is not set
917# CONFIG_FS_POSIX_ACL is not set 925# CONFIG_FS_POSIX_ACL is not set
918# CONFIG_XFS_FS is not set 926# CONFIG_XFS_FS is not set
919# CONFIG_GFS2_FS is not set
920# CONFIG_OCFS2_FS is not set 927# CONFIG_OCFS2_FS is not set
921CONFIG_DNOTIFY=y 928CONFIG_DNOTIFY=y
922CONFIG_INOTIFY=y 929CONFIG_INOTIFY=y
@@ -984,7 +991,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
984CONFIG_NFS_FS=y 991CONFIG_NFS_FS=y
985# CONFIG_NFS_V3 is not set 992# CONFIG_NFS_V3 is not set
986# CONFIG_NFS_V4 is not set 993# CONFIG_NFS_V4 is not set
987# CONFIG_NFS_DIRECTIO is not set
988# CONFIG_NFSD is not set 994# CONFIG_NFSD is not set
989CONFIG_ROOT_NFS=y 995CONFIG_ROOT_NFS=y
990CONFIG_LOCKD=y 996CONFIG_LOCKD=y
@@ -1023,6 +1029,7 @@ CONFIG_PARTITION_ADVANCED=y
1023# Library routines 1029# Library routines
1024# 1030#
1025CONFIG_BITREVERSE=y 1031CONFIG_BITREVERSE=y
1032# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1026# CONFIG_CRC_CCITT is not set 1033# CONFIG_CRC_CCITT is not set
1027# CONFIG_CRC16 is not set 1034# CONFIG_CRC16 is not set
1028# CONFIG_CRC_ITU_T is not set 1035# CONFIG_CRC_ITU_T is not set
@@ -1035,6 +1042,7 @@ CONFIG_PLIST=y
1035CONFIG_HAS_IOMEM=y 1042CONFIG_HAS_IOMEM=y
1036CONFIG_HAS_IOPORT=y 1043CONFIG_HAS_IOPORT=y
1037CONFIG_HAS_DMA=y 1044CONFIG_HAS_DMA=y
1045CONFIG_HAVE_LMB=y
1038 1046
1039# 1047#
1040# Kernel hacking 1048# Kernel hacking
@@ -1042,6 +1050,7 @@ CONFIG_HAS_DMA=y
1042# CONFIG_PRINTK_TIME is not set 1050# CONFIG_PRINTK_TIME is not set
1043CONFIG_ENABLE_WARN_DEPRECATED=y 1051CONFIG_ENABLE_WARN_DEPRECATED=y
1044CONFIG_ENABLE_MUST_CHECK=y 1052CONFIG_ENABLE_MUST_CHECK=y
1053CONFIG_FRAME_WARN=1024
1045# CONFIG_MAGIC_SYSRQ is not set 1054# CONFIG_MAGIC_SYSRQ is not set
1046# CONFIG_UNUSED_SYMBOLS is not set 1055# CONFIG_UNUSED_SYMBOLS is not set
1047# CONFIG_DEBUG_FS is not set 1056# CONFIG_DEBUG_FS is not set
@@ -1052,6 +1061,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1052# CONFIG_DEBUG_BUGVERBOSE is not set 1061# CONFIG_DEBUG_BUGVERBOSE is not set
1053# CONFIG_SAMPLES is not set 1062# CONFIG_SAMPLES is not set
1054# CONFIG_KGDB_CONSOLE is not set 1063# CONFIG_KGDB_CONSOLE is not set
1064# CONFIG_IRQSTACKS is not set
1055# CONFIG_PPC_EARLY_DEBUG is not set 1065# CONFIG_PPC_EARLY_DEBUG is not set
1056 1066
1057# 1067#
@@ -1061,49 +1071,79 @@ CONFIG_ENABLE_MUST_CHECK=y
1061# CONFIG_SECURITY is not set 1071# CONFIG_SECURITY is not set
1062# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1072# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1063CONFIG_CRYPTO=y 1073CONFIG_CRYPTO=y
1064# CONFIG_CRYPTO_SEQIV is not set 1074
1075#
1076# Crypto core or helper
1077#
1065# CONFIG_CRYPTO_MANAGER is not set 1078# CONFIG_CRYPTO_MANAGER is not set
1079# CONFIG_CRYPTO_GF128MUL is not set
1080# CONFIG_CRYPTO_NULL is not set
1081# CONFIG_CRYPTO_CRYPTD is not set
1082# CONFIG_CRYPTO_AUTHENC is not set
1083
1084#
1085# Authenticated Encryption with Associated Data
1086#
1087# CONFIG_CRYPTO_CCM is not set
1088# CONFIG_CRYPTO_GCM is not set
1089# CONFIG_CRYPTO_SEQIV is not set
1090
1091#
1092# Block modes
1093#
1094# CONFIG_CRYPTO_CBC is not set
1095# CONFIG_CRYPTO_CTR is not set
1096# CONFIG_CRYPTO_CTS is not set
1097# CONFIG_CRYPTO_ECB is not set
1098# CONFIG_CRYPTO_LRW is not set
1099# CONFIG_CRYPTO_PCBC is not set
1100# CONFIG_CRYPTO_XTS is not set
1101
1102#
1103# Hash modes
1104#
1066# CONFIG_CRYPTO_HMAC is not set 1105# CONFIG_CRYPTO_HMAC is not set
1067# CONFIG_CRYPTO_XCBC is not set 1106# CONFIG_CRYPTO_XCBC is not set
1068# CONFIG_CRYPTO_NULL is not set 1107
1108#
1109# Digest
1110#
1111# CONFIG_CRYPTO_CRC32C is not set
1069# CONFIG_CRYPTO_MD4 is not set 1112# CONFIG_CRYPTO_MD4 is not set
1070# CONFIG_CRYPTO_MD5 is not set 1113# CONFIG_CRYPTO_MD5 is not set
1114# CONFIG_CRYPTO_MICHAEL_MIC is not set
1071# CONFIG_CRYPTO_SHA1 is not set 1115# CONFIG_CRYPTO_SHA1 is not set
1072# CONFIG_CRYPTO_SHA256 is not set 1116# CONFIG_CRYPTO_SHA256 is not set
1073# CONFIG_CRYPTO_SHA512 is not set 1117# CONFIG_CRYPTO_SHA512 is not set
1074# CONFIG_CRYPTO_WP512 is not set
1075# CONFIG_CRYPTO_TGR192 is not set 1118# CONFIG_CRYPTO_TGR192 is not set
1076# CONFIG_CRYPTO_GF128MUL is not set 1119# CONFIG_CRYPTO_WP512 is not set
1077# CONFIG_CRYPTO_ECB is not set 1120
1078# CONFIG_CRYPTO_CBC is not set 1121#
1079# CONFIG_CRYPTO_PCBC is not set 1122# Ciphers
1080# CONFIG_CRYPTO_LRW is not set 1123#
1081# CONFIG_CRYPTO_XTS is not set
1082# CONFIG_CRYPTO_CTR is not set
1083# CONFIG_CRYPTO_GCM is not set
1084# CONFIG_CRYPTO_CCM is not set
1085# CONFIG_CRYPTO_CRYPTD is not set
1086# CONFIG_CRYPTO_DES is not set
1087# CONFIG_CRYPTO_FCRYPT is not set
1088# CONFIG_CRYPTO_BLOWFISH is not set
1089# CONFIG_CRYPTO_TWOFISH is not set
1090# CONFIG_CRYPTO_SERPENT is not set
1091# CONFIG_CRYPTO_AES is not set 1124# CONFIG_CRYPTO_AES is not set
1125# CONFIG_CRYPTO_ANUBIS is not set
1126# CONFIG_CRYPTO_ARC4 is not set
1127# CONFIG_CRYPTO_BLOWFISH is not set
1128# CONFIG_CRYPTO_CAMELLIA is not set
1092# CONFIG_CRYPTO_CAST5 is not set 1129# CONFIG_CRYPTO_CAST5 is not set
1093# CONFIG_CRYPTO_CAST6 is not set 1130# CONFIG_CRYPTO_CAST6 is not set
1094# CONFIG_CRYPTO_TEA is not set 1131# CONFIG_CRYPTO_DES is not set
1095# CONFIG_CRYPTO_ARC4 is not set 1132# CONFIG_CRYPTO_FCRYPT is not set
1096# CONFIG_CRYPTO_KHAZAD is not set 1133# CONFIG_CRYPTO_KHAZAD is not set
1097# CONFIG_CRYPTO_ANUBIS is not set
1098# CONFIG_CRYPTO_SEED is not set
1099# CONFIG_CRYPTO_SALSA20 is not set 1134# CONFIG_CRYPTO_SALSA20 is not set
1135# CONFIG_CRYPTO_SEED is not set
1136# CONFIG_CRYPTO_SERPENT is not set
1137# CONFIG_CRYPTO_TEA is not set
1138# CONFIG_CRYPTO_TWOFISH is not set
1139
1140#
1141# Compression
1142#
1100# CONFIG_CRYPTO_DEFLATE is not set 1143# CONFIG_CRYPTO_DEFLATE is not set
1101# CONFIG_CRYPTO_MICHAEL_MIC is not set
1102# CONFIG_CRYPTO_CRC32C is not set
1103# CONFIG_CRYPTO_CAMELLIA is not set
1104# CONFIG_CRYPTO_AUTHENC is not set
1105# CONFIG_CRYPTO_LZO is not set 1144# CONFIG_CRYPTO_LZO is not set
1106CONFIG_CRYPTO_HW=y 1145CONFIG_CRYPTO_HW=y
1107# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1146# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1108# CONFIG_PPC_CLOCK is not set 1147# CONFIG_PPC_CLOCK is not set
1109CONFIG_PPC_LIB_RHEAP=y 1148CONFIG_PPC_LIB_RHEAP=y
1149# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/tqm8560_defconfig b/arch/powerpc/configs/85xx/tqm8560_defconfig
index 63c5ec8b6515..3113257edf5a 100644
--- a/arch/powerpc/configs/85xx/tqm8560_defconfig
+++ b/arch/powerpc/configs/85xx/tqm8560_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:45 2008 4# Mon Jun 9 08:52:42 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -87,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
90# CONFIG_KALLSYMS is not set 93# CONFIG_KALLSYMS is not set
91# CONFIG_HOTPLUG is not set 94# CONFIG_HOTPLUG is not set
92CONFIG_PRINTK=y 95CONFIG_PRINTK=y
@@ -111,6 +114,7 @@ CONFIG_SLUB=y
111CONFIG_HAVE_OPROFILE=y 114CONFIG_HAVE_OPROFILE=y
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
@@ -151,6 +155,7 @@ CONFIG_MPC85xx=y
151# CONFIG_MPC85xx_CDS is not set 155# CONFIG_MPC85xx_CDS is not set
152# CONFIG_MPC85xx_MDS is not set 156# CONFIG_MPC85xx_MDS is not set
153# CONFIG_MPC85xx_DS is not set 157# CONFIG_MPC85xx_DS is not set
158# CONFIG_KSI8560 is not set
154# CONFIG_STX_GP3 is not set 159# CONFIG_STX_GP3 is not set
155# CONFIG_TQM8540 is not set 160# CONFIG_TQM8540 is not set
156# CONFIG_TQM8541 is not set 161# CONFIG_TQM8541 is not set
@@ -209,11 +214,13 @@ CONFIG_FLATMEM=y
209CONFIG_FLAT_NODE_MEM_MAP=y 214CONFIG_FLAT_NODE_MEM_MAP=y
210# CONFIG_SPARSEMEM_STATIC is not set 215# CONFIG_SPARSEMEM_STATIC is not set
211# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 216# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
217CONFIG_PAGEFLAGS_EXTENDED=y
212CONFIG_SPLIT_PTLOCK_CPUS=4 218CONFIG_SPLIT_PTLOCK_CPUS=4
213# CONFIG_RESOURCES_64BIT is not set 219# CONFIG_RESOURCES_64BIT is not set
214CONFIG_ZONE_DMA_FLAG=1 220CONFIG_ZONE_DMA_FLAG=1
215CONFIG_BOUNCE=y 221CONFIG_BOUNCE=y
216CONFIG_VIRT_TO_BUS=y 222CONFIG_VIRT_TO_BUS=y
223CONFIG_FORCE_MAX_ZONEORDER=11
217# CONFIG_PROC_DEVICETREE is not set 224# CONFIG_PROC_DEVICETREE is not set
218# CONFIG_CMDLINE_BOOL is not set 225# CONFIG_CMDLINE_BOOL is not set
219# CONFIG_PM is not set 226# CONFIG_PM is not set
@@ -234,6 +241,7 @@ CONFIG_PCI_SYSCALL=y
234CONFIG_ARCH_SUPPORTS_MSI=y 241CONFIG_ARCH_SUPPORTS_MSI=y
235# CONFIG_PCI_MSI is not set 242# CONFIG_PCI_MSI is not set
236CONFIG_PCI_LEGACY=y 243CONFIG_PCI_LEGACY=y
244# CONFIG_HAS_RAPIDIO is not set
237 245
238# 246#
239# Advanced setup 247# Advanced setup
@@ -243,11 +251,12 @@ CONFIG_PCI_LEGACY=y
243# 251#
244# Default settings for advanced configuration options are used 252# Default settings for advanced configuration options are used
245# 253#
246CONFIG_HIGHMEM_START=0xfe000000
247CONFIG_LOWMEM_SIZE=0x30000000 254CONFIG_LOWMEM_SIZE=0x30000000
255CONFIG_PAGE_OFFSET=0xc0000000
248CONFIG_KERNEL_START=0xc0000000 256CONFIG_KERNEL_START=0xc0000000
257CONFIG_PHYSICAL_START=0x00000000
258CONFIG_PHYSICAL_ALIGN=0x10000000
249CONFIG_TASK_SIZE=0xc0000000 259CONFIG_TASK_SIZE=0xc0000000
250CONFIG_BOOT_LOAD=0x00800000
251 260
252# 261#
253# Networking 262# Networking
@@ -295,8 +304,6 @@ CONFIG_TCP_CONG_CUBIC=y
295CONFIG_DEFAULT_TCP_CONG="cubic" 304CONFIG_DEFAULT_TCP_CONG="cubic"
296# CONFIG_TCP_MD5SIG is not set 305# CONFIG_TCP_MD5SIG is not set
297# CONFIG_IPV6 is not set 306# CONFIG_IPV6 is not set
298# CONFIG_INET6_XFRM_TUNNEL is not set
299# CONFIG_INET6_TUNNEL is not set
300# CONFIG_NETWORK_SECMARK is not set 307# CONFIG_NETWORK_SECMARK is not set
301# CONFIG_NETFILTER is not set 308# CONFIG_NETFILTER is not set
302# CONFIG_IP_DCCP is not set 309# CONFIG_IP_DCCP is not set
@@ -353,6 +360,7 @@ CONFIG_MTD_PARTITIONS=y
353# CONFIG_MTD_REDBOOT_PARTS is not set 360# CONFIG_MTD_REDBOOT_PARTS is not set
354CONFIG_MTD_CMDLINE_PARTS=y 361CONFIG_MTD_CMDLINE_PARTS=y
355# CONFIG_MTD_OF_PARTS is not set 362# CONFIG_MTD_OF_PARTS is not set
363# CONFIG_MTD_AR7_PARTS is not set
356 364
357# 365#
358# User Modules And Translation Layers 366# User Modules And Translation Layers
@@ -424,6 +432,7 @@ CONFIG_MTD_CFI_UTIL=y
424# 432#
425# CONFIG_MTD_UBI is not set 433# CONFIG_MTD_UBI is not set
426CONFIG_OF_DEVICE=y 434CONFIG_OF_DEVICE=y
435CONFIG_OF_I2C=y
427# CONFIG_PARPORT is not set 436# CONFIG_PARPORT is not set
428CONFIG_BLK_DEV=y 437CONFIG_BLK_DEV=y
429# CONFIG_BLK_DEV_FD is not set 438# CONFIG_BLK_DEV_FD is not set
@@ -507,7 +516,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
507CONFIG_BLK_DEV_VIA82CXXX=y 516CONFIG_BLK_DEV_VIA82CXXX=y
508# CONFIG_BLK_DEV_TC86C001 is not set 517# CONFIG_BLK_DEV_TC86C001 is not set
509CONFIG_BLK_DEV_IDEDMA=y 518CONFIG_BLK_DEV_IDEDMA=y
510CONFIG_IDE_ARCH_OBSOLETE_INIT=y 519# CONFIG_BLK_DEV_HD_ONLY is not set
511# CONFIG_BLK_DEV_HD is not set 520# CONFIG_BLK_DEV_HD is not set
512 521
513# 522#
@@ -602,7 +611,6 @@ CONFIG_NETDEV_1000=y
602# CONFIG_SIS190 is not set 611# CONFIG_SIS190 is not set
603# CONFIG_SKGE is not set 612# CONFIG_SKGE is not set
604# CONFIG_SKY2 is not set 613# CONFIG_SKY2 is not set
605# CONFIG_SK98LIN is not set
606# CONFIG_VIA_VELOCITY is not set 614# CONFIG_VIA_VELOCITY is not set
607# CONFIG_TIGON3 is not set 615# CONFIG_TIGON3 is not set
608# CONFIG_BNX2 is not set 616# CONFIG_BNX2 is not set
@@ -622,6 +630,7 @@ CONFIG_NETDEV_10000=y
622# CONFIG_MLX4_CORE is not set 630# CONFIG_MLX4_CORE is not set
623# CONFIG_TEHUTI is not set 631# CONFIG_TEHUTI is not set
624# CONFIG_BNX2X is not set 632# CONFIG_BNX2X is not set
633# CONFIG_SFC is not set
625# CONFIG_TR is not set 634# CONFIG_TR is not set
626 635
627# 636#
@@ -629,6 +638,7 @@ CONFIG_NETDEV_10000=y
629# 638#
630# CONFIG_WLAN_PRE80211 is not set 639# CONFIG_WLAN_PRE80211 is not set
631# CONFIG_WLAN_80211 is not set 640# CONFIG_WLAN_80211 is not set
641# CONFIG_IWLWIFI_LEDS is not set
632# CONFIG_WAN is not set 642# CONFIG_WAN is not set
633# CONFIG_FDDI is not set 643# CONFIG_FDDI is not set
634# CONFIG_HIPPI is not set 644# CONFIG_HIPPI is not set
@@ -675,6 +685,7 @@ CONFIG_INPUT=y
675# Character devices 685# Character devices
676# 686#
677# CONFIG_VT is not set 687# CONFIG_VT is not set
688CONFIG_DEVKMEM=y
678# CONFIG_SERIAL_NONSTANDARD is not set 689# CONFIG_SERIAL_NONSTANDARD is not set
679# CONFIG_NOZOMI is not set 690# CONFIG_NOZOMI is not set
680 691
@@ -723,13 +734,6 @@ CONFIG_I2C_BOARDINFO=y
723CONFIG_I2C_CHARDEV=y 734CONFIG_I2C_CHARDEV=y
724 735
725# 736#
726# I2C Algorithms
727#
728# CONFIG_I2C_ALGOBIT is not set
729# CONFIG_I2C_ALGOPCF is not set
730# CONFIG_I2C_ALGOPCA is not set
731
732#
733# I2C Hardware Bus support 737# I2C Hardware Bus support
734# 738#
735# CONFIG_I2C_ALI1535 is not set 739# CONFIG_I2C_ALI1535 is not set
@@ -754,6 +758,7 @@ CONFIG_I2C_MPC=y
754# CONFIG_I2C_VIA is not set 758# CONFIG_I2C_VIA is not set
755# CONFIG_I2C_VIAPRO is not set 759# CONFIG_I2C_VIAPRO is not set
756# CONFIG_I2C_VOODOO3 is not set 760# CONFIG_I2C_VOODOO3 is not set
761# CONFIG_I2C_PCA_PLATFORM is not set
757 762
758# 763#
759# Miscellaneous I2C Chip support 764# Miscellaneous I2C Chip support
@@ -763,19 +768,13 @@ CONFIG_I2C_MPC=y
763# CONFIG_SENSORS_PCF8574 is not set 768# CONFIG_SENSORS_PCF8574 is not set
764# CONFIG_PCF8575 is not set 769# CONFIG_PCF8575 is not set
765# CONFIG_SENSORS_PCF8591 is not set 770# CONFIG_SENSORS_PCF8591 is not set
766# CONFIG_TPS65010 is not set
767# CONFIG_SENSORS_MAX6875 is not set 771# CONFIG_SENSORS_MAX6875 is not set
768# CONFIG_SENSORS_TSL2550 is not set 772# CONFIG_SENSORS_TSL2550 is not set
769# CONFIG_I2C_DEBUG_CORE is not set 773# CONFIG_I2C_DEBUG_CORE is not set
770# CONFIG_I2C_DEBUG_ALGO is not set 774# CONFIG_I2C_DEBUG_ALGO is not set
771# CONFIG_I2C_DEBUG_BUS is not set 775# CONFIG_I2C_DEBUG_BUS is not set
772# CONFIG_I2C_DEBUG_CHIP is not set 776# CONFIG_I2C_DEBUG_CHIP is not set
773
774#
775# SPI support
776#
777# CONFIG_SPI is not set 777# CONFIG_SPI is not set
778# CONFIG_SPI_MASTER is not set
779# CONFIG_W1 is not set 778# CONFIG_W1 is not set
780# CONFIG_POWER_SUPPLY is not set 779# CONFIG_POWER_SUPPLY is not set
781CONFIG_HWMON=y 780CONFIG_HWMON=y
@@ -845,12 +844,22 @@ CONFIG_SSB_POSSIBLE=y
845# Multifunction device drivers 844# Multifunction device drivers
846# 845#
847# CONFIG_MFD_SM501 is not set 846# CONFIG_MFD_SM501 is not set
847# CONFIG_HTC_PASIC3 is not set
848 848
849# 849#
850# Multimedia devices 850# Multimedia devices
851# 851#
852
853#
854# Multimedia core support
855#
852# CONFIG_VIDEO_DEV is not set 856# CONFIG_VIDEO_DEV is not set
853# CONFIG_DVB_CORE is not set 857# CONFIG_DVB_CORE is not set
858# CONFIG_VIDEO_MEDIA is not set
859
860#
861# Multimedia drivers
862#
854CONFIG_DAB=y 863CONFIG_DAB=y
855 864
856# 865#
@@ -881,6 +890,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
881CONFIG_USB_ARCH_HAS_OHCI=y 890CONFIG_USB_ARCH_HAS_OHCI=y
882CONFIG_USB_ARCH_HAS_EHCI=y 891CONFIG_USB_ARCH_HAS_EHCI=y
883# CONFIG_USB is not set 892# CONFIG_USB is not set
893# CONFIG_USB_OTG_WHITELIST is not set
894# CONFIG_USB_OTG_BLACKLIST_HUB is not set
884 895
885# 896#
886# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 897# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -889,14 +900,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
889# CONFIG_MMC is not set 900# CONFIG_MMC is not set
890# CONFIG_MEMSTICK is not set 901# CONFIG_MEMSTICK is not set
891# CONFIG_NEW_LEDS is not set 902# CONFIG_NEW_LEDS is not set
903# CONFIG_ACCESSIBILITY is not set
892# CONFIG_INFINIBAND is not set 904# CONFIG_INFINIBAND is not set
893# CONFIG_EDAC is not set 905# CONFIG_EDAC is not set
894# CONFIG_RTC_CLASS is not set 906# CONFIG_RTC_CLASS is not set
895# CONFIG_DMADEVICES is not set 907# CONFIG_DMADEVICES is not set
896
897#
898# Userspace I/O
899#
900# CONFIG_UIO is not set 908# CONFIG_UIO is not set
901 909
902# 910#
@@ -916,7 +924,6 @@ CONFIG_FS_MBCACHE=y
916# CONFIG_JFS_FS is not set 924# CONFIG_JFS_FS is not set
917# CONFIG_FS_POSIX_ACL is not set 925# CONFIG_FS_POSIX_ACL is not set
918# CONFIG_XFS_FS is not set 926# CONFIG_XFS_FS is not set
919# CONFIG_GFS2_FS is not set
920# CONFIG_OCFS2_FS is not set 927# CONFIG_OCFS2_FS is not set
921CONFIG_DNOTIFY=y 928CONFIG_DNOTIFY=y
922CONFIG_INOTIFY=y 929CONFIG_INOTIFY=y
@@ -984,7 +991,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
984CONFIG_NFS_FS=y 991CONFIG_NFS_FS=y
985# CONFIG_NFS_V3 is not set 992# CONFIG_NFS_V3 is not set
986# CONFIG_NFS_V4 is not set 993# CONFIG_NFS_V4 is not set
987# CONFIG_NFS_DIRECTIO is not set
988# CONFIG_NFSD is not set 994# CONFIG_NFSD is not set
989CONFIG_ROOT_NFS=y 995CONFIG_ROOT_NFS=y
990CONFIG_LOCKD=y 996CONFIG_LOCKD=y
@@ -1023,6 +1029,7 @@ CONFIG_PARTITION_ADVANCED=y
1023# Library routines 1029# Library routines
1024# 1030#
1025CONFIG_BITREVERSE=y 1031CONFIG_BITREVERSE=y
1032# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1026# CONFIG_CRC_CCITT is not set 1033# CONFIG_CRC_CCITT is not set
1027# CONFIG_CRC16 is not set 1034# CONFIG_CRC16 is not set
1028# CONFIG_CRC_ITU_T is not set 1035# CONFIG_CRC_ITU_T is not set
@@ -1035,6 +1042,7 @@ CONFIG_PLIST=y
1035CONFIG_HAS_IOMEM=y 1042CONFIG_HAS_IOMEM=y
1036CONFIG_HAS_IOPORT=y 1043CONFIG_HAS_IOPORT=y
1037CONFIG_HAS_DMA=y 1044CONFIG_HAS_DMA=y
1045CONFIG_HAVE_LMB=y
1038 1046
1039# 1047#
1040# Kernel hacking 1048# Kernel hacking
@@ -1042,6 +1050,7 @@ CONFIG_HAS_DMA=y
1042# CONFIG_PRINTK_TIME is not set 1050# CONFIG_PRINTK_TIME is not set
1043CONFIG_ENABLE_WARN_DEPRECATED=y 1051CONFIG_ENABLE_WARN_DEPRECATED=y
1044CONFIG_ENABLE_MUST_CHECK=y 1052CONFIG_ENABLE_MUST_CHECK=y
1053CONFIG_FRAME_WARN=1024
1045# CONFIG_MAGIC_SYSRQ is not set 1054# CONFIG_MAGIC_SYSRQ is not set
1046# CONFIG_UNUSED_SYMBOLS is not set 1055# CONFIG_UNUSED_SYMBOLS is not set
1047# CONFIG_DEBUG_FS is not set 1056# CONFIG_DEBUG_FS is not set
@@ -1052,6 +1061,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1052# CONFIG_DEBUG_BUGVERBOSE is not set 1061# CONFIG_DEBUG_BUGVERBOSE is not set
1053# CONFIG_SAMPLES is not set 1062# CONFIG_SAMPLES is not set
1054# CONFIG_KGDB_CONSOLE is not set 1063# CONFIG_KGDB_CONSOLE is not set
1064# CONFIG_IRQSTACKS is not set
1055# CONFIG_PPC_EARLY_DEBUG is not set 1065# CONFIG_PPC_EARLY_DEBUG is not set
1056 1066
1057# 1067#
@@ -1061,49 +1071,79 @@ CONFIG_ENABLE_MUST_CHECK=y
1061# CONFIG_SECURITY is not set 1071# CONFIG_SECURITY is not set
1062# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1072# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1063CONFIG_CRYPTO=y 1073CONFIG_CRYPTO=y
1064# CONFIG_CRYPTO_SEQIV is not set 1074
1075#
1076# Crypto core or helper
1077#
1065# CONFIG_CRYPTO_MANAGER is not set 1078# CONFIG_CRYPTO_MANAGER is not set
1079# CONFIG_CRYPTO_GF128MUL is not set
1080# CONFIG_CRYPTO_NULL is not set
1081# CONFIG_CRYPTO_CRYPTD is not set
1082# CONFIG_CRYPTO_AUTHENC is not set
1083
1084#
1085# Authenticated Encryption with Associated Data
1086#
1087# CONFIG_CRYPTO_CCM is not set
1088# CONFIG_CRYPTO_GCM is not set
1089# CONFIG_CRYPTO_SEQIV is not set
1090
1091#
1092# Block modes
1093#
1094# CONFIG_CRYPTO_CBC is not set
1095# CONFIG_CRYPTO_CTR is not set
1096# CONFIG_CRYPTO_CTS is not set
1097# CONFIG_CRYPTO_ECB is not set
1098# CONFIG_CRYPTO_LRW is not set
1099# CONFIG_CRYPTO_PCBC is not set
1100# CONFIG_CRYPTO_XTS is not set
1101
1102#
1103# Hash modes
1104#
1066# CONFIG_CRYPTO_HMAC is not set 1105# CONFIG_CRYPTO_HMAC is not set
1067# CONFIG_CRYPTO_XCBC is not set 1106# CONFIG_CRYPTO_XCBC is not set
1068# CONFIG_CRYPTO_NULL is not set 1107
1108#
1109# Digest
1110#
1111# CONFIG_CRYPTO_CRC32C is not set
1069# CONFIG_CRYPTO_MD4 is not set 1112# CONFIG_CRYPTO_MD4 is not set
1070# CONFIG_CRYPTO_MD5 is not set 1113# CONFIG_CRYPTO_MD5 is not set
1114# CONFIG_CRYPTO_MICHAEL_MIC is not set
1071# CONFIG_CRYPTO_SHA1 is not set 1115# CONFIG_CRYPTO_SHA1 is not set
1072# CONFIG_CRYPTO_SHA256 is not set 1116# CONFIG_CRYPTO_SHA256 is not set
1073# CONFIG_CRYPTO_SHA512 is not set 1117# CONFIG_CRYPTO_SHA512 is not set
1074# CONFIG_CRYPTO_WP512 is not set
1075# CONFIG_CRYPTO_TGR192 is not set 1118# CONFIG_CRYPTO_TGR192 is not set
1076# CONFIG_CRYPTO_GF128MUL is not set 1119# CONFIG_CRYPTO_WP512 is not set
1077# CONFIG_CRYPTO_ECB is not set 1120
1078# CONFIG_CRYPTO_CBC is not set 1121#
1079# CONFIG_CRYPTO_PCBC is not set 1122# Ciphers
1080# CONFIG_CRYPTO_LRW is not set 1123#
1081# CONFIG_CRYPTO_XTS is not set
1082# CONFIG_CRYPTO_CTR is not set
1083# CONFIG_CRYPTO_GCM is not set
1084# CONFIG_CRYPTO_CCM is not set
1085# CONFIG_CRYPTO_CRYPTD is not set
1086# CONFIG_CRYPTO_DES is not set
1087# CONFIG_CRYPTO_FCRYPT is not set
1088# CONFIG_CRYPTO_BLOWFISH is not set
1089# CONFIG_CRYPTO_TWOFISH is not set
1090# CONFIG_CRYPTO_SERPENT is not set
1091# CONFIG_CRYPTO_AES is not set 1124# CONFIG_CRYPTO_AES is not set
1125# CONFIG_CRYPTO_ANUBIS is not set
1126# CONFIG_CRYPTO_ARC4 is not set
1127# CONFIG_CRYPTO_BLOWFISH is not set
1128# CONFIG_CRYPTO_CAMELLIA is not set
1092# CONFIG_CRYPTO_CAST5 is not set 1129# CONFIG_CRYPTO_CAST5 is not set
1093# CONFIG_CRYPTO_CAST6 is not set 1130# CONFIG_CRYPTO_CAST6 is not set
1094# CONFIG_CRYPTO_TEA is not set 1131# CONFIG_CRYPTO_DES is not set
1095# CONFIG_CRYPTO_ARC4 is not set 1132# CONFIG_CRYPTO_FCRYPT is not set
1096# CONFIG_CRYPTO_KHAZAD is not set 1133# CONFIG_CRYPTO_KHAZAD is not set
1097# CONFIG_CRYPTO_ANUBIS is not set
1098# CONFIG_CRYPTO_SEED is not set
1099# CONFIG_CRYPTO_SALSA20 is not set 1134# CONFIG_CRYPTO_SALSA20 is not set
1135# CONFIG_CRYPTO_SEED is not set
1136# CONFIG_CRYPTO_SERPENT is not set
1137# CONFIG_CRYPTO_TEA is not set
1138# CONFIG_CRYPTO_TWOFISH is not set
1139
1140#
1141# Compression
1142#
1100# CONFIG_CRYPTO_DEFLATE is not set 1143# CONFIG_CRYPTO_DEFLATE is not set
1101# CONFIG_CRYPTO_MICHAEL_MIC is not set
1102# CONFIG_CRYPTO_CRC32C is not set
1103# CONFIG_CRYPTO_CAMELLIA is not set
1104# CONFIG_CRYPTO_AUTHENC is not set
1105# CONFIG_CRYPTO_LZO is not set 1144# CONFIG_CRYPTO_LZO is not set
1106CONFIG_CRYPTO_HW=y 1145CONFIG_CRYPTO_HW=y
1107# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1146# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1108# CONFIG_PPC_CLOCK is not set 1147# CONFIG_PPC_CLOCK is not set
1109CONFIG_PPC_LIB_RHEAP=y 1148CONFIG_PPC_LIB_RHEAP=y
1149# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/adder875_defconfig b/arch/powerpc/configs/adder875_defconfig
index a3cc94a2ff06..6740f2a3aa3d 100644
--- a/arch/powerpc/configs/adder875_defconfig
+++ b/arch/powerpc/configs/adder875_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc2 3# Linux kernel version: 2.6.26-rc5
4# Wed Feb 20 12:26:07 2008 4# Mon Jun 9 08:52:08 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -28,6 +28,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y 28CONFIG_GENERIC_HARDIRQS=y
29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
30CONFIG_IRQ_PER_CPU=y 30CONFIG_IRQ_PER_CPU=y
31CONFIG_STACKTRACE_SUPPORT=y
32CONFIG_LOCKDEP_SUPPORT=y
31CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
32CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
33CONFIG_GENERIC_HWEIGHT=y 35CONFIG_GENERIC_HWEIGHT=y
@@ -75,6 +77,7 @@ CONFIG_FAIR_GROUP_SCHED=y
75CONFIG_USER_SCHED=y 77CONFIG_USER_SCHED=y
76# CONFIG_CGROUP_SCHED is not set 78# CONFIG_CGROUP_SCHED is not set
77CONFIG_SYSFS_DEPRECATED=y 79CONFIG_SYSFS_DEPRECATED=y
80CONFIG_SYSFS_DEPRECATED_V2=y
78# CONFIG_RELAY is not set 81# CONFIG_RELAY is not set
79# CONFIG_NAMESPACES is not set 82# CONFIG_NAMESPACES is not set
80# CONFIG_BLK_DEV_INITRD is not set 83# CONFIG_BLK_DEV_INITRD is not set
@@ -107,6 +110,8 @@ CONFIG_SLUB=y
107# CONFIG_MARKERS is not set 110# CONFIG_MARKERS is not set
108CONFIG_HAVE_OPROFILE=y 111CONFIG_HAVE_OPROFILE=y
109CONFIG_HAVE_KPROBES=y 112CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y
114# CONFIG_HAVE_DMA_ATTRS is not set
110CONFIG_PROC_PAGE_MONITOR=y 115CONFIG_PROC_PAGE_MONITOR=y
111CONFIG_SLABINFO=y 116CONFIG_SLABINFO=y
112# CONFIG_TINY_SHMEM is not set 117# CONFIG_TINY_SHMEM is not set
@@ -131,7 +136,6 @@ CONFIG_DEFAULT_DEADLINE=y
131# CONFIG_DEFAULT_NOOP is not set 136# CONFIG_DEFAULT_NOOP is not set
132CONFIG_DEFAULT_IOSCHED="deadline" 137CONFIG_DEFAULT_IOSCHED="deadline"
133CONFIG_CLASSIC_RCU=y 138CONFIG_CLASSIC_RCU=y
134# CONFIG_PREEMPT_RCU is not set
135 139
136# 140#
137# Platform support 141# Platform support
@@ -194,7 +198,6 @@ CONFIG_HZ=1000
194CONFIG_PREEMPT_NONE=y 198CONFIG_PREEMPT_NONE=y
195# CONFIG_PREEMPT_VOLUNTARY is not set 199# CONFIG_PREEMPT_VOLUNTARY is not set
196# CONFIG_PREEMPT is not set 200# CONFIG_PREEMPT is not set
197CONFIG_RCU_TRACE=y
198CONFIG_BINFMT_ELF=y 201CONFIG_BINFMT_ELF=y
199# CONFIG_BINFMT_MISC is not set 202# CONFIG_BINFMT_MISC is not set
200# CONFIG_MATH_EMULATION is not set 203# CONFIG_MATH_EMULATION is not set
@@ -213,11 +216,13 @@ CONFIG_FLATMEM=y
213CONFIG_FLAT_NODE_MEM_MAP=y 216CONFIG_FLAT_NODE_MEM_MAP=y
214# CONFIG_SPARSEMEM_STATIC is not set 217# CONFIG_SPARSEMEM_STATIC is not set
215# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 218# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
219CONFIG_PAGEFLAGS_EXTENDED=y
216CONFIG_SPLIT_PTLOCK_CPUS=4 220CONFIG_SPLIT_PTLOCK_CPUS=4
217# CONFIG_RESOURCES_64BIT is not set 221# CONFIG_RESOURCES_64BIT is not set
218CONFIG_ZONE_DMA_FLAG=1 222CONFIG_ZONE_DMA_FLAG=1
219CONFIG_BOUNCE=y 223CONFIG_BOUNCE=y
220CONFIG_VIRT_TO_BUS=y 224CONFIG_VIRT_TO_BUS=y
225CONFIG_FORCE_MAX_ZONEORDER=11
221# CONFIG_PROC_DEVICETREE is not set 226# CONFIG_PROC_DEVICETREE is not set
222# CONFIG_CMDLINE_BOOL is not set 227# CONFIG_CMDLINE_BOOL is not set
223# CONFIG_PM is not set 228# CONFIG_PM is not set
@@ -235,6 +240,7 @@ CONFIG_FSL_SOC=y
235# CONFIG_PCI_QSPAN is not set 240# CONFIG_PCI_QSPAN is not set
236# CONFIG_ARCH_SUPPORTS_MSI is not set 241# CONFIG_ARCH_SUPPORTS_MSI is not set
237# CONFIG_PCCARD is not set 242# CONFIG_PCCARD is not set
243# CONFIG_HAS_RAPIDIO is not set
238 244
239# 245#
240# Advanced setup 246# Advanced setup
@@ -244,13 +250,13 @@ CONFIG_FSL_SOC=y
244# 250#
245# Default settings for advanced configuration options are used 251# Default settings for advanced configuration options are used
246# 252#
247CONFIG_HIGHMEM_START=0xfe000000
248CONFIG_LOWMEM_SIZE=0x30000000 253CONFIG_LOWMEM_SIZE=0x30000000
254CONFIG_PAGE_OFFSET=0xc0000000
249CONFIG_KERNEL_START=0xc0000000 255CONFIG_KERNEL_START=0xc0000000
256CONFIG_PHYSICAL_START=0x00000000
250CONFIG_TASK_SIZE=0x80000000 257CONFIG_TASK_SIZE=0x80000000
251CONFIG_CONSISTENT_START=0xfd000000 258CONFIG_CONSISTENT_START=0xfd000000
252CONFIG_CONSISTENT_SIZE=0x00200000 259CONFIG_CONSISTENT_SIZE=0x00200000
253CONFIG_BOOT_LOAD=0x00400000
254 260
255# 261#
256# Networking 262# Networking
@@ -293,8 +299,6 @@ CONFIG_TCP_CONG_CUBIC=y
293CONFIG_DEFAULT_TCP_CONG="cubic" 299CONFIG_DEFAULT_TCP_CONG="cubic"
294# CONFIG_TCP_MD5SIG is not set 300# CONFIG_TCP_MD5SIG is not set
295# CONFIG_IPV6 is not set 301# CONFIG_IPV6 is not set
296# CONFIG_INET6_XFRM_TUNNEL is not set
297# CONFIG_INET6_TUNNEL is not set
298# CONFIG_NETWORK_SECMARK is not set 302# CONFIG_NETWORK_SECMARK is not set
299# CONFIG_NETFILTER is not set 303# CONFIG_NETFILTER is not set
300# CONFIG_IP_DCCP is not set 304# CONFIG_IP_DCCP is not set
@@ -482,6 +486,7 @@ CONFIG_FS_ENET_MDIO_FEC=y
482# 486#
483# CONFIG_WLAN_PRE80211 is not set 487# CONFIG_WLAN_PRE80211 is not set
484# CONFIG_WLAN_80211 is not set 488# CONFIG_WLAN_80211 is not set
489# CONFIG_IWLWIFI_LEDS is not set
485# CONFIG_WAN is not set 490# CONFIG_WAN is not set
486# CONFIG_PPP is not set 491# CONFIG_PPP is not set
487# CONFIG_SLIP is not set 492# CONFIG_SLIP is not set
@@ -548,6 +553,7 @@ CONFIG_SERIO_LIBPS2=y
548# Character devices 553# Character devices
549# 554#
550# CONFIG_VT is not set 555# CONFIG_VT is not set
556CONFIG_DEVKMEM=y
551# CONFIG_SERIAL_NONSTANDARD is not set 557# CONFIG_SERIAL_NONSTANDARD is not set
552 558
553# 559#
@@ -580,12 +586,7 @@ CONFIG_GEN_RTC=y
580# CONFIG_RAW_DRIVER is not set 586# CONFIG_RAW_DRIVER is not set
581# CONFIG_TCG_TPM is not set 587# CONFIG_TCG_TPM is not set
582# CONFIG_I2C is not set 588# CONFIG_I2C is not set
583
584#
585# SPI support
586#
587# CONFIG_SPI is not set 589# CONFIG_SPI is not set
588# CONFIG_SPI_MASTER is not set
589# CONFIG_W1 is not set 590# CONFIG_W1 is not set
590# CONFIG_POWER_SUPPLY is not set 591# CONFIG_POWER_SUPPLY is not set
591# CONFIG_HWMON is not set 592# CONFIG_HWMON is not set
@@ -602,12 +603,22 @@ CONFIG_SSB_POSSIBLE=y
602# Multifunction device drivers 603# Multifunction device drivers
603# 604#
604# CONFIG_MFD_SM501 is not set 605# CONFIG_MFD_SM501 is not set
606# CONFIG_HTC_PASIC3 is not set
605 607
606# 608#
607# Multimedia devices 609# Multimedia devices
608# 610#
611
612#
613# Multimedia core support
614#
609# CONFIG_VIDEO_DEV is not set 615# CONFIG_VIDEO_DEV is not set
610# CONFIG_DVB_CORE is not set 616# CONFIG_DVB_CORE is not set
617# CONFIG_VIDEO_MEDIA is not set
618
619#
620# Multimedia drivers
621#
611CONFIG_DAB=y 622CONFIG_DAB=y
612 623
613# 624#
@@ -632,12 +643,10 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
632# CONFIG_MMC is not set 643# CONFIG_MMC is not set
633# CONFIG_MEMSTICK is not set 644# CONFIG_MEMSTICK is not set
634# CONFIG_NEW_LEDS is not set 645# CONFIG_NEW_LEDS is not set
646# CONFIG_ACCESSIBILITY is not set
635# CONFIG_EDAC is not set 647# CONFIG_EDAC is not set
636# CONFIG_RTC_CLASS is not set 648# CONFIG_RTC_CLASS is not set
637 649# CONFIG_DMADEVICES is not set
638#
639# Userspace I/O
640#
641# CONFIG_UIO is not set 650# CONFIG_UIO is not set
642 651
643# 652#
@@ -650,7 +659,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
650# CONFIG_JFS_FS is not set 659# CONFIG_JFS_FS is not set
651# CONFIG_FS_POSIX_ACL is not set 660# CONFIG_FS_POSIX_ACL is not set
652# CONFIG_XFS_FS is not set 661# CONFIG_XFS_FS is not set
653# CONFIG_GFS2_FS is not set
654# CONFIG_OCFS2_FS is not set 662# CONFIG_OCFS2_FS is not set
655# CONFIG_DNOTIFY is not set 663# CONFIG_DNOTIFY is not set
656# CONFIG_INOTIFY is not set 664# CONFIG_INOTIFY is not set
@@ -708,7 +716,6 @@ CONFIG_NFS_FS=y
708CONFIG_NFS_V3=y 716CONFIG_NFS_V3=y
709# CONFIG_NFS_V3_ACL is not set 717# CONFIG_NFS_V3_ACL is not set
710# CONFIG_NFS_V4 is not set 718# CONFIG_NFS_V4 is not set
711# CONFIG_NFS_DIRECTIO is not set
712# CONFIG_NFSD is not set 719# CONFIG_NFSD is not set
713CONFIG_ROOT_NFS=y 720CONFIG_ROOT_NFS=y
714CONFIG_LOCKD=y 721CONFIG_LOCKD=y
@@ -751,6 +758,7 @@ CONFIG_MSDOS_PARTITION=y
751# 758#
752# Library routines 759# Library routines
753# 760#
761# CONFIG_GENERIC_FIND_FIRST_BIT is not set
754# CONFIG_CRC_CCITT is not set 762# CONFIG_CRC_CCITT is not set
755# CONFIG_CRC16 is not set 763# CONFIG_CRC16 is not set
756# CONFIG_CRC_ITU_T is not set 764# CONFIG_CRC_ITU_T is not set
@@ -761,6 +769,7 @@ CONFIG_ZLIB_INFLATE=y
761CONFIG_HAS_IOMEM=y 769CONFIG_HAS_IOMEM=y
762CONFIG_HAS_IOPORT=y 770CONFIG_HAS_IOPORT=y
763CONFIG_HAS_DMA=y 771CONFIG_HAS_DMA=y
772CONFIG_HAVE_LMB=y
764 773
765# 774#
766# Kernel hacking 775# Kernel hacking
@@ -768,6 +777,7 @@ CONFIG_HAS_DMA=y
768# CONFIG_PRINTK_TIME is not set 777# CONFIG_PRINTK_TIME is not set
769CONFIG_ENABLE_WARN_DEPRECATED=y 778CONFIG_ENABLE_WARN_DEPRECATED=y
770CONFIG_ENABLE_MUST_CHECK=y 779CONFIG_ENABLE_MUST_CHECK=y
780CONFIG_FRAME_WARN=1024
771CONFIG_MAGIC_SYSRQ=y 781CONFIG_MAGIC_SYSRQ=y
772# CONFIG_UNUSED_SYMBOLS is not set 782# CONFIG_UNUSED_SYMBOLS is not set
773CONFIG_DEBUG_FS=y 783CONFIG_DEBUG_FS=y
@@ -778,6 +788,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
778CONFIG_SCHED_DEBUG=y 788CONFIG_SCHED_DEBUG=y
779# CONFIG_SCHEDSTATS is not set 789# CONFIG_SCHEDSTATS is not set
780# CONFIG_TIMER_STATS is not set 790# CONFIG_TIMER_STATS is not set
791# CONFIG_DEBUG_OBJECTS is not set
781# CONFIG_SLUB_DEBUG_ON is not set 792# CONFIG_SLUB_DEBUG_ON is not set
782# CONFIG_SLUB_STATS is not set 793# CONFIG_SLUB_STATS is not set
783# CONFIG_DEBUG_SPINLOCK is not set 794# CONFIG_DEBUG_SPINLOCK is not set
@@ -788,6 +799,7 @@ CONFIG_SCHED_DEBUG=y
788CONFIG_DEBUG_BUGVERBOSE=y 799CONFIG_DEBUG_BUGVERBOSE=y
789CONFIG_DEBUG_INFO=y 800CONFIG_DEBUG_INFO=y
790# CONFIG_DEBUG_VM is not set 801# CONFIG_DEBUG_VM is not set
802# CONFIG_DEBUG_WRITECOUNT is not set
791# CONFIG_DEBUG_LIST is not set 803# CONFIG_DEBUG_LIST is not set
792# CONFIG_DEBUG_SG is not set 804# CONFIG_DEBUG_SG is not set
793# CONFIG_BOOT_PRINTK_DELAY is not set 805# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -798,6 +810,7 @@ CONFIG_DEBUG_INFO=y
798# CONFIG_DEBUG_STACK_USAGE is not set 810# CONFIG_DEBUG_STACK_USAGE is not set
799# CONFIG_DEBUG_PAGEALLOC is not set 811# CONFIG_DEBUG_PAGEALLOC is not set
800# CONFIG_DEBUGGER is not set 812# CONFIG_DEBUGGER is not set
813# CONFIG_IRQSTACKS is not set
801# CONFIG_VIRQ_DEBUG is not set 814# CONFIG_VIRQ_DEBUG is not set
802# CONFIG_BDI_SWITCH is not set 815# CONFIG_BDI_SWITCH is not set
803# CONFIG_PPC_EARLY_DEBUG is not set 816# CONFIG_PPC_EARLY_DEBUG is not set
@@ -811,3 +824,4 @@ CONFIG_DEBUG_INFO=y
811# CONFIG_CRYPTO is not set 824# CONFIG_CRYPTO is not set
812# CONFIG_PPC_CLOCK is not set 825# CONFIG_PPC_CLOCK is not set
813CONFIG_PPC_LIB_RHEAP=y 826CONFIG_PPC_LIB_RHEAP=y
827# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/ep8248e_defconfig b/arch/powerpc/configs/ep8248e_defconfig
index 2b1504e0a111..ba2a463b9305 100644
--- a/arch/powerpc/configs/ep8248e_defconfig
+++ b/arch/powerpc/configs/ep8248e_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:09 2008 4# Mon Jun 9 08:52:09 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -30,6 +30,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
32CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y
33CONFIG_RWSEM_XCHGADD_ALGORITHM=y 35CONFIG_RWSEM_XCHGADD_ALGORITHM=y
34CONFIG_ARCH_HAS_ILOG2_U32=y 36CONFIG_ARCH_HAS_ILOG2_U32=y
35CONFIG_GENERIC_HWEIGHT=y 37CONFIG_GENERIC_HWEIGHT=y
@@ -70,18 +72,16 @@ CONFIG_IKCONFIG=y
70CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
71CONFIG_LOG_BUF_SHIFT=14 73CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set 74# CONFIG_CGROUPS is not set
73CONFIG_GROUP_SCHED=y
74CONFIG_FAIR_GROUP_SCHED=y
75CONFIG_USER_SCHED=y
76# CONFIG_CGROUP_SCHED is not set
77CONFIG_SYSFS_DEPRECATED=y 75CONFIG_SYSFS_DEPRECATED=y
78CONFIG_SYSFS_DEPRECATED_V2=y 76CONFIG_SYSFS_DEPRECATED_V2=y
79# CONFIG_RELAY is not set 77# CONFIG_RELAY is not set
80# CONFIG_NAMESPACES is not set 78# CONFIG_NAMESPACES is not set
81# CONFIG_BLK_DEV_INITRD is not set 79# CONFIG_BLK_DEV_INITRD is not set
80CONFIG_CC_OPTIMIZE_FOR_SIZE=y
82CONFIG_SYSCTL=y 81CONFIG_SYSCTL=y
83CONFIG_EMBEDDED=y 82CONFIG_EMBEDDED=y
84CONFIG_SYSCTL_SYSCALL=y 83CONFIG_SYSCTL_SYSCALL=y
84CONFIG_SYSCTL_SYSCALL_CHECK=y
85CONFIG_KALLSYMS=y 85CONFIG_KALLSYMS=y
86CONFIG_KALLSYMS_ALL=y 86CONFIG_KALLSYMS_ALL=y
87# CONFIG_KALLSYMS_EXTRA_PASS is not set 87# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -107,6 +107,7 @@ CONFIG_SLAB=y
107CONFIG_HAVE_OPROFILE=y 107CONFIG_HAVE_OPROFILE=y
108CONFIG_HAVE_KPROBES=y 108CONFIG_HAVE_KPROBES=y
109CONFIG_HAVE_KRETPROBES=y 109CONFIG_HAVE_KRETPROBES=y
110# CONFIG_HAVE_DMA_ATTRS is not set
110CONFIG_PROC_PAGE_MONITOR=y 111CONFIG_PROC_PAGE_MONITOR=y
111CONFIG_SLABINFO=y 112CONFIG_SLABINFO=y
112CONFIG_RT_MUTEXES=y 113CONFIG_RT_MUTEXES=y
@@ -194,11 +195,13 @@ CONFIG_FLATMEM=y
194CONFIG_FLAT_NODE_MEM_MAP=y 195CONFIG_FLAT_NODE_MEM_MAP=y
195# CONFIG_SPARSEMEM_STATIC is not set 196# CONFIG_SPARSEMEM_STATIC is not set
196# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 197# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
198CONFIG_PAGEFLAGS_EXTENDED=y
197CONFIG_SPLIT_PTLOCK_CPUS=4 199CONFIG_SPLIT_PTLOCK_CPUS=4
198# CONFIG_RESOURCES_64BIT is not set 200# CONFIG_RESOURCES_64BIT is not set
199CONFIG_ZONE_DMA_FLAG=1 201CONFIG_ZONE_DMA_FLAG=1
200CONFIG_BOUNCE=y 202CONFIG_BOUNCE=y
201CONFIG_VIRT_TO_BUS=y 203CONFIG_VIRT_TO_BUS=y
204CONFIG_FORCE_MAX_ZONEORDER=11
202CONFIG_PROC_DEVICETREE=y 205CONFIG_PROC_DEVICETREE=y
203# CONFIG_CMDLINE_BOOL is not set 206# CONFIG_CMDLINE_BOOL is not set
204# CONFIG_PM is not set 207# CONFIG_PM is not set
@@ -215,6 +218,7 @@ CONFIG_FSL_SOC=y
215# CONFIG_PCI_SYSCALL is not set 218# CONFIG_PCI_SYSCALL is not set
216# CONFIG_ARCH_SUPPORTS_MSI is not set 219# CONFIG_ARCH_SUPPORTS_MSI is not set
217# CONFIG_PCCARD is not set 220# CONFIG_PCCARD is not set
221# CONFIG_HAS_RAPIDIO is not set
218 222
219# 223#
220# Advanced setup 224# Advanced setup
@@ -224,11 +228,11 @@ CONFIG_FSL_SOC=y
224# 228#
225# Default settings for advanced configuration options are used 229# Default settings for advanced configuration options are used
226# 230#
227CONFIG_HIGHMEM_START=0xfe000000
228CONFIG_LOWMEM_SIZE=0x30000000 231CONFIG_LOWMEM_SIZE=0x30000000
232CONFIG_PAGE_OFFSET=0xc0000000
229CONFIG_KERNEL_START=0xc0000000 233CONFIG_KERNEL_START=0xc0000000
234CONFIG_PHYSICAL_START=0x00000000
230CONFIG_TASK_SIZE=0xc0000000 235CONFIG_TASK_SIZE=0xc0000000
231CONFIG_BOOT_LOAD=0x00400000
232 236
233# 237#
234# Networking 238# Networking
@@ -283,6 +287,7 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=y
283CONFIG_INET6_XFRM_MODE_TUNNEL=y 287CONFIG_INET6_XFRM_MODE_TUNNEL=y
284CONFIG_INET6_XFRM_MODE_BEET=y 288CONFIG_INET6_XFRM_MODE_BEET=y
285CONFIG_IPV6_SIT=y 289CONFIG_IPV6_SIT=y
290CONFIG_IPV6_NDISC_NODETYPE=y
286# CONFIG_IPV6_TUNNEL is not set 291# CONFIG_IPV6_TUNNEL is not set
287# CONFIG_NETWORK_SECMARK is not set 292# CONFIG_NETWORK_SECMARK is not set
288CONFIG_NETFILTER=y 293CONFIG_NETFILTER=y
@@ -498,6 +503,7 @@ CONFIG_NETDEV_10000=y
498# 503#
499# CONFIG_WLAN_PRE80211 is not set 504# CONFIG_WLAN_PRE80211 is not set
500# CONFIG_WLAN_80211 is not set 505# CONFIG_WLAN_80211 is not set
506# CONFIG_IWLWIFI_LEDS is not set
501# CONFIG_WAN is not set 507# CONFIG_WAN is not set
502# CONFIG_PPP is not set 508# CONFIG_PPP is not set
503# CONFIG_SLIP is not set 509# CONFIG_SLIP is not set
@@ -521,6 +527,7 @@ CONFIG_NETDEV_10000=y
521# Character devices 527# Character devices
522# 528#
523# CONFIG_VT is not set 529# CONFIG_VT is not set
530CONFIG_DEVKMEM=y
524# CONFIG_SERIAL_NONSTANDARD is not set 531# CONFIG_SERIAL_NONSTANDARD is not set
525 532
526# 533#
@@ -552,12 +559,7 @@ CONFIG_HW_RANDOM=y
552# CONFIG_R3964 is not set 559# CONFIG_R3964 is not set
553# CONFIG_RAW_DRIVER is not set 560# CONFIG_RAW_DRIVER is not set
554# CONFIG_I2C is not set 561# CONFIG_I2C is not set
555
556#
557# SPI support
558#
559# CONFIG_SPI is not set 562# CONFIG_SPI is not set
560# CONFIG_SPI_MASTER is not set
561# CONFIG_W1 is not set 563# CONFIG_W1 is not set
562# CONFIG_POWER_SUPPLY is not set 564# CONFIG_POWER_SUPPLY is not set
563# CONFIG_HWMON is not set 565# CONFIG_HWMON is not set
@@ -574,12 +576,22 @@ CONFIG_SSB_POSSIBLE=y
574# Multifunction device drivers 576# Multifunction device drivers
575# 577#
576# CONFIG_MFD_SM501 is not set 578# CONFIG_MFD_SM501 is not set
579# CONFIG_HTC_PASIC3 is not set
577 580
578# 581#
579# Multimedia devices 582# Multimedia devices
580# 583#
584
585#
586# Multimedia core support
587#
581# CONFIG_VIDEO_DEV is not set 588# CONFIG_VIDEO_DEV is not set
582# CONFIG_DVB_CORE is not set 589# CONFIG_DVB_CORE is not set
590# CONFIG_VIDEO_MEDIA is not set
591
592#
593# Multimedia drivers
594#
583CONFIG_DAB=y 595CONFIG_DAB=y
584 596
585# 597#
@@ -603,12 +615,9 @@ CONFIG_DAB=y
603# CONFIG_MMC is not set 615# CONFIG_MMC is not set
604# CONFIG_MEMSTICK is not set 616# CONFIG_MEMSTICK is not set
605# CONFIG_NEW_LEDS is not set 617# CONFIG_NEW_LEDS is not set
618# CONFIG_ACCESSIBILITY is not set
606# CONFIG_RTC_CLASS is not set 619# CONFIG_RTC_CLASS is not set
607# CONFIG_DMADEVICES is not set 620# CONFIG_DMADEVICES is not set
608
609#
610# Userspace I/O
611#
612# CONFIG_UIO is not set 621# CONFIG_UIO is not set
613 622
614# 623#
@@ -675,7 +684,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
675CONFIG_NFS_FS=y 684CONFIG_NFS_FS=y
676CONFIG_NFS_V3=y 685CONFIG_NFS_V3=y
677# CONFIG_NFS_V3_ACL is not set 686# CONFIG_NFS_V3_ACL is not set
678# CONFIG_NFS_DIRECTIO is not set
679# CONFIG_NFSD is not set 687# CONFIG_NFSD is not set
680CONFIG_ROOT_NFS=y 688CONFIG_ROOT_NFS=y
681CONFIG_LOCKD=y 689CONFIG_LOCKD=y
@@ -752,6 +760,7 @@ CONFIG_NLS_UTF8=y
752# 760#
753# Library routines 761# Library routines
754# 762#
763# CONFIG_GENERIC_FIND_FIRST_BIT is not set
755# CONFIG_CRC_CCITT is not set 764# CONFIG_CRC_CCITT is not set
756# CONFIG_CRC16 is not set 765# CONFIG_CRC16 is not set
757# CONFIG_CRC_ITU_T is not set 766# CONFIG_CRC_ITU_T is not set
@@ -763,6 +772,7 @@ CONFIG_PLIST=y
763CONFIG_HAS_IOMEM=y 772CONFIG_HAS_IOMEM=y
764CONFIG_HAS_IOPORT=y 773CONFIG_HAS_IOPORT=y
765CONFIG_HAS_DMA=y 774CONFIG_HAS_DMA=y
775CONFIG_HAVE_LMB=y
766 776
767# 777#
768# Kernel hacking 778# Kernel hacking
@@ -770,6 +780,7 @@ CONFIG_HAS_DMA=y
770# CONFIG_PRINTK_TIME is not set 780# CONFIG_PRINTK_TIME is not set
771CONFIG_ENABLE_WARN_DEPRECATED=y 781CONFIG_ENABLE_WARN_DEPRECATED=y
772CONFIG_ENABLE_MUST_CHECK=y 782CONFIG_ENABLE_MUST_CHECK=y
783CONFIG_FRAME_WARN=1024
773CONFIG_MAGIC_SYSRQ=y 784CONFIG_MAGIC_SYSRQ=y
774# CONFIG_UNUSED_SYMBOLS is not set 785# CONFIG_UNUSED_SYMBOLS is not set
775# CONFIG_DEBUG_FS is not set 786# CONFIG_DEBUG_FS is not set
@@ -780,6 +791,7 @@ CONFIG_DEBUG_KERNEL=y
780# CONFIG_SCHED_DEBUG is not set 791# CONFIG_SCHED_DEBUG is not set
781# CONFIG_SCHEDSTATS is not set 792# CONFIG_SCHEDSTATS is not set
782# CONFIG_TIMER_STATS is not set 793# CONFIG_TIMER_STATS is not set
794# CONFIG_DEBUG_OBJECTS is not set
783# CONFIG_DEBUG_SLAB is not set 795# CONFIG_DEBUG_SLAB is not set
784# CONFIG_DEBUG_RT_MUTEXES is not set 796# CONFIG_DEBUG_RT_MUTEXES is not set
785# CONFIG_RT_MUTEX_TESTER is not set 797# CONFIG_RT_MUTEX_TESTER is not set
@@ -791,6 +803,7 @@ CONFIG_DEBUG_KERNEL=y
791CONFIG_DEBUG_BUGVERBOSE=y 803CONFIG_DEBUG_BUGVERBOSE=y
792CONFIG_DEBUG_INFO=y 804CONFIG_DEBUG_INFO=y
793# CONFIG_DEBUG_VM is not set 805# CONFIG_DEBUG_VM is not set
806# CONFIG_DEBUG_WRITECOUNT is not set
794# CONFIG_DEBUG_LIST is not set 807# CONFIG_DEBUG_LIST is not set
795# CONFIG_DEBUG_SG is not set 808# CONFIG_DEBUG_SG is not set
796# CONFIG_BOOT_PRINTK_DELAY is not set 809# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -802,6 +815,7 @@ CONFIG_DEBUG_INFO=y
802# CONFIG_DEBUG_PAGEALLOC is not set 815# CONFIG_DEBUG_PAGEALLOC is not set
803# CONFIG_DEBUGGER is not set 816# CONFIG_DEBUGGER is not set
804# CONFIG_KGDB_CONSOLE is not set 817# CONFIG_KGDB_CONSOLE is not set
818# CONFIG_IRQSTACKS is not set
805CONFIG_BDI_SWITCH=y 819CONFIG_BDI_SWITCH=y
806# CONFIG_PPC_EARLY_DEBUG is not set 820# CONFIG_PPC_EARLY_DEBUG is not set
807 821
@@ -811,45 +825,75 @@ CONFIG_BDI_SWITCH=y
811# CONFIG_KEYS is not set 825# CONFIG_KEYS is not set
812# CONFIG_SECURITY is not set 826# CONFIG_SECURITY is not set
813CONFIG_CRYPTO=y 827CONFIG_CRYPTO=y
828
829#
830# Crypto core or helper
831#
814CONFIG_CRYPTO_ALGAPI=y 832CONFIG_CRYPTO_ALGAPI=y
815CONFIG_CRYPTO_BLKCIPHER=y 833CONFIG_CRYPTO_BLKCIPHER=y
816# CONFIG_CRYPTO_SEQIV is not set
817CONFIG_CRYPTO_MANAGER=y 834CONFIG_CRYPTO_MANAGER=y
818# CONFIG_CRYPTO_HMAC is not set
819# CONFIG_CRYPTO_NULL is not set 835# CONFIG_CRYPTO_NULL is not set
836# CONFIG_CRYPTO_CRYPTD is not set
837# CONFIG_CRYPTO_AUTHENC is not set
838
839#
840# Authenticated Encryption with Associated Data
841#
842# CONFIG_CRYPTO_CCM is not set
843# CONFIG_CRYPTO_GCM is not set
844# CONFIG_CRYPTO_SEQIV is not set
845
846#
847# Block modes
848#
849CONFIG_CRYPTO_CBC=y
850# CONFIG_CRYPTO_CTR is not set
851# CONFIG_CRYPTO_CTS is not set
852CONFIG_CRYPTO_ECB=y
853CONFIG_CRYPTO_PCBC=y
854
855#
856# Hash modes
857#
858# CONFIG_CRYPTO_HMAC is not set
859
860#
861# Digest
862#
863# CONFIG_CRYPTO_CRC32C is not set
820# CONFIG_CRYPTO_MD4 is not set 864# CONFIG_CRYPTO_MD4 is not set
821CONFIG_CRYPTO_MD5=y 865CONFIG_CRYPTO_MD5=y
866# CONFIG_CRYPTO_MICHAEL_MIC is not set
822# CONFIG_CRYPTO_SHA1 is not set 867# CONFIG_CRYPTO_SHA1 is not set
823# CONFIG_CRYPTO_SHA256 is not set 868# CONFIG_CRYPTO_SHA256 is not set
824# CONFIG_CRYPTO_SHA512 is not set 869# CONFIG_CRYPTO_SHA512 is not set
825# CONFIG_CRYPTO_WP512 is not set
826# CONFIG_CRYPTO_TGR192 is not set 870# CONFIG_CRYPTO_TGR192 is not set
827CONFIG_CRYPTO_ECB=y 871# CONFIG_CRYPTO_WP512 is not set
828CONFIG_CRYPTO_CBC=y 872
829CONFIG_CRYPTO_PCBC=y 873#
830# CONFIG_CRYPTO_CTR is not set 874# Ciphers
831# CONFIG_CRYPTO_GCM is not set 875#
832# CONFIG_CRYPTO_CCM is not set
833# CONFIG_CRYPTO_CRYPTD is not set
834CONFIG_CRYPTO_DES=y
835# CONFIG_CRYPTO_FCRYPT is not set
836# CONFIG_CRYPTO_BLOWFISH is not set
837# CONFIG_CRYPTO_TWOFISH is not set
838# CONFIG_CRYPTO_SERPENT is not set
839# CONFIG_CRYPTO_AES is not set 876# CONFIG_CRYPTO_AES is not set
877# CONFIG_CRYPTO_ANUBIS is not set
878# CONFIG_CRYPTO_ARC4 is not set
879# CONFIG_CRYPTO_BLOWFISH is not set
880# CONFIG_CRYPTO_CAMELLIA is not set
840# CONFIG_CRYPTO_CAST5 is not set 881# CONFIG_CRYPTO_CAST5 is not set
841# CONFIG_CRYPTO_CAST6 is not set 882# CONFIG_CRYPTO_CAST6 is not set
842# CONFIG_CRYPTO_TEA is not set 883CONFIG_CRYPTO_DES=y
843# CONFIG_CRYPTO_ARC4 is not set 884# CONFIG_CRYPTO_FCRYPT is not set
844# CONFIG_CRYPTO_KHAZAD is not set 885# CONFIG_CRYPTO_KHAZAD is not set
845# CONFIG_CRYPTO_ANUBIS is not set
846# CONFIG_CRYPTO_SEED is not set 886# CONFIG_CRYPTO_SEED is not set
887# CONFIG_CRYPTO_SERPENT is not set
888# CONFIG_CRYPTO_TEA is not set
889# CONFIG_CRYPTO_TWOFISH is not set
890
891#
892# Compression
893#
847# CONFIG_CRYPTO_DEFLATE is not set 894# CONFIG_CRYPTO_DEFLATE is not set
848# CONFIG_CRYPTO_MICHAEL_MIC is not set
849# CONFIG_CRYPTO_CRC32C is not set
850# CONFIG_CRYPTO_CAMELLIA is not set
851# CONFIG_CRYPTO_AUTHENC is not set
852# CONFIG_CRYPTO_LZO is not set 895# CONFIG_CRYPTO_LZO is not set
853# CONFIG_CRYPTO_HW is not set 896# CONFIG_CRYPTO_HW is not set
854# CONFIG_PPC_CLOCK is not set 897# CONFIG_PPC_CLOCK is not set
855CONFIG_PPC_LIB_RHEAP=y 898CONFIG_PPC_LIB_RHEAP=y
899# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/ep88xc_defconfig b/arch/powerpc/configs/ep88xc_defconfig
index 125b4764aadd..ac72b48542dc 100644
--- a/arch/powerpc/configs/ep88xc_defconfig
+++ b/arch/powerpc/configs/ep88xc_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:10 2008 4# Mon Jun 9 08:52:09 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -28,6 +28,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y 28CONFIG_GENERIC_HARDIRQS=y
29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
30CONFIG_IRQ_PER_CPU=y 30CONFIG_IRQ_PER_CPU=y
31CONFIG_STACKTRACE_SUPPORT=y
32CONFIG_LOCKDEP_SUPPORT=y
31CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
32CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
33CONFIG_GENERIC_HWEIGHT=y 35CONFIG_GENERIC_HWEIGHT=y
@@ -108,6 +110,7 @@ CONFIG_SLUB=y
108CONFIG_HAVE_OPROFILE=y 110CONFIG_HAVE_OPROFILE=y
109CONFIG_HAVE_KPROBES=y 111CONFIG_HAVE_KPROBES=y
110CONFIG_HAVE_KRETPROBES=y 112CONFIG_HAVE_KRETPROBES=y
113# CONFIG_HAVE_DMA_ATTRS is not set
111CONFIG_PROC_PAGE_MONITOR=y 114CONFIG_PROC_PAGE_MONITOR=y
112CONFIG_SLABINFO=y 115CONFIG_SLABINFO=y
113# CONFIG_TINY_SHMEM is not set 116# CONFIG_TINY_SHMEM is not set
@@ -212,11 +215,13 @@ CONFIG_FLATMEM=y
212CONFIG_FLAT_NODE_MEM_MAP=y 215CONFIG_FLAT_NODE_MEM_MAP=y
213# CONFIG_SPARSEMEM_STATIC is not set 216# CONFIG_SPARSEMEM_STATIC is not set
214# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
218CONFIG_PAGEFLAGS_EXTENDED=y
215CONFIG_SPLIT_PTLOCK_CPUS=4 219CONFIG_SPLIT_PTLOCK_CPUS=4
216# CONFIG_RESOURCES_64BIT is not set 220# CONFIG_RESOURCES_64BIT is not set
217CONFIG_ZONE_DMA_FLAG=1 221CONFIG_ZONE_DMA_FLAG=1
218CONFIG_BOUNCE=y 222CONFIG_BOUNCE=y
219CONFIG_VIRT_TO_BUS=y 223CONFIG_VIRT_TO_BUS=y
224CONFIG_FORCE_MAX_ZONEORDER=11
220CONFIG_PROC_DEVICETREE=y 225CONFIG_PROC_DEVICETREE=y
221# CONFIG_CMDLINE_BOOL is not set 226# CONFIG_CMDLINE_BOOL is not set
222# CONFIG_PM is not set 227# CONFIG_PM is not set
@@ -234,6 +239,7 @@ CONFIG_FSL_SOC=y
234# CONFIG_PCI_QSPAN is not set 239# CONFIG_PCI_QSPAN is not set
235# CONFIG_ARCH_SUPPORTS_MSI is not set 240# CONFIG_ARCH_SUPPORTS_MSI is not set
236# CONFIG_PCCARD is not set 241# CONFIG_PCCARD is not set
242# CONFIG_HAS_RAPIDIO is not set
237 243
238# 244#
239# Advanced setup 245# Advanced setup
@@ -243,13 +249,13 @@ CONFIG_FSL_SOC=y
243# 249#
244# Default settings for advanced configuration options are used 250# Default settings for advanced configuration options are used
245# 251#
246CONFIG_HIGHMEM_START=0xfe000000
247CONFIG_LOWMEM_SIZE=0x30000000 252CONFIG_LOWMEM_SIZE=0x30000000
253CONFIG_PAGE_OFFSET=0xc0000000
248CONFIG_KERNEL_START=0xc0000000 254CONFIG_KERNEL_START=0xc0000000
255CONFIG_PHYSICAL_START=0x00000000
249CONFIG_TASK_SIZE=0x80000000 256CONFIG_TASK_SIZE=0x80000000
250CONFIG_CONSISTENT_START=0xfd000000 257CONFIG_CONSISTENT_START=0xfd000000
251CONFIG_CONSISTENT_SIZE=0x00200000 258CONFIG_CONSISTENT_SIZE=0x00200000
252CONFIG_BOOT_LOAD=0x00400000
253 259
254# 260#
255# Networking 261# Networking
@@ -292,8 +298,6 @@ CONFIG_TCP_CONG_CUBIC=y
292CONFIG_DEFAULT_TCP_CONG="cubic" 298CONFIG_DEFAULT_TCP_CONG="cubic"
293# CONFIG_TCP_MD5SIG is not set 299# CONFIG_TCP_MD5SIG is not set
294# CONFIG_IPV6 is not set 300# CONFIG_IPV6 is not set
295# CONFIG_INET6_XFRM_TUNNEL is not set
296# CONFIG_INET6_TUNNEL is not set
297# CONFIG_NETWORK_SECMARK is not set 301# CONFIG_NETWORK_SECMARK is not set
298# CONFIG_NETFILTER is not set 302# CONFIG_NETFILTER is not set
299# CONFIG_IP_DCCP is not set 303# CONFIG_IP_DCCP is not set
@@ -481,6 +485,7 @@ CONFIG_FS_ENET_MDIO_FEC=y
481# 485#
482# CONFIG_WLAN_PRE80211 is not set 486# CONFIG_WLAN_PRE80211 is not set
483# CONFIG_WLAN_80211 is not set 487# CONFIG_WLAN_80211 is not set
488# CONFIG_IWLWIFI_LEDS is not set
484# CONFIG_WAN is not set 489# CONFIG_WAN is not set
485# CONFIG_PPP is not set 490# CONFIG_PPP is not set
486# CONFIG_SLIP is not set 491# CONFIG_SLIP is not set
@@ -505,6 +510,7 @@ CONFIG_FS_ENET_MDIO_FEC=y
505# Character devices 510# Character devices
506# 511#
507# CONFIG_VT is not set 512# CONFIG_VT is not set
513CONFIG_DEVKMEM=y
508# CONFIG_SERIAL_NONSTANDARD is not set 514# CONFIG_SERIAL_NONSTANDARD is not set
509 515
510# 516#
@@ -537,12 +543,7 @@ CONFIG_GEN_RTC=y
537# CONFIG_RAW_DRIVER is not set 543# CONFIG_RAW_DRIVER is not set
538# CONFIG_TCG_TPM is not set 544# CONFIG_TCG_TPM is not set
539# CONFIG_I2C is not set 545# CONFIG_I2C is not set
540
541#
542# SPI support
543#
544# CONFIG_SPI is not set 546# CONFIG_SPI is not set
545# CONFIG_SPI_MASTER is not set
546# CONFIG_W1 is not set 547# CONFIG_W1 is not set
547# CONFIG_POWER_SUPPLY is not set 548# CONFIG_POWER_SUPPLY is not set
548# CONFIG_HWMON is not set 549# CONFIG_HWMON is not set
@@ -559,12 +560,22 @@ CONFIG_SSB_POSSIBLE=y
559# Multifunction device drivers 560# Multifunction device drivers
560# 561#
561# CONFIG_MFD_SM501 is not set 562# CONFIG_MFD_SM501 is not set
563# CONFIG_HTC_PASIC3 is not set
562 564
563# 565#
564# Multimedia devices 566# Multimedia devices
565# 567#
568
569#
570# Multimedia core support
571#
566# CONFIG_VIDEO_DEV is not set 572# CONFIG_VIDEO_DEV is not set
567# CONFIG_DVB_CORE is not set 573# CONFIG_DVB_CORE is not set
574# CONFIG_VIDEO_MEDIA is not set
575
576#
577# Multimedia drivers
578#
568CONFIG_DAB=y 579CONFIG_DAB=y
569 580
570# 581#
@@ -588,13 +599,10 @@ CONFIG_DAB=y
588# CONFIG_MMC is not set 599# CONFIG_MMC is not set
589# CONFIG_MEMSTICK is not set 600# CONFIG_MEMSTICK is not set
590# CONFIG_NEW_LEDS is not set 601# CONFIG_NEW_LEDS is not set
602# CONFIG_ACCESSIBILITY is not set
591# CONFIG_EDAC is not set 603# CONFIG_EDAC is not set
592# CONFIG_RTC_CLASS is not set 604# CONFIG_RTC_CLASS is not set
593# CONFIG_DMADEVICES is not set 605# CONFIG_DMADEVICES is not set
594
595#
596# Userspace I/O
597#
598# CONFIG_UIO is not set 606# CONFIG_UIO is not set
599 607
600# 608#
@@ -607,7 +615,6 @@ CONFIG_DAB=y
607# CONFIG_JFS_FS is not set 615# CONFIG_JFS_FS is not set
608# CONFIG_FS_POSIX_ACL is not set 616# CONFIG_FS_POSIX_ACL is not set
609# CONFIG_XFS_FS is not set 617# CONFIG_XFS_FS is not set
610# CONFIG_GFS2_FS is not set
611# CONFIG_OCFS2_FS is not set 618# CONFIG_OCFS2_FS is not set
612# CONFIG_DNOTIFY is not set 619# CONFIG_DNOTIFY is not set
613# CONFIG_INOTIFY is not set 620# CONFIG_INOTIFY is not set
@@ -665,7 +672,6 @@ CONFIG_NFS_FS=y
665CONFIG_NFS_V3=y 672CONFIG_NFS_V3=y
666# CONFIG_NFS_V3_ACL is not set 673# CONFIG_NFS_V3_ACL is not set
667# CONFIG_NFS_V4 is not set 674# CONFIG_NFS_V4 is not set
668# CONFIG_NFS_DIRECTIO is not set
669# CONFIG_NFSD is not set 675# CONFIG_NFSD is not set
670CONFIG_ROOT_NFS=y 676CONFIG_ROOT_NFS=y
671CONFIG_LOCKD=y 677CONFIG_LOCKD=y
@@ -708,6 +714,7 @@ CONFIG_MSDOS_PARTITION=y
708# 714#
709# Library routines 715# Library routines
710# 716#
717# CONFIG_GENERIC_FIND_FIRST_BIT is not set
711# CONFIG_CRC_CCITT is not set 718# CONFIG_CRC_CCITT is not set
712# CONFIG_CRC16 is not set 719# CONFIG_CRC16 is not set
713# CONFIG_CRC_ITU_T is not set 720# CONFIG_CRC_ITU_T is not set
@@ -718,6 +725,7 @@ CONFIG_ZLIB_INFLATE=y
718CONFIG_HAS_IOMEM=y 725CONFIG_HAS_IOMEM=y
719CONFIG_HAS_IOPORT=y 726CONFIG_HAS_IOPORT=y
720CONFIG_HAS_DMA=y 727CONFIG_HAS_DMA=y
728CONFIG_HAVE_LMB=y
721 729
722# 730#
723# Kernel hacking 731# Kernel hacking
@@ -725,6 +733,7 @@ CONFIG_HAS_DMA=y
725# CONFIG_PRINTK_TIME is not set 733# CONFIG_PRINTK_TIME is not set
726CONFIG_ENABLE_WARN_DEPRECATED=y 734CONFIG_ENABLE_WARN_DEPRECATED=y
727CONFIG_ENABLE_MUST_CHECK=y 735CONFIG_ENABLE_MUST_CHECK=y
736CONFIG_FRAME_WARN=1024
728CONFIG_MAGIC_SYSRQ=y 737CONFIG_MAGIC_SYSRQ=y
729# CONFIG_UNUSED_SYMBOLS is not set 738# CONFIG_UNUSED_SYMBOLS is not set
730# CONFIG_DEBUG_FS is not set 739# CONFIG_DEBUG_FS is not set
@@ -735,6 +744,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
735CONFIG_SCHED_DEBUG=y 744CONFIG_SCHED_DEBUG=y
736# CONFIG_SCHEDSTATS is not set 745# CONFIG_SCHEDSTATS is not set
737# CONFIG_TIMER_STATS is not set 746# CONFIG_TIMER_STATS is not set
747# CONFIG_DEBUG_OBJECTS is not set
738# CONFIG_SLUB_DEBUG_ON is not set 748# CONFIG_SLUB_DEBUG_ON is not set
739# CONFIG_SLUB_STATS is not set 749# CONFIG_SLUB_STATS is not set
740# CONFIG_DEBUG_SPINLOCK is not set 750# CONFIG_DEBUG_SPINLOCK is not set
@@ -745,6 +755,7 @@ CONFIG_SCHED_DEBUG=y
745CONFIG_DEBUG_BUGVERBOSE=y 755CONFIG_DEBUG_BUGVERBOSE=y
746CONFIG_DEBUG_INFO=y 756CONFIG_DEBUG_INFO=y
747# CONFIG_DEBUG_VM is not set 757# CONFIG_DEBUG_VM is not set
758# CONFIG_DEBUG_WRITECOUNT is not set
748# CONFIG_DEBUG_LIST is not set 759# CONFIG_DEBUG_LIST is not set
749# CONFIG_DEBUG_SG is not set 760# CONFIG_DEBUG_SG is not set
750# CONFIG_BOOT_PRINTK_DELAY is not set 761# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -755,6 +766,7 @@ CONFIG_DEBUG_INFO=y
755# CONFIG_DEBUG_STACK_USAGE is not set 766# CONFIG_DEBUG_STACK_USAGE is not set
756# CONFIG_DEBUG_PAGEALLOC is not set 767# CONFIG_DEBUG_PAGEALLOC is not set
757# CONFIG_DEBUGGER is not set 768# CONFIG_DEBUGGER is not set
769# CONFIG_IRQSTACKS is not set
758# CONFIG_BDI_SWITCH is not set 770# CONFIG_BDI_SWITCH is not set
759# CONFIG_PPC_EARLY_DEBUG is not set 771# CONFIG_PPC_EARLY_DEBUG is not set
760 772
@@ -767,3 +779,4 @@ CONFIG_DEBUG_INFO=y
767# CONFIG_CRYPTO is not set 779# CONFIG_CRYPTO is not set
768# CONFIG_PPC_CLOCK is not set 780# CONFIG_PPC_CLOCK is not set
769CONFIG_PPC_LIB_RHEAP=y 781CONFIG_PPC_LIB_RHEAP=y
782# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig
index db34909831a2..0ccc6e493dcb 100644
--- a/arch/powerpc/configs/g5_defconfig
+++ b/arch/powerpc/configs/g5_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc3 3# Linux kernel version: 2.6.26-rc6
4# Tue May 20 20:01:18 2008 4# Mon Jun 16 21:08:31 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -597,7 +597,61 @@ CONFIG_ATA=y
597CONFIG_SATA_PMP=y 597CONFIG_SATA_PMP=y
598# CONFIG_SATA_AHCI is not set 598# CONFIG_SATA_AHCI is not set
599# CONFIG_SATA_SIL24 is not set 599# CONFIG_SATA_SIL24 is not set
600# CONFIG_ATA_SFF is not set 600CONFIG_ATA_SFF=y
601CONFIG_SATA_SVW=y
602# CONFIG_ATA_PIIX is not set
603# CONFIG_SATA_MV is not set
604# CONFIG_SATA_NV is not set
605# CONFIG_PDC_ADMA is not set
606# CONFIG_SATA_QSTOR is not set
607# CONFIG_SATA_PROMISE is not set
608# CONFIG_SATA_SX4 is not set
609# CONFIG_SATA_SIL is not set
610# CONFIG_SATA_SIS is not set
611# CONFIG_SATA_ULI is not set
612# CONFIG_SATA_VIA is not set
613# CONFIG_SATA_VITESSE is not set
614# CONFIG_SATA_INIC162X is not set
615# CONFIG_PATA_ALI is not set
616# CONFIG_PATA_AMD is not set
617# CONFIG_PATA_ARTOP is not set
618# CONFIG_PATA_ATIIXP is not set
619# CONFIG_PATA_CMD640_PCI is not set
620# CONFIG_PATA_CMD64X is not set
621# CONFIG_PATA_CS5520 is not set
622# CONFIG_PATA_CS5530 is not set
623# CONFIG_PATA_CYPRESS is not set
624# CONFIG_PATA_EFAR is not set
625# CONFIG_ATA_GENERIC is not set
626# CONFIG_PATA_HPT366 is not set
627# CONFIG_PATA_HPT37X is not set
628# CONFIG_PATA_HPT3X2N is not set
629# CONFIG_PATA_HPT3X3 is not set
630# CONFIG_PATA_IT821X is not set
631# CONFIG_PATA_IT8213 is not set
632# CONFIG_PATA_JMICRON is not set
633# CONFIG_PATA_TRIFLEX is not set
634# CONFIG_PATA_MARVELL is not set
635# CONFIG_PATA_MPIIX is not set
636# CONFIG_PATA_OLDPIIX is not set
637# CONFIG_PATA_NETCELL is not set
638# CONFIG_PATA_NINJA32 is not set
639# CONFIG_PATA_NS87410 is not set
640# CONFIG_PATA_NS87415 is not set
641# CONFIG_PATA_OPTI is not set
642# CONFIG_PATA_OPTIDMA is not set
643# CONFIG_PATA_PDC_OLD is not set
644# CONFIG_PATA_RADISYS is not set
645# CONFIG_PATA_RZ1000 is not set
646# CONFIG_PATA_SC1200 is not set
647# CONFIG_PATA_SERVERWORKS is not set
648# CONFIG_PATA_PDC2027X is not set
649# CONFIG_PATA_SIL680 is not set
650# CONFIG_PATA_SIS is not set
651# CONFIG_PATA_VIA is not set
652# CONFIG_PATA_WINBOND is not set
653# CONFIG_PATA_PLATFORM is not set
654# CONFIG_PATA_SCH is not set
601CONFIG_MD=y 655CONFIG_MD=y
602CONFIG_BLK_DEV_MD=y 656CONFIG_BLK_DEV_MD=y
603CONFIG_MD_LINEAR=y 657CONFIG_MD_LINEAR=y
@@ -1230,6 +1284,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1230# 1284#
1231CONFIG_USB_ACM=m 1285CONFIG_USB_ACM=m
1232CONFIG_USB_PRINTER=y 1286CONFIG_USB_PRINTER=y
1287# CONFIG_USB_WDM is not set
1233 1288
1234# 1289#
1235# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1290# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1345,6 +1400,7 @@ CONFIG_USB_APPLEDISPLAY=m
1345# CONFIG_USB_TRANCEVIBRATOR is not set 1400# CONFIG_USB_TRANCEVIBRATOR is not set
1346# CONFIG_USB_IOWARRIOR is not set 1401# CONFIG_USB_IOWARRIOR is not set
1347# CONFIG_USB_TEST is not set 1402# CONFIG_USB_TEST is not set
1403# CONFIG_USB_ISIGHTFW is not set
1348# CONFIG_USB_GADGET is not set 1404# CONFIG_USB_GADGET is not set
1349# CONFIG_MMC is not set 1405# CONFIG_MMC is not set
1350# CONFIG_MEMSTICK is not set 1406# CONFIG_MEMSTICK is not set
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig
index 22a943afc3c0..48434c2c7628 100644
--- a/arch/powerpc/configs/linkstation_defconfig
+++ b/arch/powerpc/configs/linkstation_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:10 2008 4# Mon Jun 9 08:52:10 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -91,6 +93,7 @@ CONFIG_INITRAMFS_SOURCE=""
91CONFIG_SYSCTL=y 93CONFIG_SYSCTL=y
92# CONFIG_EMBEDDED is not set 94# CONFIG_EMBEDDED is not set
93CONFIG_SYSCTL_SYSCALL=y 95CONFIG_SYSCTL_SYSCALL=y
96CONFIG_SYSCTL_SYSCALL_CHECK=y
94CONFIG_KALLSYMS=y 97CONFIG_KALLSYMS=y
95# CONFIG_KALLSYMS_ALL is not set 98# CONFIG_KALLSYMS_ALL is not set
96# CONFIG_KALLSYMS_EXTRA_PASS is not set 99# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -118,12 +121,14 @@ CONFIG_HAVE_OPROFILE=y
118# CONFIG_KPROBES is not set 121# CONFIG_KPROBES is not set
119CONFIG_HAVE_KPROBES=y 122CONFIG_HAVE_KPROBES=y
120CONFIG_HAVE_KRETPROBES=y 123CONFIG_HAVE_KRETPROBES=y
124# CONFIG_HAVE_DMA_ATTRS is not set
121CONFIG_PROC_PAGE_MONITOR=y 125CONFIG_PROC_PAGE_MONITOR=y
122CONFIG_SLABINFO=y 126CONFIG_SLABINFO=y
123CONFIG_RT_MUTEXES=y 127CONFIG_RT_MUTEXES=y
124# CONFIG_TINY_SHMEM is not set 128# CONFIG_TINY_SHMEM is not set
125CONFIG_BASE_SMALL=0 129CONFIG_BASE_SMALL=0
126CONFIG_MODULES=y 130CONFIG_MODULES=y
131# CONFIG_MODULE_FORCE_LOAD is not set
127CONFIG_MODULE_UNLOAD=y 132CONFIG_MODULE_UNLOAD=y
128# CONFIG_MODULE_FORCE_UNLOAD is not set 133# CONFIG_MODULE_FORCE_UNLOAD is not set
129# CONFIG_MODVERSIONS is not set 134# CONFIG_MODVERSIONS is not set
@@ -223,11 +228,13 @@ CONFIG_FLATMEM=y
223CONFIG_FLAT_NODE_MEM_MAP=y 228CONFIG_FLAT_NODE_MEM_MAP=y
224# CONFIG_SPARSEMEM_STATIC is not set 229# CONFIG_SPARSEMEM_STATIC is not set
225# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 230# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
231CONFIG_PAGEFLAGS_EXTENDED=y
226CONFIG_SPLIT_PTLOCK_CPUS=4 232CONFIG_SPLIT_PTLOCK_CPUS=4
227# CONFIG_RESOURCES_64BIT is not set 233# CONFIG_RESOURCES_64BIT is not set
228CONFIG_ZONE_DMA_FLAG=1 234CONFIG_ZONE_DMA_FLAG=1
229CONFIG_BOUNCE=y 235CONFIG_BOUNCE=y
230CONFIG_VIRT_TO_BUS=y 236CONFIG_VIRT_TO_BUS=y
237CONFIG_FORCE_MAX_ZONEORDER=11
231CONFIG_PROC_DEVICETREE=y 238CONFIG_PROC_DEVICETREE=y
232# CONFIG_CMDLINE_BOOL is not set 239# CONFIG_CMDLINE_BOOL is not set
233# CONFIG_PM is not set 240# CONFIG_PM is not set
@@ -251,6 +258,7 @@ CONFIG_PCI_LEGACY=y
251# CONFIG_PCI_DEBUG is not set 258# CONFIG_PCI_DEBUG is not set
252# CONFIG_PCCARD is not set 259# CONFIG_PCCARD is not set
253# CONFIG_HOTPLUG_PCI is not set 260# CONFIG_HOTPLUG_PCI is not set
261# CONFIG_HAS_RAPIDIO is not set
254 262
255# 263#
256# Advanced setup 264# Advanced setup
@@ -260,11 +268,11 @@ CONFIG_PCI_LEGACY=y
260# 268#
261# Default settings for advanced configuration options are used 269# Default settings for advanced configuration options are used
262# 270#
263CONFIG_HIGHMEM_START=0xfe000000
264CONFIG_LOWMEM_SIZE=0x30000000 271CONFIG_LOWMEM_SIZE=0x30000000
272CONFIG_PAGE_OFFSET=0xc0000000
265CONFIG_KERNEL_START=0xc0000000 273CONFIG_KERNEL_START=0xc0000000
274CONFIG_PHYSICAL_START=0x00000000
266CONFIG_TASK_SIZE=0xc0000000 275CONFIG_TASK_SIZE=0xc0000000
267CONFIG_BOOT_LOAD=0x00800000
268 276
269# 277#
270# Networking 278# Networking
@@ -313,8 +321,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
313# CONFIG_TCP_MD5SIG is not set 321# CONFIG_TCP_MD5SIG is not set
314# CONFIG_IP_VS is not set 322# CONFIG_IP_VS is not set
315# CONFIG_IPV6 is not set 323# CONFIG_IPV6 is not set
316# CONFIG_INET6_XFRM_TUNNEL is not set
317# CONFIG_INET6_TUNNEL is not set
318# CONFIG_NETWORK_SECMARK is not set 324# CONFIG_NETWORK_SECMARK is not set
319CONFIG_NETFILTER=y 325CONFIG_NETFILTER=y
320# CONFIG_NETFILTER_DEBUG is not set 326# CONFIG_NETFILTER_DEBUG is not set
@@ -329,6 +335,7 @@ CONFIG_NF_CONNTRACK=m
329# CONFIG_NF_CT_ACCT is not set 335# CONFIG_NF_CT_ACCT is not set
330# CONFIG_NF_CONNTRACK_MARK is not set 336# CONFIG_NF_CONNTRACK_MARK is not set
331# CONFIG_NF_CONNTRACK_EVENTS is not set 337# CONFIG_NF_CONNTRACK_EVENTS is not set
338# CONFIG_NF_CT_PROTO_DCCP is not set
332CONFIG_NF_CT_PROTO_GRE=m 339CONFIG_NF_CT_PROTO_GRE=m
333CONFIG_NF_CT_PROTO_SCTP=m 340CONFIG_NF_CT_PROTO_SCTP=m
334# CONFIG_NF_CT_PROTO_UDPLITE is not set 341# CONFIG_NF_CT_PROTO_UDPLITE is not set
@@ -407,6 +414,7 @@ CONFIG_IP_NF_TARGET_REDIRECT=m
407# CONFIG_IP_NF_TARGET_NETMAP is not set 414# CONFIG_IP_NF_TARGET_NETMAP is not set
408# CONFIG_NF_NAT_SNMP_BASIC is not set 415# CONFIG_NF_NAT_SNMP_BASIC is not set
409CONFIG_NF_NAT_PROTO_GRE=m 416CONFIG_NF_NAT_PROTO_GRE=m
417CONFIG_NF_NAT_PROTO_SCTP=m
410CONFIG_NF_NAT_FTP=m 418CONFIG_NF_NAT_FTP=m
411CONFIG_NF_NAT_IRC=m 419CONFIG_NF_NAT_IRC=m
412CONFIG_NF_NAT_TFTP=m 420CONFIG_NF_NAT_TFTP=m
@@ -459,8 +467,6 @@ CONFIG_IEEE80211_DEBUG=y
459CONFIG_IEEE80211_CRYPT_WEP=m 467CONFIG_IEEE80211_CRYPT_WEP=m
460CONFIG_IEEE80211_CRYPT_CCMP=m 468CONFIG_IEEE80211_CRYPT_CCMP=m
461CONFIG_IEEE80211_CRYPT_TKIP=m 469CONFIG_IEEE80211_CRYPT_TKIP=m
462CONFIG_IEEE80211_SOFTMAC=m
463CONFIG_IEEE80211_SOFTMAC_DEBUG=y
464# CONFIG_RFKILL is not set 470# CONFIG_RFKILL is not set
465# CONFIG_NET_9P is not set 471# CONFIG_NET_9P is not set
466 472
@@ -486,6 +492,7 @@ CONFIG_MTD_PARTITIONS=y
486# CONFIG_MTD_REDBOOT_PARTS is not set 492# CONFIG_MTD_REDBOOT_PARTS is not set
487# CONFIG_MTD_CMDLINE_PARTS is not set 493# CONFIG_MTD_CMDLINE_PARTS is not set
488# CONFIG_MTD_OF_PARTS is not set 494# CONFIG_MTD_OF_PARTS is not set
495# CONFIG_MTD_AR7_PARTS is not set
489 496
490# 497#
491# User Modules And Translation Layers 498# User Modules And Translation Layers
@@ -565,6 +572,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1
565# 572#
566# CONFIG_MTD_UBI is not set 573# CONFIG_MTD_UBI is not set
567CONFIG_OF_DEVICE=y 574CONFIG_OF_DEVICE=y
575CONFIG_OF_I2C=y
568# CONFIG_PARPORT is not set 576# CONFIG_PARPORT is not set
569CONFIG_BLK_DEV=y 577CONFIG_BLK_DEV=y
570# CONFIG_BLK_DEV_FD is not set 578# CONFIG_BLK_DEV_FD is not set
@@ -670,7 +678,11 @@ CONFIG_SCSI_LOWLEVEL=y
670# CONFIG_SCSI_SRP is not set 678# CONFIG_SCSI_SRP is not set
671CONFIG_ATA=y 679CONFIG_ATA=y
672# CONFIG_ATA_NONSTANDARD is not set 680# CONFIG_ATA_NONSTANDARD is not set
681CONFIG_SATA_PMP=y
673# CONFIG_SATA_AHCI is not set 682# CONFIG_SATA_AHCI is not set
683# CONFIG_SATA_SIL24 is not set
684# CONFIG_SATA_FSL is not set
685CONFIG_ATA_SFF=y
674# CONFIG_SATA_SVW is not set 686# CONFIG_SATA_SVW is not set
675# CONFIG_ATA_PIIX is not set 687# CONFIG_ATA_PIIX is not set
676# CONFIG_SATA_MV is not set 688# CONFIG_SATA_MV is not set
@@ -680,13 +692,11 @@ CONFIG_ATA=y
680# CONFIG_SATA_PROMISE is not set 692# CONFIG_SATA_PROMISE is not set
681# CONFIG_SATA_SX4 is not set 693# CONFIG_SATA_SX4 is not set
682# CONFIG_SATA_SIL is not set 694# CONFIG_SATA_SIL is not set
683# CONFIG_SATA_SIL24 is not set
684# CONFIG_SATA_SIS is not set 695# CONFIG_SATA_SIS is not set
685# CONFIG_SATA_ULI is not set 696# CONFIG_SATA_ULI is not set
686# CONFIG_SATA_VIA is not set 697# CONFIG_SATA_VIA is not set
687# CONFIG_SATA_VITESSE is not set 698# CONFIG_SATA_VITESSE is not set
688# CONFIG_SATA_INIC162X is not set 699# CONFIG_SATA_INIC162X is not set
689# CONFIG_SATA_FSL is not set
690# CONFIG_PATA_ALI is not set 700# CONFIG_PATA_ALI is not set
691# CONFIG_PATA_AMD is not set 701# CONFIG_PATA_AMD is not set
692# CONFIG_PATA_ARTOP is not set 702# CONFIG_PATA_ARTOP is not set
@@ -726,6 +736,7 @@ CONFIG_PATA_SIL680=y
726# CONFIG_PATA_VIA is not set 736# CONFIG_PATA_VIA is not set
727# CONFIG_PATA_WINBOND is not set 737# CONFIG_PATA_WINBOND is not set
728# CONFIG_PATA_PLATFORM is not set 738# CONFIG_PATA_PLATFORM is not set
739# CONFIG_PATA_SCH is not set
729# CONFIG_MD is not set 740# CONFIG_MD is not set
730# CONFIG_FUSION is not set 741# CONFIG_FUSION is not set
731 742
@@ -785,7 +796,6 @@ CONFIG_R8169=y
785# CONFIG_SIS190 is not set 796# CONFIG_SIS190 is not set
786# CONFIG_SKGE is not set 797# CONFIG_SKGE is not set
787# CONFIG_SKY2 is not set 798# CONFIG_SKY2 is not set
788# CONFIG_SK98LIN is not set
789# CONFIG_VIA_VELOCITY is not set 799# CONFIG_VIA_VELOCITY is not set
790# CONFIG_TIGON3 is not set 800# CONFIG_TIGON3 is not set
791# CONFIG_BNX2 is not set 801# CONFIG_BNX2 is not set
@@ -805,6 +815,7 @@ CONFIG_NETDEV_10000=y
805# CONFIG_MLX4_CORE is not set 815# CONFIG_MLX4_CORE is not set
806# CONFIG_TEHUTI is not set 816# CONFIG_TEHUTI is not set
807# CONFIG_BNX2X is not set 817# CONFIG_BNX2X is not set
818# CONFIG_SFC is not set
808# CONFIG_TR is not set 819# CONFIG_TR is not set
809 820
810# 821#
@@ -812,6 +823,7 @@ CONFIG_NETDEV_10000=y
812# 823#
813# CONFIG_WLAN_PRE80211 is not set 824# CONFIG_WLAN_PRE80211 is not set
814# CONFIG_WLAN_80211 is not set 825# CONFIG_WLAN_80211 is not set
826# CONFIG_IWLWIFI_LEDS is not set
815 827
816# 828#
817# USB Network Adapters 829# USB Network Adapters
@@ -886,6 +898,7 @@ CONFIG_VT=y
886CONFIG_VT_CONSOLE=y 898CONFIG_VT_CONSOLE=y
887CONFIG_HW_CONSOLE=y 899CONFIG_HW_CONSOLE=y
888# CONFIG_VT_HW_CONSOLE_BINDING is not set 900# CONFIG_VT_HW_CONSOLE_BINDING is not set
901CONFIG_DEVKMEM=y
889# CONFIG_SERIAL_NONSTANDARD is not set 902# CONFIG_SERIAL_NONSTANDARD is not set
890# CONFIG_NOZOMI is not set 903# CONFIG_NOZOMI is not set
891 904
@@ -913,7 +926,6 @@ CONFIG_LEGACY_PTY_COUNT=256
913# CONFIG_IPMI_HANDLER is not set 926# CONFIG_IPMI_HANDLER is not set
914CONFIG_HW_RANDOM=y 927CONFIG_HW_RANDOM=y
915# CONFIG_NVRAM is not set 928# CONFIG_NVRAM is not set
916# CONFIG_GEN_RTC is not set
917# CONFIG_R3964 is not set 929# CONFIG_R3964 is not set
918# CONFIG_APPLICOM is not set 930# CONFIG_APPLICOM is not set
919# CONFIG_RAW_DRIVER is not set 931# CONFIG_RAW_DRIVER is not set
@@ -924,13 +936,6 @@ CONFIG_I2C_BOARDINFO=y
924CONFIG_I2C_CHARDEV=y 936CONFIG_I2C_CHARDEV=y
925 937
926# 938#
927# I2C Algorithms
928#
929# CONFIG_I2C_ALGOBIT is not set
930# CONFIG_I2C_ALGOPCF is not set
931# CONFIG_I2C_ALGOPCA is not set
932
933#
934# I2C Hardware Bus support 939# I2C Hardware Bus support
935# 940#
936# CONFIG_I2C_ALI1535 is not set 941# CONFIG_I2C_ALI1535 is not set
@@ -957,6 +962,7 @@ CONFIG_I2C_MPC=y
957# CONFIG_I2C_VIA is not set 962# CONFIG_I2C_VIA is not set
958# CONFIG_I2C_VIAPRO is not set 963# CONFIG_I2C_VIAPRO is not set
959# CONFIG_I2C_VOODOO3 is not set 964# CONFIG_I2C_VOODOO3 is not set
965# CONFIG_I2C_PCA_PLATFORM is not set
960 966
961# 967#
962# Miscellaneous I2C Chip support 968# Miscellaneous I2C Chip support
@@ -966,19 +972,13 @@ CONFIG_SENSORS_EEPROM=m
966# CONFIG_SENSORS_PCF8574 is not set 972# CONFIG_SENSORS_PCF8574 is not set
967# CONFIG_PCF8575 is not set 973# CONFIG_PCF8575 is not set
968# CONFIG_SENSORS_PCF8591 is not set 974# CONFIG_SENSORS_PCF8591 is not set
969# CONFIG_TPS65010 is not set
970# CONFIG_SENSORS_MAX6875 is not set 975# CONFIG_SENSORS_MAX6875 is not set
971# CONFIG_SENSORS_TSL2550 is not set 976# CONFIG_SENSORS_TSL2550 is not set
972# CONFIG_I2C_DEBUG_CORE is not set 977# CONFIG_I2C_DEBUG_CORE is not set
973# CONFIG_I2C_DEBUG_ALGO is not set 978# CONFIG_I2C_DEBUG_ALGO is not set
974# CONFIG_I2C_DEBUG_BUS is not set 979# CONFIG_I2C_DEBUG_BUS is not set
975# CONFIG_I2C_DEBUG_CHIP is not set 980# CONFIG_I2C_DEBUG_CHIP is not set
976
977#
978# SPI support
979#
980# CONFIG_SPI is not set 981# CONFIG_SPI is not set
981# CONFIG_SPI_MASTER is not set
982# CONFIG_W1 is not set 982# CONFIG_W1 is not set
983# CONFIG_POWER_SUPPLY is not set 983# CONFIG_POWER_SUPPLY is not set
984CONFIG_HWMON=y 984CONFIG_HWMON=y
@@ -1048,12 +1048,22 @@ CONFIG_SSB_POSSIBLE=y
1048# Multifunction device drivers 1048# Multifunction device drivers
1049# 1049#
1050# CONFIG_MFD_SM501 is not set 1050# CONFIG_MFD_SM501 is not set
1051# CONFIG_HTC_PASIC3 is not set
1051 1052
1052# 1053#
1053# Multimedia devices 1054# Multimedia devices
1054# 1055#
1056
1057#
1058# Multimedia core support
1059#
1055# CONFIG_VIDEO_DEV is not set 1060# CONFIG_VIDEO_DEV is not set
1056# CONFIG_DVB_CORE is not set 1061# CONFIG_DVB_CORE is not set
1062# CONFIG_VIDEO_MEDIA is not set
1063
1064#
1065# Multimedia drivers
1066#
1057# CONFIG_DAB is not set 1067# CONFIG_DAB is not set
1058 1068
1059# 1069#
@@ -1115,12 +1125,14 @@ CONFIG_USB_DEVICE_CLASS=y
1115# 1125#
1116# USB Host Controller Drivers 1126# USB Host Controller Drivers
1117# 1127#
1128# CONFIG_USB_C67X00_HCD is not set
1118CONFIG_USB_EHCI_HCD=y 1129CONFIG_USB_EHCI_HCD=y
1119# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1130# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1120# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1131# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1121# CONFIG_USB_EHCI_FSL is not set 1132# CONFIG_USB_EHCI_FSL is not set
1122CONFIG_USB_EHCI_HCD_PPC_OF=y 1133CONFIG_USB_EHCI_HCD_PPC_OF=y
1123# CONFIG_USB_ISP116X_HCD is not set 1134# CONFIG_USB_ISP116X_HCD is not set
1135# CONFIG_USB_ISP1760_HCD is not set
1124CONFIG_USB_OHCI_HCD=y 1136CONFIG_USB_OHCI_HCD=y
1125CONFIG_USB_OHCI_HCD_PPC_OF=y 1137CONFIG_USB_OHCI_HCD_PPC_OF=y
1126CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1138CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
@@ -1138,6 +1150,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1138# 1150#
1139# CONFIG_USB_ACM is not set 1151# CONFIG_USB_ACM is not set
1140CONFIG_USB_PRINTER=m 1152CONFIG_USB_PRINTER=m
1153# CONFIG_USB_WDM is not set
1141 1154
1142# 1155#
1143# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1156# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1159,6 +1172,7 @@ CONFIG_USB_STORAGE=m
1159# CONFIG_USB_STORAGE_ALAUDA is not set 1172# CONFIG_USB_STORAGE_ALAUDA is not set
1160# CONFIG_USB_STORAGE_ONETOUCH is not set 1173# CONFIG_USB_STORAGE_ONETOUCH is not set
1161# CONFIG_USB_STORAGE_KARMA is not set 1174# CONFIG_USB_STORAGE_KARMA is not set
1175# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1162# CONFIG_USB_LIBUSUAL is not set 1176# CONFIG_USB_LIBUSUAL is not set
1163 1177
1164# 1178#
@@ -1202,9 +1216,11 @@ CONFIG_USB_SERIAL_FTDI_SIO=y
1202# CONFIG_USB_SERIAL_MCT_U232 is not set 1216# CONFIG_USB_SERIAL_MCT_U232 is not set
1203# CONFIG_USB_SERIAL_MOS7720 is not set 1217# CONFIG_USB_SERIAL_MOS7720 is not set
1204# CONFIG_USB_SERIAL_MOS7840 is not set 1218# CONFIG_USB_SERIAL_MOS7840 is not set
1219# CONFIG_USB_SERIAL_MOTOROLA is not set
1205# CONFIG_USB_SERIAL_NAVMAN is not set 1220# CONFIG_USB_SERIAL_NAVMAN is not set
1206# CONFIG_USB_SERIAL_PL2303 is not set 1221# CONFIG_USB_SERIAL_PL2303 is not set
1207# CONFIG_USB_SERIAL_OTI6858 is not set 1222# CONFIG_USB_SERIAL_OTI6858 is not set
1223# CONFIG_USB_SERIAL_SPCP8X5 is not set
1208# CONFIG_USB_SERIAL_HP4X is not set 1224# CONFIG_USB_SERIAL_HP4X is not set
1209# CONFIG_USB_SERIAL_SAFE is not set 1225# CONFIG_USB_SERIAL_SAFE is not set
1210# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set 1226# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
@@ -1238,10 +1254,12 @@ CONFIG_USB_SERIAL_FTDI_SIO=y
1238# CONFIG_USB_TRANCEVIBRATOR is not set 1254# CONFIG_USB_TRANCEVIBRATOR is not set
1239# CONFIG_USB_IOWARRIOR is not set 1255# CONFIG_USB_IOWARRIOR is not set
1240# CONFIG_USB_TEST is not set 1256# CONFIG_USB_TEST is not set
1257# CONFIG_USB_ISIGHTFW is not set
1241# CONFIG_USB_GADGET is not set 1258# CONFIG_USB_GADGET is not set
1242# CONFIG_MMC is not set 1259# CONFIG_MMC is not set
1243# CONFIG_MEMSTICK is not set 1260# CONFIG_MEMSTICK is not set
1244# CONFIG_NEW_LEDS is not set 1261# CONFIG_NEW_LEDS is not set
1262# CONFIG_ACCESSIBILITY is not set
1245# CONFIG_INFINIBAND is not set 1263# CONFIG_INFINIBAND is not set
1246# CONFIG_EDAC is not set 1264# CONFIG_EDAC is not set
1247CONFIG_RTC_LIB=y 1265CONFIG_RTC_LIB=y
@@ -1293,11 +1311,8 @@ CONFIG_RTC_DRV_RS5C372=y
1293# 1311#
1294# on-CPU RTC drivers 1312# on-CPU RTC drivers
1295# 1313#
1314# CONFIG_RTC_DRV_PPC is not set
1296# CONFIG_DMADEVICES is not set 1315# CONFIG_DMADEVICES is not set
1297
1298#
1299# Userspace I/O
1300#
1301# CONFIG_UIO is not set 1316# CONFIG_UIO is not set
1302 1317
1303# 1318#
@@ -1318,10 +1333,9 @@ CONFIG_FS_MBCACHE=y
1318CONFIG_FS_POSIX_ACL=y 1333CONFIG_FS_POSIX_ACL=y
1319CONFIG_XFS_FS=m 1334CONFIG_XFS_FS=m
1320# CONFIG_XFS_QUOTA is not set 1335# CONFIG_XFS_QUOTA is not set
1321# CONFIG_XFS_SECURITY is not set
1322# CONFIG_XFS_POSIX_ACL is not set 1336# CONFIG_XFS_POSIX_ACL is not set
1323# CONFIG_XFS_RT is not set 1337# CONFIG_XFS_RT is not set
1324# CONFIG_GFS2_FS is not set 1338# CONFIG_XFS_DEBUG is not set
1325# CONFIG_OCFS2_FS is not set 1339# CONFIG_OCFS2_FS is not set
1326CONFIG_DNOTIFY=y 1340CONFIG_DNOTIFY=y
1327CONFIG_INOTIFY=y 1341CONFIG_INOTIFY=y
@@ -1388,12 +1402,10 @@ CONFIG_NFS_FS=y
1388CONFIG_NFS_V3=y 1402CONFIG_NFS_V3=y
1389CONFIG_NFS_V3_ACL=y 1403CONFIG_NFS_V3_ACL=y
1390CONFIG_NFS_V4=y 1404CONFIG_NFS_V4=y
1391# CONFIG_NFS_DIRECTIO is not set
1392CONFIG_NFSD=m 1405CONFIG_NFSD=m
1393CONFIG_NFSD_V3=y 1406CONFIG_NFSD_V3=y
1394# CONFIG_NFSD_V3_ACL is not set 1407# CONFIG_NFSD_V3_ACL is not set
1395# CONFIG_NFSD_V4 is not set 1408# CONFIG_NFSD_V4 is not set
1396CONFIG_NFSD_TCP=y
1397CONFIG_ROOT_NFS=y 1409CONFIG_ROOT_NFS=y
1398CONFIG_LOCKD=y 1410CONFIG_LOCKD=y
1399CONFIG_LOCKD_V4=y 1411CONFIG_LOCKD_V4=y
@@ -1467,9 +1479,10 @@ CONFIG_NLS_UTF8=m
1467# Library routines 1479# Library routines
1468# 1480#
1469CONFIG_BITREVERSE=y 1481CONFIG_BITREVERSE=y
1482# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1470CONFIG_CRC_CCITT=m 1483CONFIG_CRC_CCITT=m
1471# CONFIG_CRC16 is not set 1484# CONFIG_CRC16 is not set
1472# CONFIG_CRC_ITU_T is not set 1485CONFIG_CRC_ITU_T=m
1473CONFIG_CRC32=y 1486CONFIG_CRC32=y
1474# CONFIG_CRC7 is not set 1487# CONFIG_CRC7 is not set
1475CONFIG_LIBCRC32C=m 1488CONFIG_LIBCRC32C=m
@@ -1481,6 +1494,7 @@ CONFIG_PLIST=y
1481CONFIG_HAS_IOMEM=y 1494CONFIG_HAS_IOMEM=y
1482CONFIG_HAS_IOPORT=y 1495CONFIG_HAS_IOPORT=y
1483CONFIG_HAS_DMA=y 1496CONFIG_HAS_DMA=y
1497CONFIG_HAVE_LMB=y
1484 1498
1485# 1499#
1486# Kernel hacking 1500# Kernel hacking
@@ -1488,6 +1502,7 @@ CONFIG_HAS_DMA=y
1488# CONFIG_PRINTK_TIME is not set 1502# CONFIG_PRINTK_TIME is not set
1489CONFIG_ENABLE_WARN_DEPRECATED=y 1503CONFIG_ENABLE_WARN_DEPRECATED=y
1490CONFIG_ENABLE_MUST_CHECK=y 1504CONFIG_ENABLE_MUST_CHECK=y
1505CONFIG_FRAME_WARN=1024
1491CONFIG_MAGIC_SYSRQ=y 1506CONFIG_MAGIC_SYSRQ=y
1492# CONFIG_UNUSED_SYMBOLS is not set 1507# CONFIG_UNUSED_SYMBOLS is not set
1493# CONFIG_DEBUG_FS is not set 1508# CONFIG_DEBUG_FS is not set
@@ -1498,6 +1513,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1498CONFIG_SCHED_DEBUG=y 1513CONFIG_SCHED_DEBUG=y
1499# CONFIG_SCHEDSTATS is not set 1514# CONFIG_SCHEDSTATS is not set
1500# CONFIG_TIMER_STATS is not set 1515# CONFIG_TIMER_STATS is not set
1516# CONFIG_DEBUG_OBJECTS is not set
1501# CONFIG_SLUB_DEBUG_ON is not set 1517# CONFIG_SLUB_DEBUG_ON is not set
1502# CONFIG_SLUB_STATS is not set 1518# CONFIG_SLUB_STATS is not set
1503# CONFIG_DEBUG_RT_MUTEXES is not set 1519# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1510,6 +1526,7 @@ CONFIG_SCHED_DEBUG=y
1510CONFIG_DEBUG_BUGVERBOSE=y 1526CONFIG_DEBUG_BUGVERBOSE=y
1511# CONFIG_DEBUG_INFO is not set 1527# CONFIG_DEBUG_INFO is not set
1512# CONFIG_DEBUG_VM is not set 1528# CONFIG_DEBUG_VM is not set
1529# CONFIG_DEBUG_WRITECOUNT is not set
1513# CONFIG_DEBUG_LIST is not set 1530# CONFIG_DEBUG_LIST is not set
1514# CONFIG_DEBUG_SG is not set 1531# CONFIG_DEBUG_SG is not set
1515# CONFIG_BOOT_PRINTK_DELAY is not set 1532# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1521,6 +1538,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
1521# CONFIG_DEBUG_STACK_USAGE is not set 1538# CONFIG_DEBUG_STACK_USAGE is not set
1522# CONFIG_DEBUG_PAGEALLOC is not set 1539# CONFIG_DEBUG_PAGEALLOC is not set
1523# CONFIG_DEBUGGER is not set 1540# CONFIG_DEBUGGER is not set
1541# CONFIG_IRQSTACKS is not set
1524# CONFIG_BDI_SWITCH is not set 1542# CONFIG_BDI_SWITCH is not set
1525# CONFIG_BOOTX_TEXT is not set 1543# CONFIG_BOOTX_TEXT is not set
1526# CONFIG_PPC_EARLY_DEBUG is not set 1544# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1532,52 +1550,82 @@ CONFIG_DEBUG_BUGVERBOSE=y
1532# CONFIG_SECURITY is not set 1550# CONFIG_SECURITY is not set
1533# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1551# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1534CONFIG_CRYPTO=y 1552CONFIG_CRYPTO=y
1553
1554#
1555# Crypto core or helper
1556#
1535CONFIG_CRYPTO_ALGAPI=y 1557CONFIG_CRYPTO_ALGAPI=y
1536CONFIG_CRYPTO_BLKCIPHER=y 1558CONFIG_CRYPTO_BLKCIPHER=y
1537# CONFIG_CRYPTO_SEQIV is not set
1538CONFIG_CRYPTO_MANAGER=y 1559CONFIG_CRYPTO_MANAGER=y
1560# CONFIG_CRYPTO_GF128MUL is not set
1561# CONFIG_CRYPTO_NULL is not set
1562# CONFIG_CRYPTO_CRYPTD is not set
1563# CONFIG_CRYPTO_AUTHENC is not set
1564# CONFIG_CRYPTO_TEST is not set
1565
1566#
1567# Authenticated Encryption with Associated Data
1568#
1569# CONFIG_CRYPTO_CCM is not set
1570# CONFIG_CRYPTO_GCM is not set
1571# CONFIG_CRYPTO_SEQIV is not set
1572
1573#
1574# Block modes
1575#
1576CONFIG_CRYPTO_CBC=y
1577# CONFIG_CRYPTO_CTR is not set
1578# CONFIG_CRYPTO_CTS is not set
1579CONFIG_CRYPTO_ECB=m
1580# CONFIG_CRYPTO_LRW is not set
1581CONFIG_CRYPTO_PCBC=m
1582# CONFIG_CRYPTO_XTS is not set
1583
1584#
1585# Hash modes
1586#
1539# CONFIG_CRYPTO_HMAC is not set 1587# CONFIG_CRYPTO_HMAC is not set
1540# CONFIG_CRYPTO_XCBC is not set 1588# CONFIG_CRYPTO_XCBC is not set
1541# CONFIG_CRYPTO_NULL is not set 1589
1590#
1591# Digest
1592#
1593CONFIG_CRYPTO_CRC32C=m
1542CONFIG_CRYPTO_MD4=m 1594CONFIG_CRYPTO_MD4=m
1543CONFIG_CRYPTO_MD5=y 1595CONFIG_CRYPTO_MD5=y
1596CONFIG_CRYPTO_MICHAEL_MIC=m
1544CONFIG_CRYPTO_SHA1=m 1597CONFIG_CRYPTO_SHA1=m
1545# CONFIG_CRYPTO_SHA256 is not set 1598# CONFIG_CRYPTO_SHA256 is not set
1546# CONFIG_CRYPTO_SHA512 is not set 1599# CONFIG_CRYPTO_SHA512 is not set
1547# CONFIG_CRYPTO_WP512 is not set
1548# CONFIG_CRYPTO_TGR192 is not set 1600# CONFIG_CRYPTO_TGR192 is not set
1549# CONFIG_CRYPTO_GF128MUL is not set 1601# CONFIG_CRYPTO_WP512 is not set
1550CONFIG_CRYPTO_ECB=m 1602
1551CONFIG_CRYPTO_CBC=y 1603#
1552CONFIG_CRYPTO_PCBC=m 1604# Ciphers
1553# CONFIG_CRYPTO_LRW is not set 1605#
1554# CONFIG_CRYPTO_XTS is not set
1555# CONFIG_CRYPTO_CTR is not set
1556# CONFIG_CRYPTO_GCM is not set
1557# CONFIG_CRYPTO_CCM is not set
1558# CONFIG_CRYPTO_CRYPTD is not set
1559CONFIG_CRYPTO_DES=y
1560# CONFIG_CRYPTO_FCRYPT is not set
1561CONFIG_CRYPTO_BLOWFISH=m
1562CONFIG_CRYPTO_TWOFISH=m
1563CONFIG_CRYPTO_TWOFISH_COMMON=m
1564CONFIG_CRYPTO_SERPENT=m
1565CONFIG_CRYPTO_AES=m 1606CONFIG_CRYPTO_AES=m
1607# CONFIG_CRYPTO_ANUBIS is not set
1608CONFIG_CRYPTO_ARC4=m
1609CONFIG_CRYPTO_BLOWFISH=m
1610# CONFIG_CRYPTO_CAMELLIA is not set
1566# CONFIG_CRYPTO_CAST5 is not set 1611# CONFIG_CRYPTO_CAST5 is not set
1567# CONFIG_CRYPTO_CAST6 is not set 1612# CONFIG_CRYPTO_CAST6 is not set
1568# CONFIG_CRYPTO_TEA is not set 1613CONFIG_CRYPTO_DES=y
1569CONFIG_CRYPTO_ARC4=m 1614# CONFIG_CRYPTO_FCRYPT is not set
1570# CONFIG_CRYPTO_KHAZAD is not set 1615# CONFIG_CRYPTO_KHAZAD is not set
1571# CONFIG_CRYPTO_ANUBIS is not set
1572# CONFIG_CRYPTO_SEED is not set
1573# CONFIG_CRYPTO_SALSA20 is not set 1616# CONFIG_CRYPTO_SALSA20 is not set
1617# CONFIG_CRYPTO_SEED is not set
1618CONFIG_CRYPTO_SERPENT=m
1619# CONFIG_CRYPTO_TEA is not set
1620CONFIG_CRYPTO_TWOFISH=m
1621CONFIG_CRYPTO_TWOFISH_COMMON=m
1622
1623#
1624# Compression
1625#
1574CONFIG_CRYPTO_DEFLATE=m 1626CONFIG_CRYPTO_DEFLATE=m
1575CONFIG_CRYPTO_MICHAEL_MIC=m
1576CONFIG_CRYPTO_CRC32C=m
1577# CONFIG_CRYPTO_CAMELLIA is not set
1578# CONFIG_CRYPTO_TEST is not set
1579# CONFIG_CRYPTO_AUTHENC is not set
1580# CONFIG_CRYPTO_LZO is not set 1627# CONFIG_CRYPTO_LZO is not set
1581CONFIG_CRYPTO_HW=y 1628CONFIG_CRYPTO_HW=y
1582# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1629# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1583# CONFIG_PPC_CLOCK is not set 1630# CONFIG_PPC_CLOCK is not set
1631# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/mpc7448_hpc2_defconfig b/arch/powerpc/configs/mpc7448_hpc2_defconfig
index a3d52e3f2ded..066c583c1f8a 100644
--- a/arch/powerpc/configs/mpc7448_hpc2_defconfig
+++ b/arch/powerpc/configs/mpc7448_hpc2_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:11 2008 4# Mon Jun 9 08:52:11 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89CONFIG_KALLSYMS=y 92CONFIG_KALLSYMS=y
90# CONFIG_KALLSYMS_EXTRA_PASS is not set 93# CONFIG_KALLSYMS_EXTRA_PASS is not set
91CONFIG_HOTPLUG=y 94CONFIG_HOTPLUG=y
@@ -111,6 +114,7 @@ CONFIG_SLUB=y
111CONFIG_HAVE_OPROFILE=y 114CONFIG_HAVE_OPROFILE=y
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
@@ -209,11 +213,13 @@ CONFIG_FLATMEM=y
209CONFIG_FLAT_NODE_MEM_MAP=y 213CONFIG_FLAT_NODE_MEM_MAP=y
210# CONFIG_SPARSEMEM_STATIC is not set 214# CONFIG_SPARSEMEM_STATIC is not set
211# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 215# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
216CONFIG_PAGEFLAGS_EXTENDED=y
212CONFIG_SPLIT_PTLOCK_CPUS=4 217CONFIG_SPLIT_PTLOCK_CPUS=4
213# CONFIG_RESOURCES_64BIT is not set 218# CONFIG_RESOURCES_64BIT is not set
214CONFIG_ZONE_DMA_FLAG=1 219CONFIG_ZONE_DMA_FLAG=1
215CONFIG_BOUNCE=y 220CONFIG_BOUNCE=y
216CONFIG_VIRT_TO_BUS=y 221CONFIG_VIRT_TO_BUS=y
222CONFIG_FORCE_MAX_ZONEORDER=11
217CONFIG_PROC_DEVICETREE=y 223CONFIG_PROC_DEVICETREE=y
218# CONFIG_CMDLINE_BOOL is not set 224# CONFIG_CMDLINE_BOOL is not set
219# CONFIG_PM is not set 225# CONFIG_PM is not set
@@ -235,6 +241,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
235CONFIG_PCI_LEGACY=y 241CONFIG_PCI_LEGACY=y
236# CONFIG_PCCARD is not set 242# CONFIG_PCCARD is not set
237# CONFIG_HOTPLUG_PCI is not set 243# CONFIG_HOTPLUG_PCI is not set
244# CONFIG_HAS_RAPIDIO is not set
238 245
239# 246#
240# Advanced setup 247# Advanced setup
@@ -244,11 +251,11 @@ CONFIG_PCI_LEGACY=y
244# 251#
245# Default settings for advanced configuration options are used 252# Default settings for advanced configuration options are used
246# 253#
247CONFIG_HIGHMEM_START=0xfe000000
248CONFIG_LOWMEM_SIZE=0x30000000 254CONFIG_LOWMEM_SIZE=0x30000000
255CONFIG_PAGE_OFFSET=0xc0000000
249CONFIG_KERNEL_START=0xc0000000 256CONFIG_KERNEL_START=0xc0000000
257CONFIG_PHYSICAL_START=0x00000000
250CONFIG_TASK_SIZE=0xc0000000 258CONFIG_TASK_SIZE=0xc0000000
251CONFIG_BOOT_LOAD=0x00800000
252 259
253# 260#
254# Networking 261# Networking
@@ -296,8 +303,6 @@ CONFIG_TCP_CONG_CUBIC=y
296CONFIG_DEFAULT_TCP_CONG="cubic" 303CONFIG_DEFAULT_TCP_CONG="cubic"
297# CONFIG_TCP_MD5SIG is not set 304# CONFIG_TCP_MD5SIG is not set
298# CONFIG_IPV6 is not set 305# CONFIG_IPV6 is not set
299# CONFIG_INET6_XFRM_TUNNEL is not set
300# CONFIG_INET6_TUNNEL is not set
301# CONFIG_NETWORK_SECMARK is not set 306# CONFIG_NETWORK_SECMARK is not set
302# CONFIG_NETFILTER is not set 307# CONFIG_NETFILTER is not set
303# CONFIG_IP_DCCP is not set 308# CONFIG_IP_DCCP is not set
@@ -454,7 +459,10 @@ CONFIG_SCSI_LOWLEVEL=y
454# CONFIG_SCSI_SRP is not set 459# CONFIG_SCSI_SRP is not set
455CONFIG_ATA=y 460CONFIG_ATA=y
456# CONFIG_ATA_NONSTANDARD is not set 461# CONFIG_ATA_NONSTANDARD is not set
462CONFIG_SATA_PMP=y
457# CONFIG_SATA_AHCI is not set 463# CONFIG_SATA_AHCI is not set
464# CONFIG_SATA_SIL24 is not set
465CONFIG_ATA_SFF=y
458# CONFIG_SATA_SVW is not set 466# CONFIG_SATA_SVW is not set
459# CONFIG_ATA_PIIX is not set 467# CONFIG_ATA_PIIX is not set
460CONFIG_SATA_MV=y 468CONFIG_SATA_MV=y
@@ -464,7 +472,6 @@ CONFIG_SATA_MV=y
464# CONFIG_SATA_PROMISE is not set 472# CONFIG_SATA_PROMISE is not set
465# CONFIG_SATA_SX4 is not set 473# CONFIG_SATA_SX4 is not set
466# CONFIG_SATA_SIL is not set 474# CONFIG_SATA_SIL is not set
467# CONFIG_SATA_SIL24 is not set
468# CONFIG_SATA_SIS is not set 475# CONFIG_SATA_SIS is not set
469# CONFIG_SATA_ULI is not set 476# CONFIG_SATA_ULI is not set
470# CONFIG_SATA_VIA is not set 477# CONFIG_SATA_VIA is not set
@@ -509,6 +516,7 @@ CONFIG_SATA_MV=y
509# CONFIG_PATA_VIA is not set 516# CONFIG_PATA_VIA is not set
510# CONFIG_PATA_WINBOND is not set 517# CONFIG_PATA_WINBOND is not set
511# CONFIG_PATA_PLATFORM is not set 518# CONFIG_PATA_PLATFORM is not set
519# CONFIG_PATA_SCH is not set
512# CONFIG_MD is not set 520# CONFIG_MD is not set
513# CONFIG_FUSION is not set 521# CONFIG_FUSION is not set
514 522
@@ -596,7 +604,6 @@ CONFIG_NETDEV_1000=y
596# CONFIG_SIS190 is not set 604# CONFIG_SIS190 is not set
597# CONFIG_SKGE is not set 605# CONFIG_SKGE is not set
598# CONFIG_SKY2 is not set 606# CONFIG_SKY2 is not set
599# CONFIG_SK98LIN is not set
600# CONFIG_VIA_VELOCITY is not set 607# CONFIG_VIA_VELOCITY is not set
601# CONFIG_TIGON3 is not set 608# CONFIG_TIGON3 is not set
602# CONFIG_BNX2 is not set 609# CONFIG_BNX2 is not set
@@ -616,6 +623,7 @@ CONFIG_NETDEV_10000=y
616# CONFIG_MLX4_CORE is not set 623# CONFIG_MLX4_CORE is not set
617# CONFIG_TEHUTI is not set 624# CONFIG_TEHUTI is not set
618# CONFIG_BNX2X is not set 625# CONFIG_BNX2X is not set
626# CONFIG_SFC is not set
619# CONFIG_TR is not set 627# CONFIG_TR is not set
620 628
621# 629#
@@ -623,6 +631,7 @@ CONFIG_NETDEV_10000=y
623# 631#
624# CONFIG_WLAN_PRE80211 is not set 632# CONFIG_WLAN_PRE80211 is not set
625# CONFIG_WLAN_80211 is not set 633# CONFIG_WLAN_80211 is not set
634# CONFIG_IWLWIFI_LEDS is not set
626# CONFIG_WAN is not set 635# CONFIG_WAN is not set
627# CONFIG_FDDI is not set 636# CONFIG_FDDI is not set
628# CONFIG_HIPPI is not set 637# CONFIG_HIPPI is not set
@@ -670,6 +679,7 @@ CONFIG_INPUT=y
670# Character devices 679# Character devices
671# 680#
672# CONFIG_VT is not set 681# CONFIG_VT is not set
682CONFIG_DEVKMEM=y
673# CONFIG_SERIAL_NONSTANDARD is not set 683# CONFIG_SERIAL_NONSTANDARD is not set
674# CONFIG_NOZOMI is not set 684# CONFIG_NOZOMI is not set
675 685
@@ -705,12 +715,7 @@ CONFIG_GEN_RTC=y
705# CONFIG_TCG_TPM is not set 715# CONFIG_TCG_TPM is not set
706CONFIG_DEVPORT=y 716CONFIG_DEVPORT=y
707# CONFIG_I2C is not set 717# CONFIG_I2C is not set
708
709#
710# SPI support
711#
712# CONFIG_SPI is not set 718# CONFIG_SPI is not set
713# CONFIG_SPI_MASTER is not set
714# CONFIG_W1 is not set 719# CONFIG_W1 is not set
715# CONFIG_POWER_SUPPLY is not set 720# CONFIG_POWER_SUPPLY is not set
716CONFIG_HWMON=y 721CONFIG_HWMON=y
@@ -743,12 +748,22 @@ CONFIG_SSB_POSSIBLE=y
743# Multifunction device drivers 748# Multifunction device drivers
744# 749#
745# CONFIG_MFD_SM501 is not set 750# CONFIG_MFD_SM501 is not set
751# CONFIG_HTC_PASIC3 is not set
746 752
747# 753#
748# Multimedia devices 754# Multimedia devices
749# 755#
756
757#
758# Multimedia core support
759#
750# CONFIG_VIDEO_DEV is not set 760# CONFIG_VIDEO_DEV is not set
751# CONFIG_DVB_CORE is not set 761# CONFIG_DVB_CORE is not set
762# CONFIG_VIDEO_MEDIA is not set
763
764#
765# Multimedia drivers
766#
752CONFIG_DAB=y 767CONFIG_DAB=y
753 768
754# 769#
@@ -779,6 +794,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
779CONFIG_USB_ARCH_HAS_OHCI=y 794CONFIG_USB_ARCH_HAS_OHCI=y
780CONFIG_USB_ARCH_HAS_EHCI=y 795CONFIG_USB_ARCH_HAS_EHCI=y
781# CONFIG_USB is not set 796# CONFIG_USB is not set
797# CONFIG_USB_OTG_WHITELIST is not set
798# CONFIG_USB_OTG_BLACKLIST_HUB is not set
782 799
783# 800#
784# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 801# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -787,14 +804,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
787# CONFIG_MMC is not set 804# CONFIG_MMC is not set
788# CONFIG_MEMSTICK is not set 805# CONFIG_MEMSTICK is not set
789# CONFIG_NEW_LEDS is not set 806# CONFIG_NEW_LEDS is not set
807# CONFIG_ACCESSIBILITY is not set
790# CONFIG_INFINIBAND is not set 808# CONFIG_INFINIBAND is not set
791# CONFIG_EDAC is not set 809# CONFIG_EDAC is not set
792# CONFIG_RTC_CLASS is not set 810# CONFIG_RTC_CLASS is not set
793# CONFIG_DMADEVICES is not set 811# CONFIG_DMADEVICES is not set
794
795#
796# Userspace I/O
797#
798# CONFIG_UIO is not set 812# CONFIG_UIO is not set
799 813
800# 814#
@@ -814,7 +828,6 @@ CONFIG_FS_MBCACHE=y
814# CONFIG_JFS_FS is not set 828# CONFIG_JFS_FS is not set
815# CONFIG_FS_POSIX_ACL is not set 829# CONFIG_FS_POSIX_ACL is not set
816# CONFIG_XFS_FS is not set 830# CONFIG_XFS_FS is not set
817# CONFIG_GFS2_FS is not set
818# CONFIG_OCFS2_FS is not set 831# CONFIG_OCFS2_FS is not set
819CONFIG_DNOTIFY=y 832CONFIG_DNOTIFY=y
820CONFIG_INOTIFY=y 833CONFIG_INOTIFY=y
@@ -871,7 +884,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
871CONFIG_NFS_FS=y 884CONFIG_NFS_FS=y
872# CONFIG_NFS_V3 is not set 885# CONFIG_NFS_V3 is not set
873# CONFIG_NFS_V4 is not set 886# CONFIG_NFS_V4 is not set
874# CONFIG_NFS_DIRECTIO is not set
875# CONFIG_NFSD is not set 887# CONFIG_NFSD is not set
876CONFIG_ROOT_NFS=y 888CONFIG_ROOT_NFS=y
877CONFIG_LOCKD=y 889CONFIG_LOCKD=y
@@ -914,6 +926,7 @@ CONFIG_MSDOS_PARTITION=y
914# Library routines 926# Library routines
915# 927#
916CONFIG_BITREVERSE=y 928CONFIG_BITREVERSE=y
929# CONFIG_GENERIC_FIND_FIRST_BIT is not set
917# CONFIG_CRC_CCITT is not set 930# CONFIG_CRC_CCITT is not set
918# CONFIG_CRC16 is not set 931# CONFIG_CRC16 is not set
919# CONFIG_CRC_ITU_T is not set 932# CONFIG_CRC_ITU_T is not set
@@ -924,6 +937,7 @@ CONFIG_PLIST=y
924CONFIG_HAS_IOMEM=y 937CONFIG_HAS_IOMEM=y
925CONFIG_HAS_IOPORT=y 938CONFIG_HAS_IOPORT=y
926CONFIG_HAS_DMA=y 939CONFIG_HAS_DMA=y
940CONFIG_HAVE_LMB=y
927 941
928# 942#
929# Kernel hacking 943# Kernel hacking
@@ -931,6 +945,7 @@ CONFIG_HAS_DMA=y
931# CONFIG_PRINTK_TIME is not set 945# CONFIG_PRINTK_TIME is not set
932CONFIG_ENABLE_WARN_DEPRECATED=y 946CONFIG_ENABLE_WARN_DEPRECATED=y
933CONFIG_ENABLE_MUST_CHECK=y 947CONFIG_ENABLE_MUST_CHECK=y
948CONFIG_FRAME_WARN=1024
934# CONFIG_MAGIC_SYSRQ is not set 949# CONFIG_MAGIC_SYSRQ is not set
935# CONFIG_UNUSED_SYMBOLS is not set 950# CONFIG_UNUSED_SYMBOLS is not set
936# CONFIG_DEBUG_FS is not set 951# CONFIG_DEBUG_FS is not set
@@ -940,6 +955,7 @@ CONFIG_ENABLE_MUST_CHECK=y
940# CONFIG_SLUB_STATS is not set 955# CONFIG_SLUB_STATS is not set
941# CONFIG_DEBUG_BUGVERBOSE is not set 956# CONFIG_DEBUG_BUGVERBOSE is not set
942# CONFIG_SAMPLES is not set 957# CONFIG_SAMPLES is not set
958# CONFIG_IRQSTACKS is not set
943# CONFIG_BOOTX_TEXT is not set 959# CONFIG_BOOTX_TEXT is not set
944# CONFIG_PPC_EARLY_DEBUG is not set 960# CONFIG_PPC_EARLY_DEBUG is not set
945 961
@@ -950,48 +966,78 @@ CONFIG_ENABLE_MUST_CHECK=y
950# CONFIG_SECURITY is not set 966# CONFIG_SECURITY is not set
951# CONFIG_SECURITY_FILE_CAPABILITIES is not set 967# CONFIG_SECURITY_FILE_CAPABILITIES is not set
952CONFIG_CRYPTO=y 968CONFIG_CRYPTO=y
953# CONFIG_CRYPTO_SEQIV is not set 969
970#
971# Crypto core or helper
972#
954# CONFIG_CRYPTO_MANAGER is not set 973# CONFIG_CRYPTO_MANAGER is not set
974# CONFIG_CRYPTO_GF128MUL is not set
975# CONFIG_CRYPTO_NULL is not set
976# CONFIG_CRYPTO_CRYPTD is not set
977# CONFIG_CRYPTO_AUTHENC is not set
978
979#
980# Authenticated Encryption with Associated Data
981#
982# CONFIG_CRYPTO_CCM is not set
983# CONFIG_CRYPTO_GCM is not set
984# CONFIG_CRYPTO_SEQIV is not set
985
986#
987# Block modes
988#
989# CONFIG_CRYPTO_CBC is not set
990# CONFIG_CRYPTO_CTR is not set
991# CONFIG_CRYPTO_CTS is not set
992# CONFIG_CRYPTO_ECB is not set
993# CONFIG_CRYPTO_LRW is not set
994# CONFIG_CRYPTO_PCBC is not set
995# CONFIG_CRYPTO_XTS is not set
996
997#
998# Hash modes
999#
955# CONFIG_CRYPTO_HMAC is not set 1000# CONFIG_CRYPTO_HMAC is not set
956# CONFIG_CRYPTO_XCBC is not set 1001# CONFIG_CRYPTO_XCBC is not set
957# CONFIG_CRYPTO_NULL is not set 1002
1003#
1004# Digest
1005#
1006# CONFIG_CRYPTO_CRC32C is not set
958# CONFIG_CRYPTO_MD4 is not set 1007# CONFIG_CRYPTO_MD4 is not set
959# CONFIG_CRYPTO_MD5 is not set 1008# CONFIG_CRYPTO_MD5 is not set
1009# CONFIG_CRYPTO_MICHAEL_MIC is not set
960# CONFIG_CRYPTO_SHA1 is not set 1010# CONFIG_CRYPTO_SHA1 is not set
961# CONFIG_CRYPTO_SHA256 is not set 1011# CONFIG_CRYPTO_SHA256 is not set
962# CONFIG_CRYPTO_SHA512 is not set 1012# CONFIG_CRYPTO_SHA512 is not set
963# CONFIG_CRYPTO_WP512 is not set
964# CONFIG_CRYPTO_TGR192 is not set 1013# CONFIG_CRYPTO_TGR192 is not set
965# CONFIG_CRYPTO_GF128MUL is not set 1014# CONFIG_CRYPTO_WP512 is not set
966# CONFIG_CRYPTO_ECB is not set 1015
967# CONFIG_CRYPTO_CBC is not set 1016#
968# CONFIG_CRYPTO_PCBC is not set 1017# Ciphers
969# CONFIG_CRYPTO_LRW is not set 1018#
970# CONFIG_CRYPTO_XTS is not set
971# CONFIG_CRYPTO_CTR is not set
972# CONFIG_CRYPTO_GCM is not set
973# CONFIG_CRYPTO_CCM is not set
974# CONFIG_CRYPTO_CRYPTD is not set
975# CONFIG_CRYPTO_DES is not set
976# CONFIG_CRYPTO_FCRYPT is not set
977# CONFIG_CRYPTO_BLOWFISH is not set
978# CONFIG_CRYPTO_TWOFISH is not set
979# CONFIG_CRYPTO_SERPENT is not set
980# CONFIG_CRYPTO_AES is not set 1019# CONFIG_CRYPTO_AES is not set
1020# CONFIG_CRYPTO_ANUBIS is not set
1021# CONFIG_CRYPTO_ARC4 is not set
1022# CONFIG_CRYPTO_BLOWFISH is not set
1023# CONFIG_CRYPTO_CAMELLIA is not set
981# CONFIG_CRYPTO_CAST5 is not set 1024# CONFIG_CRYPTO_CAST5 is not set
982# CONFIG_CRYPTO_CAST6 is not set 1025# CONFIG_CRYPTO_CAST6 is not set
983# CONFIG_CRYPTO_TEA is not set 1026# CONFIG_CRYPTO_DES is not set
984# CONFIG_CRYPTO_ARC4 is not set 1027# CONFIG_CRYPTO_FCRYPT is not set
985# CONFIG_CRYPTO_KHAZAD is not set 1028# CONFIG_CRYPTO_KHAZAD is not set
986# CONFIG_CRYPTO_ANUBIS is not set
987# CONFIG_CRYPTO_SEED is not set
988# CONFIG_CRYPTO_SALSA20 is not set 1029# CONFIG_CRYPTO_SALSA20 is not set
1030# CONFIG_CRYPTO_SEED is not set
1031# CONFIG_CRYPTO_SERPENT is not set
1032# CONFIG_CRYPTO_TEA is not set
1033# CONFIG_CRYPTO_TWOFISH is not set
1034
1035#
1036# Compression
1037#
989# CONFIG_CRYPTO_DEFLATE is not set 1038# CONFIG_CRYPTO_DEFLATE is not set
990# CONFIG_CRYPTO_MICHAEL_MIC is not set
991# CONFIG_CRYPTO_CRC32C is not set
992# CONFIG_CRYPTO_CAMELLIA is not set
993# CONFIG_CRYPTO_AUTHENC is not set
994# CONFIG_CRYPTO_LZO is not set 1039# CONFIG_CRYPTO_LZO is not set
995CONFIG_CRYPTO_HW=y 1040CONFIG_CRYPTO_HW=y
996# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1041# CONFIG_CRYPTO_DEV_HIFN_795X is not set
997# CONFIG_PPC_CLOCK is not set 1042# CONFIG_PPC_CLOCK is not set
1043# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/mpc8272_ads_defconfig b/arch/powerpc/configs/mpc8272_ads_defconfig
index 0264c5757f78..30d7834b7db1 100644
--- a/arch/powerpc/configs/mpc8272_ads_defconfig
+++ b/arch/powerpc/configs/mpc8272_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:13 2008 4# Mon Jun 9 08:52:12 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -30,6 +30,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
32CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y
33CONFIG_RWSEM_XCHGADD_ALGORITHM=y 35CONFIG_RWSEM_XCHGADD_ALGORITHM=y
34CONFIG_ARCH_HAS_ILOG2_U32=y 36CONFIG_ARCH_HAS_ILOG2_U32=y
35CONFIG_GENERIC_HWEIGHT=y 37CONFIG_GENERIC_HWEIGHT=y
@@ -70,18 +72,16 @@ CONFIG_IKCONFIG=y
70CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
71CONFIG_LOG_BUF_SHIFT=14 73CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set 74# CONFIG_CGROUPS is not set
73CONFIG_GROUP_SCHED=y
74# CONFIG_FAIR_GROUP_SCHED is not set
75CONFIG_USER_SCHED=y
76# CONFIG_CGROUP_SCHED is not set
77CONFIG_SYSFS_DEPRECATED=y 75CONFIG_SYSFS_DEPRECATED=y
78CONFIG_SYSFS_DEPRECATED_V2=y 76CONFIG_SYSFS_DEPRECATED_V2=y
79# CONFIG_RELAY is not set 77# CONFIG_RELAY is not set
80# CONFIG_NAMESPACES is not set 78# CONFIG_NAMESPACES is not set
81# CONFIG_BLK_DEV_INITRD is not set 79# CONFIG_BLK_DEV_INITRD is not set
80CONFIG_CC_OPTIMIZE_FOR_SIZE=y
82CONFIG_SYSCTL=y 81CONFIG_SYSCTL=y
83CONFIG_EMBEDDED=y 82CONFIG_EMBEDDED=y
84CONFIG_SYSCTL_SYSCALL=y 83CONFIG_SYSCTL_SYSCALL=y
84CONFIG_SYSCTL_SYSCALL_CHECK=y
85CONFIG_KALLSYMS=y 85CONFIG_KALLSYMS=y
86CONFIG_KALLSYMS_ALL=y 86CONFIG_KALLSYMS_ALL=y
87# CONFIG_KALLSYMS_EXTRA_PASS is not set 87# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -108,6 +108,7 @@ CONFIG_SLUB=y
108CONFIG_HAVE_OPROFILE=y 108CONFIG_HAVE_OPROFILE=y
109CONFIG_HAVE_KPROBES=y 109CONFIG_HAVE_KPROBES=y
110CONFIG_HAVE_KRETPROBES=y 110CONFIG_HAVE_KRETPROBES=y
111# CONFIG_HAVE_DMA_ATTRS is not set
111CONFIG_PROC_PAGE_MONITOR=y 112CONFIG_PROC_PAGE_MONITOR=y
112CONFIG_SLABINFO=y 113CONFIG_SLABINFO=y
113CONFIG_RT_MUTEXES=y 114CONFIG_RT_MUTEXES=y
@@ -196,11 +197,13 @@ CONFIG_FLATMEM=y
196CONFIG_FLAT_NODE_MEM_MAP=y 197CONFIG_FLAT_NODE_MEM_MAP=y
197# CONFIG_SPARSEMEM_STATIC is not set 198# CONFIG_SPARSEMEM_STATIC is not set
198# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 199# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
200CONFIG_PAGEFLAGS_EXTENDED=y
199CONFIG_SPLIT_PTLOCK_CPUS=4 201CONFIG_SPLIT_PTLOCK_CPUS=4
200# CONFIG_RESOURCES_64BIT is not set 202# CONFIG_RESOURCES_64BIT is not set
201CONFIG_ZONE_DMA_FLAG=1 203CONFIG_ZONE_DMA_FLAG=1
202CONFIG_BOUNCE=y 204CONFIG_BOUNCE=y
203CONFIG_VIRT_TO_BUS=y 205CONFIG_VIRT_TO_BUS=y
206CONFIG_FORCE_MAX_ZONEORDER=11
204CONFIG_PROC_DEVICETREE=y 207CONFIG_PROC_DEVICETREE=y
205# CONFIG_CMDLINE_BOOL is not set 208# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set 209# CONFIG_PM is not set
@@ -224,6 +227,7 @@ CONFIG_PCI_LEGACY=y
224# CONFIG_PCI_DEBUG is not set 227# CONFIG_PCI_DEBUG is not set
225# CONFIG_PCCARD is not set 228# CONFIG_PCCARD is not set
226# CONFIG_HOTPLUG_PCI is not set 229# CONFIG_HOTPLUG_PCI is not set
230# CONFIG_HAS_RAPIDIO is not set
227 231
228# 232#
229# Advanced setup 233# Advanced setup
@@ -233,11 +237,11 @@ CONFIG_PCI_LEGACY=y
233# 237#
234# Default settings for advanced configuration options are used 238# Default settings for advanced configuration options are used
235# 239#
236CONFIG_HIGHMEM_START=0xfe000000
237CONFIG_LOWMEM_SIZE=0x30000000 240CONFIG_LOWMEM_SIZE=0x30000000
241CONFIG_PAGE_OFFSET=0xc0000000
238CONFIG_KERNEL_START=0xc0000000 242CONFIG_KERNEL_START=0xc0000000
243CONFIG_PHYSICAL_START=0x00000000
239CONFIG_TASK_SIZE=0xc0000000 244CONFIG_TASK_SIZE=0xc0000000
240CONFIG_BOOT_LOAD=0x00400000
241 245
242# 246#
243# Networking 247# Networking
@@ -292,6 +296,7 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=y
292CONFIG_INET6_XFRM_MODE_TUNNEL=y 296CONFIG_INET6_XFRM_MODE_TUNNEL=y
293CONFIG_INET6_XFRM_MODE_BEET=y 297CONFIG_INET6_XFRM_MODE_BEET=y
294CONFIG_IPV6_SIT=y 298CONFIG_IPV6_SIT=y
299CONFIG_IPV6_NDISC_NODETYPE=y
295# CONFIG_IPV6_TUNNEL is not set 300# CONFIG_IPV6_TUNNEL is not set
296# CONFIG_NETWORK_SECMARK is not set 301# CONFIG_NETWORK_SECMARK is not set
297CONFIG_NETFILTER=y 302CONFIG_NETFILTER=y
@@ -536,7 +541,6 @@ CONFIG_NETDEV_1000=y
536# CONFIG_SIS190 is not set 541# CONFIG_SIS190 is not set
537# CONFIG_SKGE is not set 542# CONFIG_SKGE is not set
538# CONFIG_SKY2 is not set 543# CONFIG_SKY2 is not set
539# CONFIG_SK98LIN is not set
540# CONFIG_VIA_VELOCITY is not set 544# CONFIG_VIA_VELOCITY is not set
541# CONFIG_TIGON3 is not set 545# CONFIG_TIGON3 is not set
542# CONFIG_BNX2 is not set 546# CONFIG_BNX2 is not set
@@ -554,6 +558,7 @@ CONFIG_NETDEV_10000=y
554# CONFIG_MLX4_CORE is not set 558# CONFIG_MLX4_CORE is not set
555# CONFIG_TEHUTI is not set 559# CONFIG_TEHUTI is not set
556# CONFIG_BNX2X is not set 560# CONFIG_BNX2X is not set
561# CONFIG_SFC is not set
557# CONFIG_TR is not set 562# CONFIG_TR is not set
558 563
559# 564#
@@ -561,6 +566,7 @@ CONFIG_NETDEV_10000=y
561# 566#
562# CONFIG_WLAN_PRE80211 is not set 567# CONFIG_WLAN_PRE80211 is not set
563# CONFIG_WLAN_80211 is not set 568# CONFIG_WLAN_80211 is not set
569# CONFIG_IWLWIFI_LEDS is not set
564# CONFIG_WAN is not set 570# CONFIG_WAN is not set
565# CONFIG_FDDI is not set 571# CONFIG_FDDI is not set
566CONFIG_PPP=y 572CONFIG_PPP=y
@@ -634,6 +640,7 @@ CONFIG_SERIO_LIBPS2=y
634# Character devices 640# Character devices
635# 641#
636# CONFIG_VT is not set 642# CONFIG_VT is not set
643CONFIG_DEVKMEM=y
637# CONFIG_SERIAL_NONSTANDARD is not set 644# CONFIG_SERIAL_NONSTANDARD is not set
638 645
639# 646#
@@ -668,12 +675,7 @@ CONFIG_HW_RANDOM=y
668# CONFIG_RAW_DRIVER is not set 675# CONFIG_RAW_DRIVER is not set
669CONFIG_DEVPORT=y 676CONFIG_DEVPORT=y
670# CONFIG_I2C is not set 677# CONFIG_I2C is not set
671
672#
673# SPI support
674#
675# CONFIG_SPI is not set 678# CONFIG_SPI is not set
676# CONFIG_SPI_MASTER is not set
677# CONFIG_W1 is not set 679# CONFIG_W1 is not set
678# CONFIG_POWER_SUPPLY is not set 680# CONFIG_POWER_SUPPLY is not set
679# CONFIG_HWMON is not set 681# CONFIG_HWMON is not set
@@ -690,12 +692,22 @@ CONFIG_SSB_POSSIBLE=y
690# Multifunction device drivers 692# Multifunction device drivers
691# 693#
692# CONFIG_MFD_SM501 is not set 694# CONFIG_MFD_SM501 is not set
695# CONFIG_HTC_PASIC3 is not set
693 696
694# 697#
695# Multimedia devices 698# Multimedia devices
696# 699#
700
701#
702# Multimedia core support
703#
697# CONFIG_VIDEO_DEV is not set 704# CONFIG_VIDEO_DEV is not set
698# CONFIG_DVB_CORE is not set 705# CONFIG_DVB_CORE is not set
706# CONFIG_VIDEO_MEDIA is not set
707
708#
709# Multimedia drivers
710#
699CONFIG_DAB=y 711CONFIG_DAB=y
700 712
701# 713#
@@ -722,13 +734,10 @@ CONFIG_DAB=y
722# CONFIG_MMC is not set 734# CONFIG_MMC is not set
723# CONFIG_MEMSTICK is not set 735# CONFIG_MEMSTICK is not set
724# CONFIG_NEW_LEDS is not set 736# CONFIG_NEW_LEDS is not set
737# CONFIG_ACCESSIBILITY is not set
725# CONFIG_INFINIBAND is not set 738# CONFIG_INFINIBAND is not set
726# CONFIG_RTC_CLASS is not set 739# CONFIG_RTC_CLASS is not set
727# CONFIG_DMADEVICES is not set 740# CONFIG_DMADEVICES is not set
728
729#
730# Userspace I/O
731#
732# CONFIG_UIO is not set 741# CONFIG_UIO is not set
733 742
734# 743#
@@ -798,7 +807,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
798CONFIG_NFS_FS=y 807CONFIG_NFS_FS=y
799CONFIG_NFS_V3=y 808CONFIG_NFS_V3=y
800CONFIG_NFS_V3_ACL=y 809CONFIG_NFS_V3_ACL=y
801# CONFIG_NFS_DIRECTIO is not set
802# CONFIG_NFSD is not set 810# CONFIG_NFSD is not set
803CONFIG_ROOT_NFS=y 811CONFIG_ROOT_NFS=y
804CONFIG_LOCKD=y 812CONFIG_LOCKD=y
@@ -877,6 +885,7 @@ CONFIG_NLS_UTF8=y
877# Library routines 885# Library routines
878# 886#
879CONFIG_BITREVERSE=y 887CONFIG_BITREVERSE=y
888# CONFIG_GENERIC_FIND_FIRST_BIT is not set
880CONFIG_CRC_CCITT=y 889CONFIG_CRC_CCITT=y
881# CONFIG_CRC16 is not set 890# CONFIG_CRC16 is not set
882# CONFIG_CRC_ITU_T is not set 891# CONFIG_CRC_ITU_T is not set
@@ -889,6 +898,7 @@ CONFIG_PLIST=y
889CONFIG_HAS_IOMEM=y 898CONFIG_HAS_IOMEM=y
890CONFIG_HAS_IOPORT=y 899CONFIG_HAS_IOPORT=y
891CONFIG_HAS_DMA=y 900CONFIG_HAS_DMA=y
901CONFIG_HAVE_LMB=y
892 902
893# 903#
894# Kernel hacking 904# Kernel hacking
@@ -896,6 +906,7 @@ CONFIG_HAS_DMA=y
896# CONFIG_PRINTK_TIME is not set 906# CONFIG_PRINTK_TIME is not set
897CONFIG_ENABLE_WARN_DEPRECATED=y 907CONFIG_ENABLE_WARN_DEPRECATED=y
898CONFIG_ENABLE_MUST_CHECK=y 908CONFIG_ENABLE_MUST_CHECK=y
909CONFIG_FRAME_WARN=1024
899CONFIG_MAGIC_SYSRQ=y 910CONFIG_MAGIC_SYSRQ=y
900# CONFIG_UNUSED_SYMBOLS is not set 911# CONFIG_UNUSED_SYMBOLS is not set
901# CONFIG_DEBUG_FS is not set 912# CONFIG_DEBUG_FS is not set
@@ -906,6 +917,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
906CONFIG_SCHED_DEBUG=y 917CONFIG_SCHED_DEBUG=y
907# CONFIG_SCHEDSTATS is not set 918# CONFIG_SCHEDSTATS is not set
908# CONFIG_TIMER_STATS is not set 919# CONFIG_TIMER_STATS is not set
920# CONFIG_DEBUG_OBJECTS is not set
909# CONFIG_SLUB_DEBUG_ON is not set 921# CONFIG_SLUB_DEBUG_ON is not set
910# CONFIG_SLUB_STATS is not set 922# CONFIG_SLUB_STATS is not set
911# CONFIG_DEBUG_RT_MUTEXES is not set 923# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -918,6 +930,7 @@ CONFIG_SCHED_DEBUG=y
918CONFIG_DEBUG_BUGVERBOSE=y 930CONFIG_DEBUG_BUGVERBOSE=y
919CONFIG_DEBUG_INFO=y 931CONFIG_DEBUG_INFO=y
920# CONFIG_DEBUG_VM is not set 932# CONFIG_DEBUG_VM is not set
933# CONFIG_DEBUG_WRITECOUNT is not set
921# CONFIG_DEBUG_LIST is not set 934# CONFIG_DEBUG_LIST is not set
922# CONFIG_DEBUG_SG is not set 935# CONFIG_DEBUG_SG is not set
923# CONFIG_BOOT_PRINTK_DELAY is not set 936# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -929,6 +942,7 @@ CONFIG_DEBUG_INFO=y
929# CONFIG_DEBUG_PAGEALLOC is not set 942# CONFIG_DEBUG_PAGEALLOC is not set
930# CONFIG_DEBUGGER is not set 943# CONFIG_DEBUGGER is not set
931# CONFIG_KGDB_CONSOLE is not set 944# CONFIG_KGDB_CONSOLE is not set
945# CONFIG_IRQSTACKS is not set
932CONFIG_BDI_SWITCH=y 946CONFIG_BDI_SWITCH=y
933# CONFIG_PPC_EARLY_DEBUG is not set 947# CONFIG_PPC_EARLY_DEBUG is not set
934 948
@@ -938,45 +952,75 @@ CONFIG_BDI_SWITCH=y
938# CONFIG_KEYS is not set 952# CONFIG_KEYS is not set
939# CONFIG_SECURITY is not set 953# CONFIG_SECURITY is not set
940CONFIG_CRYPTO=y 954CONFIG_CRYPTO=y
955
956#
957# Crypto core or helper
958#
941CONFIG_CRYPTO_ALGAPI=y 959CONFIG_CRYPTO_ALGAPI=y
942CONFIG_CRYPTO_BLKCIPHER=y 960CONFIG_CRYPTO_BLKCIPHER=y
943# CONFIG_CRYPTO_SEQIV is not set
944CONFIG_CRYPTO_MANAGER=y 961CONFIG_CRYPTO_MANAGER=y
945# CONFIG_CRYPTO_HMAC is not set
946# CONFIG_CRYPTO_NULL is not set 962# CONFIG_CRYPTO_NULL is not set
963# CONFIG_CRYPTO_CRYPTD is not set
964# CONFIG_CRYPTO_AUTHENC is not set
965
966#
967# Authenticated Encryption with Associated Data
968#
969# CONFIG_CRYPTO_CCM is not set
970# CONFIG_CRYPTO_GCM is not set
971# CONFIG_CRYPTO_SEQIV is not set
972
973#
974# Block modes
975#
976CONFIG_CRYPTO_CBC=y
977# CONFIG_CRYPTO_CTR is not set
978# CONFIG_CRYPTO_CTS is not set
979CONFIG_CRYPTO_ECB=y
980CONFIG_CRYPTO_PCBC=y
981
982#
983# Hash modes
984#
985# CONFIG_CRYPTO_HMAC is not set
986
987#
988# Digest
989#
990# CONFIG_CRYPTO_CRC32C is not set
947# CONFIG_CRYPTO_MD4 is not set 991# CONFIG_CRYPTO_MD4 is not set
948CONFIG_CRYPTO_MD5=y 992CONFIG_CRYPTO_MD5=y
993# CONFIG_CRYPTO_MICHAEL_MIC is not set
949# CONFIG_CRYPTO_SHA1 is not set 994# CONFIG_CRYPTO_SHA1 is not set
950# CONFIG_CRYPTO_SHA256 is not set 995# CONFIG_CRYPTO_SHA256 is not set
951# CONFIG_CRYPTO_SHA512 is not set 996# CONFIG_CRYPTO_SHA512 is not set
952# CONFIG_CRYPTO_WP512 is not set
953# CONFIG_CRYPTO_TGR192 is not set 997# CONFIG_CRYPTO_TGR192 is not set
954CONFIG_CRYPTO_ECB=y 998# CONFIG_CRYPTO_WP512 is not set
955CONFIG_CRYPTO_CBC=y 999
956CONFIG_CRYPTO_PCBC=y 1000#
957# CONFIG_CRYPTO_CTR is not set 1001# Ciphers
958# CONFIG_CRYPTO_GCM is not set 1002#
959# CONFIG_CRYPTO_CCM is not set
960# CONFIG_CRYPTO_CRYPTD is not set
961CONFIG_CRYPTO_DES=y
962# CONFIG_CRYPTO_FCRYPT is not set
963# CONFIG_CRYPTO_BLOWFISH is not set
964# CONFIG_CRYPTO_TWOFISH is not set
965# CONFIG_CRYPTO_SERPENT is not set
966# CONFIG_CRYPTO_AES is not set 1003# CONFIG_CRYPTO_AES is not set
1004# CONFIG_CRYPTO_ANUBIS is not set
1005# CONFIG_CRYPTO_ARC4 is not set
1006# CONFIG_CRYPTO_BLOWFISH is not set
1007# CONFIG_CRYPTO_CAMELLIA is not set
967# CONFIG_CRYPTO_CAST5 is not set 1008# CONFIG_CRYPTO_CAST5 is not set
968# CONFIG_CRYPTO_CAST6 is not set 1009# CONFIG_CRYPTO_CAST6 is not set
969# CONFIG_CRYPTO_TEA is not set 1010CONFIG_CRYPTO_DES=y
970# CONFIG_CRYPTO_ARC4 is not set 1011# CONFIG_CRYPTO_FCRYPT is not set
971# CONFIG_CRYPTO_KHAZAD is not set 1012# CONFIG_CRYPTO_KHAZAD is not set
972# CONFIG_CRYPTO_ANUBIS is not set
973# CONFIG_CRYPTO_SEED is not set 1013# CONFIG_CRYPTO_SEED is not set
1014# CONFIG_CRYPTO_SERPENT is not set
1015# CONFIG_CRYPTO_TEA is not set
1016# CONFIG_CRYPTO_TWOFISH is not set
1017
1018#
1019# Compression
1020#
974# CONFIG_CRYPTO_DEFLATE is not set 1021# CONFIG_CRYPTO_DEFLATE is not set
975# CONFIG_CRYPTO_MICHAEL_MIC is not set
976# CONFIG_CRYPTO_CRC32C is not set
977# CONFIG_CRYPTO_CAMELLIA is not set
978# CONFIG_CRYPTO_AUTHENC is not set
979# CONFIG_CRYPTO_LZO is not set 1022# CONFIG_CRYPTO_LZO is not set
980# CONFIG_CRYPTO_HW is not set 1023# CONFIG_CRYPTO_HW is not set
981# CONFIG_PPC_CLOCK is not set 1024# CONFIG_PPC_CLOCK is not set
982CONFIG_PPC_LIB_RHEAP=y 1025CONFIG_PPC_LIB_RHEAP=y
1026# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/mpc83xx_defconfig b/arch/powerpc/configs/mpc83xx_defconfig
index 9e0dd8201691..4293c8be06e1 100644
--- a/arch/powerpc/configs/mpc83xx_defconfig
+++ b/arch/powerpc/configs/mpc83xx_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc9 3# Linux kernel version: 2.6.26-rc5
4# Tue Apr 15 18:07:36 2008 4# Mon Jun 9 08:52:14 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -86,6 +88,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 88CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 89CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 90CONFIG_SYSCTL_SYSCALL=y
91CONFIG_SYSCTL_SYSCALL_CHECK=y
89CONFIG_KALLSYMS=y 92CONFIG_KALLSYMS=y
90# CONFIG_KALLSYMS_EXTRA_PASS is not set 93# CONFIG_KALLSYMS_EXTRA_PASS is not set
91CONFIG_HOTPLUG=y 94CONFIG_HOTPLUG=y
@@ -111,12 +114,14 @@ CONFIG_HAVE_OPROFILE=y
111# CONFIG_KPROBES is not set 114# CONFIG_KPROBES is not set
112CONFIG_HAVE_KPROBES=y 115CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
114CONFIG_PROC_PAGE_MONITOR=y 118CONFIG_PROC_PAGE_MONITOR=y
115CONFIG_SLABINFO=y 119CONFIG_SLABINFO=y
116CONFIG_RT_MUTEXES=y 120CONFIG_RT_MUTEXES=y
117# CONFIG_TINY_SHMEM is not set 121# CONFIG_TINY_SHMEM is not set
118CONFIG_BASE_SMALL=0 122CONFIG_BASE_SMALL=0
119CONFIG_MODULES=y 123CONFIG_MODULES=y
124# CONFIG_MODULE_FORCE_LOAD is not set
120CONFIG_MODULE_UNLOAD=y 125CONFIG_MODULE_UNLOAD=y
121# CONFIG_MODULE_FORCE_UNLOAD is not set 126# CONFIG_MODULE_FORCE_UNLOAD is not set
122# CONFIG_MODVERSIONS is not set 127# CONFIG_MODVERSIONS is not set
@@ -201,7 +206,6 @@ CONFIG_PREEMPT_NONE=y
201# CONFIG_PREEMPT is not set 206# CONFIG_PREEMPT is not set
202CONFIG_BINFMT_ELF=y 207CONFIG_BINFMT_ELF=y
203# CONFIG_BINFMT_MISC is not set 208# CONFIG_BINFMT_MISC is not set
204CONFIG_FORCE_MAX_ZONEORDER=11
205CONFIG_MATH_EMULATION=y 209CONFIG_MATH_EMULATION=y
206# CONFIG_IOMMU_HELPER is not set 210# CONFIG_IOMMU_HELPER is not set
207CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 211CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
@@ -217,11 +221,13 @@ CONFIG_FLATMEM=y
217CONFIG_FLAT_NODE_MEM_MAP=y 221CONFIG_FLAT_NODE_MEM_MAP=y
218# CONFIG_SPARSEMEM_STATIC is not set 222# CONFIG_SPARSEMEM_STATIC is not set
219# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 223# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
224CONFIG_PAGEFLAGS_EXTENDED=y
220CONFIG_SPLIT_PTLOCK_CPUS=4 225CONFIG_SPLIT_PTLOCK_CPUS=4
221# CONFIG_RESOURCES_64BIT is not set 226# CONFIG_RESOURCES_64BIT is not set
222CONFIG_ZONE_DMA_FLAG=1 227CONFIG_ZONE_DMA_FLAG=1
223CONFIG_BOUNCE=y 228CONFIG_BOUNCE=y
224CONFIG_VIRT_TO_BUS=y 229CONFIG_VIRT_TO_BUS=y
230CONFIG_FORCE_MAX_ZONEORDER=11
225CONFIG_PROC_DEVICETREE=y 231CONFIG_PROC_DEVICETREE=y
226# CONFIG_CMDLINE_BOOL is not set 232# CONFIG_CMDLINE_BOOL is not set
227# CONFIG_PM is not set 233# CONFIG_PM is not set
@@ -240,6 +246,7 @@ CONFIG_FSL_SOC=y
240# CONFIG_PCI_SYSCALL is not set 246# CONFIG_PCI_SYSCALL is not set
241# CONFIG_ARCH_SUPPORTS_MSI is not set 247# CONFIG_ARCH_SUPPORTS_MSI is not set
242# CONFIG_PCCARD is not set 248# CONFIG_PCCARD is not set
249# CONFIG_HAS_RAPIDIO is not set
243 250
244# 251#
245# Advanced setup 252# Advanced setup
@@ -249,11 +256,11 @@ CONFIG_FSL_SOC=y
249# 256#
250# Default settings for advanced configuration options are used 257# Default settings for advanced configuration options are used
251# 258#
252CONFIG_HIGHMEM_START=0xfe000000
253CONFIG_LOWMEM_SIZE=0x30000000 259CONFIG_LOWMEM_SIZE=0x30000000
260CONFIG_PAGE_OFFSET=0xc0000000
254CONFIG_KERNEL_START=0xc0000000 261CONFIG_KERNEL_START=0xc0000000
262CONFIG_PHYSICAL_START=0x00000000
255CONFIG_TASK_SIZE=0xc0000000 263CONFIG_TASK_SIZE=0xc0000000
256CONFIG_BOOT_LOAD=0x00800000
257 264
258# 265#
259# Networking 266# Networking
@@ -301,8 +308,6 @@ CONFIG_TCP_CONG_CUBIC=y
301CONFIG_DEFAULT_TCP_CONG="cubic" 308CONFIG_DEFAULT_TCP_CONG="cubic"
302# CONFIG_TCP_MD5SIG is not set 309# CONFIG_TCP_MD5SIG is not set
303# CONFIG_IPV6 is not set 310# CONFIG_IPV6 is not set
304# CONFIG_INET6_XFRM_TUNNEL is not set
305# CONFIG_INET6_TUNNEL is not set
306# CONFIG_NETWORK_SECMARK is not set 311# CONFIG_NETWORK_SECMARK is not set
307# CONFIG_NETFILTER is not set 312# CONFIG_NETFILTER is not set
308# CONFIG_IP_DCCP is not set 313# CONFIG_IP_DCCP is not set
@@ -361,6 +366,7 @@ CONFIG_MTD_PARTITIONS=y
361# CONFIG_MTD_REDBOOT_PARTS is not set 366# CONFIG_MTD_REDBOOT_PARTS is not set
362# CONFIG_MTD_CMDLINE_PARTS is not set 367# CONFIG_MTD_CMDLINE_PARTS is not set
363CONFIG_MTD_OF_PARTS=y 368CONFIG_MTD_OF_PARTS=y
369# CONFIG_MTD_AR7_PARTS is not set
364 370
365# 371#
366# User Modules And Translation Layers 372# User Modules And Translation Layers
@@ -439,6 +445,7 @@ CONFIG_MTD_NAND_FSL_ELBC=y
439# 445#
440# CONFIG_MTD_UBI is not set 446# CONFIG_MTD_UBI is not set
441CONFIG_OF_DEVICE=y 447CONFIG_OF_DEVICE=y
448CONFIG_OF_I2C=y
442# CONFIG_PARPORT is not set 449# CONFIG_PARPORT is not set
443CONFIG_BLK_DEV=y 450CONFIG_BLK_DEV=y
444# CONFIG_BLK_DEV_FD is not set 451# CONFIG_BLK_DEV_FD is not set
@@ -501,8 +508,10 @@ CONFIG_SCSI_LOWLEVEL=y
501# CONFIG_SCSI_DEBUG is not set 508# CONFIG_SCSI_DEBUG is not set
502CONFIG_ATA=y 509CONFIG_ATA=y
503# CONFIG_ATA_NONSTANDARD is not set 510# CONFIG_ATA_NONSTANDARD is not set
504# CONFIG_SATA_MV is not set 511CONFIG_SATA_PMP=y
505CONFIG_SATA_FSL=y 512CONFIG_SATA_FSL=y
513CONFIG_ATA_SFF=y
514# CONFIG_SATA_MV is not set
506# CONFIG_PATA_PLATFORM is not set 515# CONFIG_PATA_PLATFORM is not set
507# CONFIG_MD is not set 516# CONFIG_MD is not set
508# CONFIG_MACINTOSH_DRIVERS is not set 517# CONFIG_MACINTOSH_DRIVERS is not set
@@ -554,6 +563,7 @@ CONFIG_NETDEV_10000=y
554# 563#
555# CONFIG_WLAN_PRE80211 is not set 564# CONFIG_WLAN_PRE80211 is not set
556# CONFIG_WLAN_80211 is not set 565# CONFIG_WLAN_80211 is not set
566# CONFIG_IWLWIFI_LEDS is not set
557 567
558# 568#
559# USB Network Adapters 569# USB Network Adapters
@@ -607,6 +617,7 @@ CONFIG_INPUT=y
607# Character devices 617# Character devices
608# 618#
609# CONFIG_VT is not set 619# CONFIG_VT is not set
620CONFIG_DEVKMEM=y
610# CONFIG_SERIAL_NONSTANDARD is not set 621# CONFIG_SERIAL_NONSTANDARD is not set
611 622
612# 623#
@@ -642,13 +653,6 @@ CONFIG_I2C_BOARDINFO=y
642CONFIG_I2C_CHARDEV=y 653CONFIG_I2C_CHARDEV=y
643 654
644# 655#
645# I2C Algorithms
646#
647# CONFIG_I2C_ALGOBIT is not set
648# CONFIG_I2C_ALGOPCF is not set
649# CONFIG_I2C_ALGOPCA is not set
650
651#
652# I2C Hardware Bus support 656# I2C Hardware Bus support
653# 657#
654CONFIG_I2C_MPC=y 658CONFIG_I2C_MPC=y
@@ -658,6 +662,7 @@ CONFIG_I2C_MPC=y
658# CONFIG_I2C_TAOS_EVM is not set 662# CONFIG_I2C_TAOS_EVM is not set
659# CONFIG_I2C_STUB is not set 663# CONFIG_I2C_STUB is not set
660# CONFIG_I2C_TINY_USB is not set 664# CONFIG_I2C_TINY_USB is not set
665# CONFIG_I2C_PCA_PLATFORM is not set
661 666
662# 667#
663# Miscellaneous I2C Chip support 668# Miscellaneous I2C Chip support
@@ -667,19 +672,13 @@ CONFIG_I2C_MPC=y
667# CONFIG_SENSORS_PCF8574 is not set 672# CONFIG_SENSORS_PCF8574 is not set
668# CONFIG_PCF8575 is not set 673# CONFIG_PCF8575 is not set
669# CONFIG_SENSORS_PCF8591 is not set 674# CONFIG_SENSORS_PCF8591 is not set
670# CONFIG_TPS65010 is not set
671# CONFIG_SENSORS_MAX6875 is not set 675# CONFIG_SENSORS_MAX6875 is not set
672# CONFIG_SENSORS_TSL2550 is not set 676# CONFIG_SENSORS_TSL2550 is not set
673# CONFIG_I2C_DEBUG_CORE is not set 677# CONFIG_I2C_DEBUG_CORE is not set
674# CONFIG_I2C_DEBUG_ALGO is not set 678# CONFIG_I2C_DEBUG_ALGO is not set
675# CONFIG_I2C_DEBUG_BUS is not set 679# CONFIG_I2C_DEBUG_BUS is not set
676# CONFIG_I2C_DEBUG_CHIP is not set 680# CONFIG_I2C_DEBUG_CHIP is not set
677
678#
679# SPI support
680#
681# CONFIG_SPI is not set 681# CONFIG_SPI is not set
682# CONFIG_SPI_MASTER is not set
683# CONFIG_W1 is not set 682# CONFIG_W1 is not set
684# CONFIG_POWER_SUPPLY is not set 683# CONFIG_POWER_SUPPLY is not set
685CONFIG_HWMON=y 684CONFIG_HWMON=y
@@ -757,12 +756,22 @@ CONFIG_SSB_POSSIBLE=y
757# Multifunction device drivers 756# Multifunction device drivers
758# 757#
759# CONFIG_MFD_SM501 is not set 758# CONFIG_MFD_SM501 is not set
759# CONFIG_HTC_PASIC3 is not set
760 760
761# 761#
762# Multimedia devices 762# Multimedia devices
763# 763#
764
765#
766# Multimedia core support
767#
764# CONFIG_VIDEO_DEV is not set 768# CONFIG_VIDEO_DEV is not set
765# CONFIG_DVB_CORE is not set 769# CONFIG_DVB_CORE is not set
770# CONFIG_VIDEO_MEDIA is not set
771
772#
773# Multimedia drivers
774#
766CONFIG_DAB=y 775CONFIG_DAB=y
767# CONFIG_USB_DABUSB is not set 776# CONFIG_USB_DABUSB is not set
768 777
@@ -810,16 +819,20 @@ CONFIG_USB=y
810CONFIG_USB_DEVICE_CLASS=y 819CONFIG_USB_DEVICE_CLASS=y
811# CONFIG_USB_DYNAMIC_MINORS is not set 820# CONFIG_USB_DYNAMIC_MINORS is not set
812# CONFIG_USB_OTG is not set 821# CONFIG_USB_OTG is not set
822# CONFIG_USB_OTG_WHITELIST is not set
823# CONFIG_USB_OTG_BLACKLIST_HUB is not set
813 824
814# 825#
815# USB Host Controller Drivers 826# USB Host Controller Drivers
816# 827#
828# CONFIG_USB_C67X00_HCD is not set
817CONFIG_USB_EHCI_HCD=y 829CONFIG_USB_EHCI_HCD=y
818CONFIG_USB_EHCI_ROOT_HUB_TT=y 830CONFIG_USB_EHCI_ROOT_HUB_TT=y
819# CONFIG_USB_EHCI_TT_NEWSCHED is not set 831# CONFIG_USB_EHCI_TT_NEWSCHED is not set
820CONFIG_USB_EHCI_FSL=y 832CONFIG_USB_EHCI_FSL=y
821CONFIG_USB_EHCI_HCD_PPC_OF=y 833CONFIG_USB_EHCI_HCD_PPC_OF=y
822# CONFIG_USB_ISP116X_HCD is not set 834# CONFIG_USB_ISP116X_HCD is not set
835# CONFIG_USB_ISP1760_HCD is not set
823# CONFIG_USB_SL811_HCD is not set 836# CONFIG_USB_SL811_HCD is not set
824# CONFIG_USB_R8A66597_HCD is not set 837# CONFIG_USB_R8A66597_HCD is not set
825 838
@@ -828,6 +841,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
828# 841#
829# CONFIG_USB_ACM is not set 842# CONFIG_USB_ACM is not set
830# CONFIG_USB_PRINTER is not set 843# CONFIG_USB_PRINTER is not set
844# CONFIG_USB_WDM is not set
831 845
832# 846#
833# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 847# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -873,17 +887,15 @@ CONFIG_USB_MON=y
873# CONFIG_USB_LD is not set 887# CONFIG_USB_LD is not set
874# CONFIG_USB_TRANCEVIBRATOR is not set 888# CONFIG_USB_TRANCEVIBRATOR is not set
875# CONFIG_USB_IOWARRIOR is not set 889# CONFIG_USB_IOWARRIOR is not set
890# CONFIG_USB_ISIGHTFW is not set
876# CONFIG_USB_GADGET is not set 891# CONFIG_USB_GADGET is not set
877# CONFIG_MMC is not set 892# CONFIG_MMC is not set
878# CONFIG_MEMSTICK is not set 893# CONFIG_MEMSTICK is not set
879# CONFIG_NEW_LEDS is not set 894# CONFIG_NEW_LEDS is not set
895# CONFIG_ACCESSIBILITY is not set
880# CONFIG_EDAC is not set 896# CONFIG_EDAC is not set
881# CONFIG_RTC_CLASS is not set 897# CONFIG_RTC_CLASS is not set
882# CONFIG_DMADEVICES is not set 898# CONFIG_DMADEVICES is not set
883
884#
885# Userspace I/O
886#
887# CONFIG_UIO is not set 899# CONFIG_UIO is not set
888 900
889# 901#
@@ -903,7 +915,6 @@ CONFIG_FS_MBCACHE=y
903# CONFIG_JFS_FS is not set 915# CONFIG_JFS_FS is not set
904# CONFIG_FS_POSIX_ACL is not set 916# CONFIG_FS_POSIX_ACL is not set
905# CONFIG_XFS_FS is not set 917# CONFIG_XFS_FS is not set
906# CONFIG_GFS2_FS is not set
907# CONFIG_OCFS2_FS is not set 918# CONFIG_OCFS2_FS is not set
908CONFIG_DNOTIFY=y 919CONFIG_DNOTIFY=y
909CONFIG_INOTIFY=y 920CONFIG_INOTIFY=y
@@ -962,7 +973,6 @@ CONFIG_NFS_FS=y
962CONFIG_NFS_V3=y 973CONFIG_NFS_V3=y
963# CONFIG_NFS_V3_ACL is not set 974# CONFIG_NFS_V3_ACL is not set
964CONFIG_NFS_V4=y 975CONFIG_NFS_V4=y
965# CONFIG_NFS_DIRECTIO is not set
966# CONFIG_NFSD is not set 976# CONFIG_NFSD is not set
967CONFIG_ROOT_NFS=y 977CONFIG_ROOT_NFS=y
968CONFIG_LOCKD=y 978CONFIG_LOCKD=y
@@ -1009,6 +1019,7 @@ CONFIG_UCC=y
1009# Library routines 1019# Library routines
1010# 1020#
1011CONFIG_BITREVERSE=y 1021CONFIG_BITREVERSE=y
1022# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1012# CONFIG_CRC_CCITT is not set 1023# CONFIG_CRC_CCITT is not set
1013# CONFIG_CRC16 is not set 1024# CONFIG_CRC16 is not set
1014# CONFIG_CRC_ITU_T is not set 1025# CONFIG_CRC_ITU_T is not set
@@ -1027,6 +1038,7 @@ CONFIG_HAVE_LMB=y
1027# CONFIG_PRINTK_TIME is not set 1038# CONFIG_PRINTK_TIME is not set
1028CONFIG_ENABLE_WARN_DEPRECATED=y 1039CONFIG_ENABLE_WARN_DEPRECATED=y
1029CONFIG_ENABLE_MUST_CHECK=y 1040CONFIG_ENABLE_MUST_CHECK=y
1041CONFIG_FRAME_WARN=1024
1030# CONFIG_MAGIC_SYSRQ is not set 1042# CONFIG_MAGIC_SYSRQ is not set
1031# CONFIG_UNUSED_SYMBOLS is not set 1043# CONFIG_UNUSED_SYMBOLS is not set
1032# CONFIG_DEBUG_FS is not set 1044# CONFIG_DEBUG_FS is not set
@@ -1034,6 +1046,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1034# CONFIG_DEBUG_KERNEL is not set 1046# CONFIG_DEBUG_KERNEL is not set
1035# CONFIG_DEBUG_BUGVERBOSE is not set 1047# CONFIG_DEBUG_BUGVERBOSE is not set
1036# CONFIG_SAMPLES is not set 1048# CONFIG_SAMPLES is not set
1049# CONFIG_IRQSTACKS is not set
1037# CONFIG_PPC_EARLY_DEBUG is not set 1050# CONFIG_PPC_EARLY_DEBUG is not set
1038 1051
1039# 1052#
@@ -1043,51 +1056,81 @@ CONFIG_ENABLE_MUST_CHECK=y
1043# CONFIG_SECURITY is not set 1056# CONFIG_SECURITY is not set
1044# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1057# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1045CONFIG_CRYPTO=y 1058CONFIG_CRYPTO=y
1059
1060#
1061# Crypto core or helper
1062#
1046CONFIG_CRYPTO_ALGAPI=y 1063CONFIG_CRYPTO_ALGAPI=y
1047CONFIG_CRYPTO_BLKCIPHER=y 1064CONFIG_CRYPTO_BLKCIPHER=y
1048# CONFIG_CRYPTO_SEQIV is not set
1049CONFIG_CRYPTO_MANAGER=y 1065CONFIG_CRYPTO_MANAGER=y
1066# CONFIG_CRYPTO_GF128MUL is not set
1067# CONFIG_CRYPTO_NULL is not set
1068# CONFIG_CRYPTO_CRYPTD is not set
1069# CONFIG_CRYPTO_AUTHENC is not set
1070# CONFIG_CRYPTO_TEST is not set
1071
1072#
1073# Authenticated Encryption with Associated Data
1074#
1075# CONFIG_CRYPTO_CCM is not set
1076# CONFIG_CRYPTO_GCM is not set
1077# CONFIG_CRYPTO_SEQIV is not set
1078
1079#
1080# Block modes
1081#
1082CONFIG_CRYPTO_CBC=y
1083# CONFIG_CRYPTO_CTR is not set
1084# CONFIG_CRYPTO_CTS is not set
1085CONFIG_CRYPTO_ECB=m
1086# CONFIG_CRYPTO_LRW is not set
1087CONFIG_CRYPTO_PCBC=m
1088# CONFIG_CRYPTO_XTS is not set
1089
1090#
1091# Hash modes
1092#
1050# CONFIG_CRYPTO_HMAC is not set 1093# CONFIG_CRYPTO_HMAC is not set
1051# CONFIG_CRYPTO_XCBC is not set 1094# CONFIG_CRYPTO_XCBC is not set
1052# CONFIG_CRYPTO_NULL is not set 1095
1096#
1097# Digest
1098#
1099# CONFIG_CRYPTO_CRC32C is not set
1053# CONFIG_CRYPTO_MD4 is not set 1100# CONFIG_CRYPTO_MD4 is not set
1054CONFIG_CRYPTO_MD5=y 1101CONFIG_CRYPTO_MD5=y
1102# CONFIG_CRYPTO_MICHAEL_MIC is not set
1055# CONFIG_CRYPTO_SHA1 is not set 1103# CONFIG_CRYPTO_SHA1 is not set
1056# CONFIG_CRYPTO_SHA256 is not set 1104# CONFIG_CRYPTO_SHA256 is not set
1057# CONFIG_CRYPTO_SHA512 is not set 1105# CONFIG_CRYPTO_SHA512 is not set
1058# CONFIG_CRYPTO_WP512 is not set
1059# CONFIG_CRYPTO_TGR192 is not set 1106# CONFIG_CRYPTO_TGR192 is not set
1060# CONFIG_CRYPTO_GF128MUL is not set 1107# CONFIG_CRYPTO_WP512 is not set
1061CONFIG_CRYPTO_ECB=m 1108
1062CONFIG_CRYPTO_CBC=y 1109#
1063CONFIG_CRYPTO_PCBC=m 1110# Ciphers
1064# CONFIG_CRYPTO_LRW is not set 1111#
1065# CONFIG_CRYPTO_XTS is not set
1066# CONFIG_CRYPTO_CTR is not set
1067# CONFIG_CRYPTO_GCM is not set
1068# CONFIG_CRYPTO_CCM is not set
1069# CONFIG_CRYPTO_CRYPTD is not set
1070CONFIG_CRYPTO_DES=y
1071# CONFIG_CRYPTO_FCRYPT is not set
1072# CONFIG_CRYPTO_BLOWFISH is not set
1073# CONFIG_CRYPTO_TWOFISH is not set
1074# CONFIG_CRYPTO_SERPENT is not set
1075# CONFIG_CRYPTO_AES is not set 1112# CONFIG_CRYPTO_AES is not set
1113# CONFIG_CRYPTO_ANUBIS is not set
1114# CONFIG_CRYPTO_ARC4 is not set
1115# CONFIG_CRYPTO_BLOWFISH is not set
1116# CONFIG_CRYPTO_CAMELLIA is not set
1076# CONFIG_CRYPTO_CAST5 is not set 1117# CONFIG_CRYPTO_CAST5 is not set
1077# CONFIG_CRYPTO_CAST6 is not set 1118# CONFIG_CRYPTO_CAST6 is not set
1078# CONFIG_CRYPTO_TEA is not set 1119CONFIG_CRYPTO_DES=y
1079# CONFIG_CRYPTO_ARC4 is not set 1120# CONFIG_CRYPTO_FCRYPT is not set
1080# CONFIG_CRYPTO_KHAZAD is not set 1121# CONFIG_CRYPTO_KHAZAD is not set
1081# CONFIG_CRYPTO_ANUBIS is not set
1082# CONFIG_CRYPTO_SEED is not set
1083# CONFIG_CRYPTO_SALSA20 is not set 1122# CONFIG_CRYPTO_SALSA20 is not set
1123# CONFIG_CRYPTO_SEED is not set
1124# CONFIG_CRYPTO_SERPENT is not set
1125# CONFIG_CRYPTO_TEA is not set
1126# CONFIG_CRYPTO_TWOFISH is not set
1127
1128#
1129# Compression
1130#
1084# CONFIG_CRYPTO_DEFLATE is not set 1131# CONFIG_CRYPTO_DEFLATE is not set
1085# CONFIG_CRYPTO_MICHAEL_MIC is not set
1086# CONFIG_CRYPTO_CRC32C is not set
1087# CONFIG_CRYPTO_CAMELLIA is not set
1088# CONFIG_CRYPTO_TEST is not set
1089# CONFIG_CRYPTO_AUTHENC is not set
1090# CONFIG_CRYPTO_LZO is not set 1132# CONFIG_CRYPTO_LZO is not set
1091CONFIG_CRYPTO_HW=y 1133CONFIG_CRYPTO_HW=y
1092# CONFIG_PPC_CLOCK is not set 1134# CONFIG_PPC_CLOCK is not set
1093CONFIG_PPC_LIB_RHEAP=y 1135CONFIG_PPC_LIB_RHEAP=y
1136# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/mpc85xx_defconfig b/arch/powerpc/configs/mpc85xx_defconfig
index 2075722911bb..3efab71a603b 100644
--- a/arch/powerpc/configs/mpc85xx_defconfig
+++ b/arch/powerpc/configs/mpc85xx_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:37:08 2008 4# Mon Jun 9 09:03:46 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -90,6 +92,7 @@ CONFIG_INITRAMFS_SOURCE=""
90CONFIG_SYSCTL=y 92CONFIG_SYSCTL=y
91CONFIG_EMBEDDED=y 93CONFIG_EMBEDDED=y
92CONFIG_SYSCTL_SYSCALL=y 94CONFIG_SYSCTL_SYSCALL=y
95CONFIG_SYSCTL_SYSCALL_CHECK=y
93CONFIG_KALLSYMS=y 96CONFIG_KALLSYMS=y
94CONFIG_KALLSYMS_ALL=y 97CONFIG_KALLSYMS_ALL=y
95CONFIG_KALLSYMS_EXTRA_PASS=y 98CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -117,12 +120,14 @@ CONFIG_HAVE_OPROFILE=y
117# CONFIG_KPROBES is not set 120# CONFIG_KPROBES is not set
118CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
123# CONFIG_HAVE_DMA_ATTRS is not set
120CONFIG_PROC_PAGE_MONITOR=y 124CONFIG_PROC_PAGE_MONITOR=y
121CONFIG_SLABINFO=y 125CONFIG_SLABINFO=y
122CONFIG_RT_MUTEXES=y 126CONFIG_RT_MUTEXES=y
123# CONFIG_TINY_SHMEM is not set 127# CONFIG_TINY_SHMEM is not set
124CONFIG_BASE_SMALL=0 128CONFIG_BASE_SMALL=0
125CONFIG_MODULES=y 129CONFIG_MODULES=y
130# CONFIG_MODULE_FORCE_LOAD is not set
126CONFIG_MODULE_UNLOAD=y 131CONFIG_MODULE_UNLOAD=y
127CONFIG_MODULE_FORCE_UNLOAD=y 132CONFIG_MODULE_FORCE_UNLOAD=y
128CONFIG_MODVERSIONS=y 133CONFIG_MODVERSIONS=y
@@ -162,6 +167,7 @@ CONFIG_MPC8560_ADS=y
162CONFIG_MPC85xx_CDS=y 167CONFIG_MPC85xx_CDS=y
163CONFIG_MPC85xx_MDS=y 168CONFIG_MPC85xx_MDS=y
164CONFIG_MPC85xx_DS=y 169CONFIG_MPC85xx_DS=y
170CONFIG_KSI8560=y
165# CONFIG_STX_GP3 is not set 171# CONFIG_STX_GP3 is not set
166CONFIG_TQM8540=y 172CONFIG_TQM8540=y
167CONFIG_TQM8541=y 173CONFIG_TQM8541=y
@@ -221,11 +227,13 @@ CONFIG_FLATMEM=y
221CONFIG_FLAT_NODE_MEM_MAP=y 227CONFIG_FLAT_NODE_MEM_MAP=y
222# CONFIG_SPARSEMEM_STATIC is not set 228# CONFIG_SPARSEMEM_STATIC is not set
223# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 229# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
230CONFIG_PAGEFLAGS_EXTENDED=y
224CONFIG_SPLIT_PTLOCK_CPUS=4 231CONFIG_SPLIT_PTLOCK_CPUS=4
225# CONFIG_RESOURCES_64BIT is not set 232# CONFIG_RESOURCES_64BIT is not set
226CONFIG_ZONE_DMA_FLAG=1 233CONFIG_ZONE_DMA_FLAG=1
227CONFIG_BOUNCE=y 234CONFIG_BOUNCE=y
228CONFIG_VIRT_TO_BUS=y 235CONFIG_VIRT_TO_BUS=y
236CONFIG_FORCE_MAX_ZONEORDER=11
229CONFIG_PROC_DEVICETREE=y 237CONFIG_PROC_DEVICETREE=y
230# CONFIG_CMDLINE_BOOL is not set 238# CONFIG_CMDLINE_BOOL is not set
231# CONFIG_PM is not set 239# CONFIG_PM is not set
@@ -250,6 +258,7 @@ CONFIG_PCI_LEGACY=y
250# CONFIG_PCI_DEBUG is not set 258# CONFIG_PCI_DEBUG is not set
251# CONFIG_PCCARD is not set 259# CONFIG_PCCARD is not set
252# CONFIG_HOTPLUG_PCI is not set 260# CONFIG_HOTPLUG_PCI is not set
261# CONFIG_HAS_RAPIDIO is not set
253 262
254# 263#
255# Advanced setup 264# Advanced setup
@@ -259,11 +268,12 @@ CONFIG_PCI_LEGACY=y
259# 268#
260# Default settings for advanced configuration options are used 269# Default settings for advanced configuration options are used
261# 270#
262CONFIG_HIGHMEM_START=0xfe000000
263CONFIG_LOWMEM_SIZE=0x30000000 271CONFIG_LOWMEM_SIZE=0x30000000
272CONFIG_PAGE_OFFSET=0xc0000000
264CONFIG_KERNEL_START=0xc0000000 273CONFIG_KERNEL_START=0xc0000000
274CONFIG_PHYSICAL_START=0x00000000
275CONFIG_PHYSICAL_ALIGN=0x10000000
265CONFIG_TASK_SIZE=0xc0000000 276CONFIG_TASK_SIZE=0xc0000000
266CONFIG_BOOT_LOAD=0x00800000
267 277
268# 278#
269# Networking 279# Networking
@@ -334,8 +344,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
334CONFIG_INET6_XFRM_MODE_BEET=y 344CONFIG_INET6_XFRM_MODE_BEET=y
335# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 345# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
336CONFIG_IPV6_SIT=y 346CONFIG_IPV6_SIT=y
347CONFIG_IPV6_NDISC_NODETYPE=y
337# CONFIG_IPV6_TUNNEL is not set 348# CONFIG_IPV6_TUNNEL is not set
338# CONFIG_IPV6_MULTIPLE_TABLES is not set 349# CONFIG_IPV6_MULTIPLE_TABLES is not set
350# CONFIG_IPV6_MROUTE is not set
339# CONFIG_NETWORK_SECMARK is not set 351# CONFIG_NETWORK_SECMARK is not set
340# CONFIG_NETFILTER is not set 352# CONFIG_NETFILTER is not set
341# CONFIG_IP_DCCP is not set 353# CONFIG_IP_DCCP is not set
@@ -397,6 +409,7 @@ CONFIG_FW_LOADER=y
397# CONFIG_CONNECTOR is not set 409# CONFIG_CONNECTOR is not set
398# CONFIG_MTD is not set 410# CONFIG_MTD is not set
399CONFIG_OF_DEVICE=y 411CONFIG_OF_DEVICE=y
412CONFIG_OF_I2C=y
400# CONFIG_PARPORT is not set 413# CONFIG_PARPORT is not set
401CONFIG_BLK_DEV=y 414CONFIG_BLK_DEV=y
402# CONFIG_BLK_DEV_FD is not set 415# CONFIG_BLK_DEV_FD is not set
@@ -503,7 +516,11 @@ CONFIG_SCSI_LOWLEVEL=y
503# CONFIG_SCSI_SRP is not set 516# CONFIG_SCSI_SRP is not set
504CONFIG_ATA=y 517CONFIG_ATA=y
505# CONFIG_ATA_NONSTANDARD is not set 518# CONFIG_ATA_NONSTANDARD is not set
519CONFIG_SATA_PMP=y
506CONFIG_SATA_AHCI=y 520CONFIG_SATA_AHCI=y
521# CONFIG_SATA_SIL24 is not set
522CONFIG_SATA_FSL=y
523CONFIG_ATA_SFF=y
507# CONFIG_SATA_SVW is not set 524# CONFIG_SATA_SVW is not set
508# CONFIG_ATA_PIIX is not set 525# CONFIG_ATA_PIIX is not set
509# CONFIG_SATA_MV is not set 526# CONFIG_SATA_MV is not set
@@ -513,13 +530,11 @@ CONFIG_SATA_AHCI=y
513# CONFIG_SATA_PROMISE is not set 530# CONFIG_SATA_PROMISE is not set
514# CONFIG_SATA_SX4 is not set 531# CONFIG_SATA_SX4 is not set
515# CONFIG_SATA_SIL is not set 532# CONFIG_SATA_SIL is not set
516# CONFIG_SATA_SIL24 is not set
517# CONFIG_SATA_SIS is not set 533# CONFIG_SATA_SIS is not set
518# CONFIG_SATA_ULI is not set 534# CONFIG_SATA_ULI is not set
519# CONFIG_SATA_VIA is not set 535# CONFIG_SATA_VIA is not set
520# CONFIG_SATA_VITESSE is not set 536# CONFIG_SATA_VITESSE is not set
521# CONFIG_SATA_INIC162X is not set 537# CONFIG_SATA_INIC162X is not set
522# CONFIG_SATA_FSL is not set
523CONFIG_PATA_ALI=y 538CONFIG_PATA_ALI=y
524# CONFIG_PATA_AMD is not set 539# CONFIG_PATA_AMD is not set
525# CONFIG_PATA_ARTOP is not set 540# CONFIG_PATA_ARTOP is not set
@@ -559,6 +574,7 @@ CONFIG_PATA_ALI=y
559# CONFIG_PATA_VIA is not set 574# CONFIG_PATA_VIA is not set
560# CONFIG_PATA_WINBOND is not set 575# CONFIG_PATA_WINBOND is not set
561# CONFIG_PATA_PLATFORM is not set 576# CONFIG_PATA_PLATFORM is not set
577# CONFIG_PATA_SCH is not set
562# CONFIG_MD is not set 578# CONFIG_MD is not set
563# CONFIG_FUSION is not set 579# CONFIG_FUSION is not set
564 580
@@ -625,7 +641,6 @@ CONFIG_NETDEV_1000=y
625# CONFIG_SIS190 is not set 641# CONFIG_SIS190 is not set
626# CONFIG_SKGE is not set 642# CONFIG_SKGE is not set
627# CONFIG_SKY2 is not set 643# CONFIG_SKY2 is not set
628# CONFIG_SK98LIN is not set
629# CONFIG_VIA_VELOCITY is not set 644# CONFIG_VIA_VELOCITY is not set
630# CONFIG_TIGON3 is not set 645# CONFIG_TIGON3 is not set
631# CONFIG_BNX2 is not set 646# CONFIG_BNX2 is not set
@@ -646,6 +661,7 @@ CONFIG_NETDEV_10000=y
646# CONFIG_MLX4_CORE is not set 661# CONFIG_MLX4_CORE is not set
647# CONFIG_TEHUTI is not set 662# CONFIG_TEHUTI is not set
648# CONFIG_BNX2X is not set 663# CONFIG_BNX2X is not set
664# CONFIG_SFC is not set
649# CONFIG_TR is not set 665# CONFIG_TR is not set
650 666
651# 667#
@@ -653,6 +669,7 @@ CONFIG_NETDEV_10000=y
653# 669#
654# CONFIG_WLAN_PRE80211 is not set 670# CONFIG_WLAN_PRE80211 is not set
655# CONFIG_WLAN_80211 is not set 671# CONFIG_WLAN_80211 is not set
672# CONFIG_IWLWIFI_LEDS is not set
656 673
657# 674#
658# USB Network Adapters 675# USB Network Adapters
@@ -717,6 +734,7 @@ CONFIG_VT=y
717CONFIG_VT_CONSOLE=y 734CONFIG_VT_CONSOLE=y
718CONFIG_HW_CONSOLE=y 735CONFIG_HW_CONSOLE=y
719# CONFIG_VT_HW_CONSOLE_BINDING is not set 736# CONFIG_VT_HW_CONSOLE_BINDING is not set
737CONFIG_DEVKMEM=y
720# CONFIG_SERIAL_NONSTANDARD is not set 738# CONFIG_SERIAL_NONSTANDARD is not set
721# CONFIG_NOZOMI is not set 739# CONFIG_NOZOMI is not set
722 740
@@ -750,7 +768,6 @@ CONFIG_LEGACY_PTY_COUNT=256
750# CONFIG_IPMI_HANDLER is not set 768# CONFIG_IPMI_HANDLER is not set
751# CONFIG_HW_RANDOM is not set 769# CONFIG_HW_RANDOM is not set
752CONFIG_NVRAM=y 770CONFIG_NVRAM=y
753# CONFIG_GEN_RTC is not set
754# CONFIG_R3964 is not set 771# CONFIG_R3964 is not set
755# CONFIG_APPLICOM is not set 772# CONFIG_APPLICOM is not set
756# CONFIG_RAW_DRIVER is not set 773# CONFIG_RAW_DRIVER is not set
@@ -761,13 +778,6 @@ CONFIG_I2C_BOARDINFO=y
761# CONFIG_I2C_CHARDEV is not set 778# CONFIG_I2C_CHARDEV is not set
762 779
763# 780#
764# I2C Algorithms
765#
766# CONFIG_I2C_ALGOBIT is not set
767# CONFIG_I2C_ALGOPCF is not set
768# CONFIG_I2C_ALGOPCA is not set
769
770#
771# I2C Hardware Bus support 781# I2C Hardware Bus support
772# 782#
773# CONFIG_I2C_ALI1535 is not set 783# CONFIG_I2C_ALI1535 is not set
@@ -794,6 +804,7 @@ CONFIG_I2C_MPC=y
794# CONFIG_I2C_VIA is not set 804# CONFIG_I2C_VIA is not set
795# CONFIG_I2C_VIAPRO is not set 805# CONFIG_I2C_VIAPRO is not set
796# CONFIG_I2C_VOODOO3 is not set 806# CONFIG_I2C_VOODOO3 is not set
807# CONFIG_I2C_PCA_PLATFORM is not set
797 808
798# 809#
799# Miscellaneous I2C Chip support 810# Miscellaneous I2C Chip support
@@ -803,19 +814,13 @@ CONFIG_SENSORS_EEPROM=y
803# CONFIG_SENSORS_PCF8574 is not set 814# CONFIG_SENSORS_PCF8574 is not set
804# CONFIG_PCF8575 is not set 815# CONFIG_PCF8575 is not set
805# CONFIG_SENSORS_PCF8591 is not set 816# CONFIG_SENSORS_PCF8591 is not set
806# CONFIG_TPS65010 is not set
807# CONFIG_SENSORS_MAX6875 is not set 817# CONFIG_SENSORS_MAX6875 is not set
808# CONFIG_SENSORS_TSL2550 is not set 818# CONFIG_SENSORS_TSL2550 is not set
809# CONFIG_I2C_DEBUG_CORE is not set 819# CONFIG_I2C_DEBUG_CORE is not set
810# CONFIG_I2C_DEBUG_ALGO is not set 820# CONFIG_I2C_DEBUG_ALGO is not set
811# CONFIG_I2C_DEBUG_BUS is not set 821# CONFIG_I2C_DEBUG_BUS is not set
812# CONFIG_I2C_DEBUG_CHIP is not set 822# CONFIG_I2C_DEBUG_CHIP is not set
813
814#
815# SPI support
816#
817# CONFIG_SPI is not set 823# CONFIG_SPI is not set
818# CONFIG_SPI_MASTER is not set
819# CONFIG_W1 is not set 824# CONFIG_W1 is not set
820# CONFIG_POWER_SUPPLY is not set 825# CONFIG_POWER_SUPPLY is not set
821# CONFIG_HWMON is not set 826# CONFIG_HWMON is not set
@@ -832,13 +837,33 @@ CONFIG_SSB_POSSIBLE=y
832# Multifunction device drivers 837# Multifunction device drivers
833# 838#
834# CONFIG_MFD_SM501 is not set 839# CONFIG_MFD_SM501 is not set
840# CONFIG_HTC_PASIC3 is not set
835 841
836# 842#
837# Multimedia devices 843# Multimedia devices
838# 844#
845
846#
847# Multimedia core support
848#
839# CONFIG_VIDEO_DEV is not set 849# CONFIG_VIDEO_DEV is not set
840CONFIG_DVB_CORE=m 850CONFIG_DVB_CORE=m
841# CONFIG_DVB_CORE_ATTACH is not set 851CONFIG_VIDEO_MEDIA=m
852
853#
854# Multimedia drivers
855#
856# CONFIG_MEDIA_ATTACH is not set
857CONFIG_MEDIA_TUNER=m
858# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
859CONFIG_MEDIA_TUNER_SIMPLE=m
860CONFIG_MEDIA_TUNER_TDA8290=m
861CONFIG_MEDIA_TUNER_TDA9887=m
862CONFIG_MEDIA_TUNER_TEA5761=m
863CONFIG_MEDIA_TUNER_TEA5767=m
864CONFIG_MEDIA_TUNER_MT20XX=m
865CONFIG_MEDIA_TUNER_XC2028=m
866CONFIG_MEDIA_TUNER_XC5000=m
842CONFIG_DVB_CAPTURE_DRIVERS=y 867CONFIG_DVB_CAPTURE_DRIVERS=y
843 868
844# 869#
@@ -881,14 +906,17 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
881# 906#
882# DVB-S (satellite) frontends 907# DVB-S (satellite) frontends
883# 908#
884# CONFIG_DVB_STV0299 is not set
885# CONFIG_DVB_CX24110 is not set 909# CONFIG_DVB_CX24110 is not set
886# CONFIG_DVB_CX24123 is not set 910# CONFIG_DVB_CX24123 is not set
887# CONFIG_DVB_TDA8083 is not set
888# CONFIG_DVB_MT312 is not set 911# CONFIG_DVB_MT312 is not set
889# CONFIG_DVB_VES1X93 is not set
890# CONFIG_DVB_S5H1420 is not set 912# CONFIG_DVB_S5H1420 is not set
913# CONFIG_DVB_STV0299 is not set
914# CONFIG_DVB_TDA8083 is not set
891# CONFIG_DVB_TDA10086 is not set 915# CONFIG_DVB_TDA10086 is not set
916# CONFIG_DVB_VES1X93 is not set
917# CONFIG_DVB_TUNER_ITD1000 is not set
918# CONFIG_DVB_TDA826X is not set
919# CONFIG_DVB_TUA6100 is not set
892 920
893# 921#
894# DVB-T (terrestrial) frontends 922# DVB-T (terrestrial) frontends
@@ -906,6 +934,7 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
906# CONFIG_DVB_DIB3000MC is not set 934# CONFIG_DVB_DIB3000MC is not set
907# CONFIG_DVB_DIB7000M is not set 935# CONFIG_DVB_DIB7000M is not set
908# CONFIG_DVB_DIB7000P is not set 936# CONFIG_DVB_DIB7000P is not set
937# CONFIG_DVB_TDA10048 is not set
909 938
910# 939#
911# DVB-C (cable) frontends 940# DVB-C (cable) frontends
@@ -924,27 +953,21 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
924# CONFIG_DVB_BCM3510 is not set 953# CONFIG_DVB_BCM3510 is not set
925# CONFIG_DVB_LGDT330X is not set 954# CONFIG_DVB_LGDT330X is not set
926# CONFIG_DVB_S5H1409 is not set 955# CONFIG_DVB_S5H1409 is not set
956# CONFIG_DVB_AU8522 is not set
957# CONFIG_DVB_S5H1411 is not set
927 958
928# 959#
929# Tuners/PLL support 960# Digital terrestrial only tuners/PLL
930# 961#
931# CONFIG_DVB_PLL is not set 962# CONFIG_DVB_PLL is not set
932# CONFIG_DVB_TDA826X is not set
933# CONFIG_DVB_TDA827X is not set
934# CONFIG_DVB_TDA18271 is not set
935# CONFIG_DVB_TUNER_QT1010 is not set
936# CONFIG_DVB_TUNER_MT2060 is not set
937# CONFIG_DVB_TUNER_MT2266 is not set
938# CONFIG_DVB_TUNER_MT2131 is not set
939# CONFIG_DVB_TUNER_DIB0070 is not set 963# CONFIG_DVB_TUNER_DIB0070 is not set
940# CONFIG_DVB_TUNER_XC5000 is not set
941 964
942# 965#
943# Miscellaneous devices 966# SEC control devices for DVB-S
944# 967#
945# CONFIG_DVB_LNBP21 is not set 968# CONFIG_DVB_LNBP21 is not set
969# CONFIG_DVB_ISL6405 is not set
946# CONFIG_DVB_ISL6421 is not set 970# CONFIG_DVB_ISL6421 is not set
947# CONFIG_DVB_TUA6100 is not set
948CONFIG_DAB=y 971CONFIG_DAB=y
949# CONFIG_USB_DABUSB is not set 972# CONFIG_USB_DABUSB is not set
950 973
@@ -1011,6 +1034,7 @@ CONFIG_SND_AC97_CODEC=y
1011# CONFIG_SND_AU8810 is not set 1034# CONFIG_SND_AU8810 is not set
1012# CONFIG_SND_AU8820 is not set 1035# CONFIG_SND_AU8820 is not set
1013# CONFIG_SND_AU8830 is not set 1036# CONFIG_SND_AU8830 is not set
1037# CONFIG_SND_AW2 is not set
1014# CONFIG_SND_AZT3328 is not set 1038# CONFIG_SND_AZT3328 is not set
1015# CONFIG_SND_BT87X is not set 1039# CONFIG_SND_BT87X is not set
1016# CONFIG_SND_CA0106 is not set 1040# CONFIG_SND_CA0106 is not set
@@ -1085,11 +1109,11 @@ CONFIG_SND_INTEL8X0=y
1085# CONFIG_SND_SOC is not set 1109# CONFIG_SND_SOC is not set
1086 1110
1087# 1111#
1088# SoC Audio support for SuperH 1112# ALSA SoC audio for Freescale SOCs
1089# 1113#
1090 1114
1091# 1115#
1092# ALSA SoC audio for Freescale SOCs 1116# SoC Audio for the Texas Instruments OMAP
1093# 1117#
1094 1118
1095# 1119#
@@ -1124,16 +1148,20 @@ CONFIG_USB_DEVICEFS=y
1124CONFIG_USB_DEVICE_CLASS=y 1148CONFIG_USB_DEVICE_CLASS=y
1125# CONFIG_USB_DYNAMIC_MINORS is not set 1149# CONFIG_USB_DYNAMIC_MINORS is not set
1126# CONFIG_USB_OTG is not set 1150# CONFIG_USB_OTG is not set
1151# CONFIG_USB_OTG_WHITELIST is not set
1152# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1127 1153
1128# 1154#
1129# USB Host Controller Drivers 1155# USB Host Controller Drivers
1130# 1156#
1157# CONFIG_USB_C67X00_HCD is not set
1131CONFIG_USB_EHCI_HCD=y 1158CONFIG_USB_EHCI_HCD=y
1132# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1159CONFIG_USB_EHCI_ROOT_HUB_TT=y
1133# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1160# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1134# CONFIG_USB_EHCI_FSL is not set 1161CONFIG_USB_EHCI_FSL=y
1135CONFIG_USB_EHCI_HCD_PPC_OF=y 1162CONFIG_USB_EHCI_HCD_PPC_OF=y
1136# CONFIG_USB_ISP116X_HCD is not set 1163# CONFIG_USB_ISP116X_HCD is not set
1164# CONFIG_USB_ISP1760_HCD is not set
1137CONFIG_USB_OHCI_HCD=y 1165CONFIG_USB_OHCI_HCD=y
1138CONFIG_USB_OHCI_HCD_PPC_OF=y 1166CONFIG_USB_OHCI_HCD_PPC_OF=y
1139CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1167CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
@@ -1151,6 +1179,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1151# 1179#
1152# CONFIG_USB_ACM is not set 1180# CONFIG_USB_ACM is not set
1153# CONFIG_USB_PRINTER is not set 1181# CONFIG_USB_PRINTER is not set
1182# CONFIG_USB_WDM is not set
1154 1183
1155# 1184#
1156# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1185# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1170,7 +1199,9 @@ CONFIG_USB_STORAGE=y
1170# CONFIG_USB_STORAGE_SDDR55 is not set 1199# CONFIG_USB_STORAGE_SDDR55 is not set
1171# CONFIG_USB_STORAGE_JUMPSHOT is not set 1200# CONFIG_USB_STORAGE_JUMPSHOT is not set
1172# CONFIG_USB_STORAGE_ALAUDA is not set 1201# CONFIG_USB_STORAGE_ALAUDA is not set
1202# CONFIG_USB_STORAGE_ONETOUCH is not set
1173# CONFIG_USB_STORAGE_KARMA is not set 1203# CONFIG_USB_STORAGE_KARMA is not set
1204# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1174# CONFIG_USB_LIBUSUAL is not set 1205# CONFIG_USB_LIBUSUAL is not set
1175 1206
1176# 1207#
@@ -1208,12 +1239,21 @@ CONFIG_USB_MON=y
1208# CONFIG_USB_TRANCEVIBRATOR is not set 1239# CONFIG_USB_TRANCEVIBRATOR is not set
1209# CONFIG_USB_IOWARRIOR is not set 1240# CONFIG_USB_IOWARRIOR is not set
1210# CONFIG_USB_TEST is not set 1241# CONFIG_USB_TEST is not set
1242# CONFIG_USB_ISIGHTFW is not set
1211# CONFIG_USB_GADGET is not set 1243# CONFIG_USB_GADGET is not set
1212# CONFIG_MMC is not set 1244# CONFIG_MMC is not set
1213# CONFIG_MEMSTICK is not set 1245# CONFIG_MEMSTICK is not set
1214# CONFIG_NEW_LEDS is not set 1246# CONFIG_NEW_LEDS is not set
1247# CONFIG_ACCESSIBILITY is not set
1215# CONFIG_INFINIBAND is not set 1248# CONFIG_INFINIBAND is not set
1216# CONFIG_EDAC is not set 1249CONFIG_EDAC=y
1250
1251#
1252# Reporting subsystems
1253#
1254# CONFIG_EDAC_DEBUG is not set
1255CONFIG_EDAC_MM_EDAC=y
1256CONFIG_EDAC_MPC85XX=y
1217CONFIG_RTC_LIB=y 1257CONFIG_RTC_LIB=y
1218CONFIG_RTC_CLASS=y 1258CONFIG_RTC_CLASS=y
1219CONFIG_RTC_HCTOSYS=y 1259CONFIG_RTC_HCTOSYS=y
@@ -1263,11 +1303,19 @@ CONFIG_RTC_DRV_CMOS=y
1263# 1303#
1264# on-CPU RTC drivers 1304# on-CPU RTC drivers
1265# 1305#
1266# CONFIG_DMADEVICES is not set 1306# CONFIG_RTC_DRV_PPC is not set
1307CONFIG_DMADEVICES=y
1267 1308
1268# 1309#
1269# Userspace I/O 1310# DMA Devices
1270# 1311#
1312CONFIG_FSL_DMA=y
1313CONFIG_DMA_ENGINE=y
1314
1315#
1316# DMA Clients
1317#
1318# CONFIG_NET_DMA is not set
1271# CONFIG_UIO is not set 1319# CONFIG_UIO is not set
1272 1320
1273# 1321#
@@ -1287,7 +1335,6 @@ CONFIG_FS_MBCACHE=y
1287# CONFIG_JFS_FS is not set 1335# CONFIG_JFS_FS is not set
1288# CONFIG_FS_POSIX_ACL is not set 1336# CONFIG_FS_POSIX_ACL is not set
1289# CONFIG_XFS_FS is not set 1337# CONFIG_XFS_FS is not set
1290# CONFIG_GFS2_FS is not set
1291# CONFIG_OCFS2_FS is not set 1338# CONFIG_OCFS2_FS is not set
1292CONFIG_DNOTIFY=y 1339CONFIG_DNOTIFY=y
1293CONFIG_INOTIFY=y 1340CONFIG_INOTIFY=y
@@ -1357,10 +1404,9 @@ CONFIG_NFS_FS=y
1357CONFIG_NFS_V3=y 1404CONFIG_NFS_V3=y
1358# CONFIG_NFS_V3_ACL is not set 1405# CONFIG_NFS_V3_ACL is not set
1359CONFIG_NFS_V4=y 1406CONFIG_NFS_V4=y
1360# CONFIG_NFS_DIRECTIO is not set
1361CONFIG_NFSD=y 1407CONFIG_NFSD=y
1362# CONFIG_NFSD_V3 is not set 1408# CONFIG_NFSD_V3 is not set
1363CONFIG_NFSD_TCP=y 1409# CONFIG_NFSD_V4 is not set
1364CONFIG_ROOT_NFS=y 1410CONFIG_ROOT_NFS=y
1365CONFIG_LOCKD=y 1411CONFIG_LOCKD=y
1366CONFIG_LOCKD_V4=y 1412CONFIG_LOCKD_V4=y
@@ -1444,9 +1490,10 @@ CONFIG_NLS_UTF8=m
1444# Library routines 1490# Library routines
1445# 1491#
1446CONFIG_BITREVERSE=y 1492CONFIG_BITREVERSE=y
1493# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1447# CONFIG_CRC_CCITT is not set 1494# CONFIG_CRC_CCITT is not set
1448# CONFIG_CRC16 is not set 1495# CONFIG_CRC16 is not set
1449# CONFIG_CRC_ITU_T is not set 1496CONFIG_CRC_ITU_T=m
1450CONFIG_CRC32=y 1497CONFIG_CRC32=y
1451# CONFIG_CRC7 is not set 1498# CONFIG_CRC7 is not set
1452CONFIG_LIBCRC32C=m 1499CONFIG_LIBCRC32C=m
@@ -1455,6 +1502,7 @@ CONFIG_PLIST=y
1455CONFIG_HAS_IOMEM=y 1502CONFIG_HAS_IOMEM=y
1456CONFIG_HAS_IOPORT=y 1503CONFIG_HAS_IOPORT=y
1457CONFIG_HAS_DMA=y 1504CONFIG_HAS_DMA=y
1505CONFIG_HAVE_LMB=y
1458 1506
1459# 1507#
1460# Kernel hacking 1508# Kernel hacking
@@ -1462,6 +1510,7 @@ CONFIG_HAS_DMA=y
1462# CONFIG_PRINTK_TIME is not set 1510# CONFIG_PRINTK_TIME is not set
1463CONFIG_ENABLE_WARN_DEPRECATED=y 1511CONFIG_ENABLE_WARN_DEPRECATED=y
1464CONFIG_ENABLE_MUST_CHECK=y 1512CONFIG_ENABLE_MUST_CHECK=y
1513CONFIG_FRAME_WARN=1024
1465# CONFIG_MAGIC_SYSRQ is not set 1514# CONFIG_MAGIC_SYSRQ is not set
1466# CONFIG_UNUSED_SYMBOLS is not set 1515# CONFIG_UNUSED_SYMBOLS is not set
1467# CONFIG_DEBUG_FS is not set 1516# CONFIG_DEBUG_FS is not set
@@ -1472,6 +1521,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1472CONFIG_SCHED_DEBUG=y 1521CONFIG_SCHED_DEBUG=y
1473# CONFIG_SCHEDSTATS is not set 1522# CONFIG_SCHEDSTATS is not set
1474# CONFIG_TIMER_STATS is not set 1523# CONFIG_TIMER_STATS is not set
1524# CONFIG_DEBUG_OBJECTS is not set
1475# CONFIG_SLUB_DEBUG_ON is not set 1525# CONFIG_SLUB_DEBUG_ON is not set
1476# CONFIG_SLUB_STATS is not set 1526# CONFIG_SLUB_STATS is not set
1477# CONFIG_DEBUG_RT_MUTEXES is not set 1527# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1485,6 +1535,7 @@ CONFIG_SCHED_DEBUG=y
1485# CONFIG_DEBUG_BUGVERBOSE is not set 1535# CONFIG_DEBUG_BUGVERBOSE is not set
1486CONFIG_DEBUG_INFO=y 1536CONFIG_DEBUG_INFO=y
1487# CONFIG_DEBUG_VM is not set 1537# CONFIG_DEBUG_VM is not set
1538# CONFIG_DEBUG_WRITECOUNT is not set
1488# CONFIG_DEBUG_LIST is not set 1539# CONFIG_DEBUG_LIST is not set
1489# CONFIG_DEBUG_SG is not set 1540# CONFIG_DEBUG_SG is not set
1490# CONFIG_BOOT_PRINTK_DELAY is not set 1541# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1497,6 +1548,7 @@ CONFIG_DEBUG_INFO=y
1497# CONFIG_DEBUG_PAGEALLOC is not set 1548# CONFIG_DEBUG_PAGEALLOC is not set
1498# CONFIG_DEBUGGER is not set 1549# CONFIG_DEBUGGER is not set
1499# CONFIG_KGDB_CONSOLE is not set 1550# CONFIG_KGDB_CONSOLE is not set
1551# CONFIG_IRQSTACKS is not set
1500# CONFIG_BDI_SWITCH is not set 1552# CONFIG_BDI_SWITCH is not set
1501# CONFIG_PPC_EARLY_DEBUG is not set 1553# CONFIG_PPC_EARLY_DEBUG is not set
1502 1554
@@ -1507,53 +1559,83 @@ CONFIG_DEBUG_INFO=y
1507# CONFIG_SECURITY is not set 1559# CONFIG_SECURITY is not set
1508# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1560# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1509CONFIG_CRYPTO=y 1561CONFIG_CRYPTO=y
1562
1563#
1564# Crypto core or helper
1565#
1510CONFIG_CRYPTO_ALGAPI=y 1566CONFIG_CRYPTO_ALGAPI=y
1511CONFIG_CRYPTO_BLKCIPHER=y 1567CONFIG_CRYPTO_BLKCIPHER=y
1512# CONFIG_CRYPTO_SEQIV is not set
1513CONFIG_CRYPTO_HASH=y 1568CONFIG_CRYPTO_HASH=y
1514CONFIG_CRYPTO_MANAGER=y 1569CONFIG_CRYPTO_MANAGER=y
1570# CONFIG_CRYPTO_GF128MUL is not set
1571# CONFIG_CRYPTO_NULL is not set
1572# CONFIG_CRYPTO_CRYPTD is not set
1573# CONFIG_CRYPTO_AUTHENC is not set
1574# CONFIG_CRYPTO_TEST is not set
1575
1576#
1577# Authenticated Encryption with Associated Data
1578#
1579# CONFIG_CRYPTO_CCM is not set
1580# CONFIG_CRYPTO_GCM is not set
1581# CONFIG_CRYPTO_SEQIV is not set
1582
1583#
1584# Block modes
1585#
1586CONFIG_CRYPTO_CBC=y
1587# CONFIG_CRYPTO_CTR is not set
1588# CONFIG_CRYPTO_CTS is not set
1589# CONFIG_CRYPTO_ECB is not set
1590# CONFIG_CRYPTO_LRW is not set
1591CONFIG_CRYPTO_PCBC=m
1592# CONFIG_CRYPTO_XTS is not set
1593
1594#
1595# Hash modes
1596#
1515CONFIG_CRYPTO_HMAC=y 1597CONFIG_CRYPTO_HMAC=y
1516# CONFIG_CRYPTO_XCBC is not set 1598# CONFIG_CRYPTO_XCBC is not set
1517# CONFIG_CRYPTO_NULL is not set 1599
1600#
1601# Digest
1602#
1603# CONFIG_CRYPTO_CRC32C is not set
1518# CONFIG_CRYPTO_MD4 is not set 1604# CONFIG_CRYPTO_MD4 is not set
1519CONFIG_CRYPTO_MD5=y 1605CONFIG_CRYPTO_MD5=y
1606# CONFIG_CRYPTO_MICHAEL_MIC is not set
1520CONFIG_CRYPTO_SHA1=m 1607CONFIG_CRYPTO_SHA1=m
1521# CONFIG_CRYPTO_SHA256 is not set 1608# CONFIG_CRYPTO_SHA256 is not set
1522# CONFIG_CRYPTO_SHA512 is not set 1609# CONFIG_CRYPTO_SHA512 is not set
1523# CONFIG_CRYPTO_WP512 is not set
1524# CONFIG_CRYPTO_TGR192 is not set 1610# CONFIG_CRYPTO_TGR192 is not set
1525# CONFIG_CRYPTO_GF128MUL is not set 1611# CONFIG_CRYPTO_WP512 is not set
1526# CONFIG_CRYPTO_ECB is not set 1612
1527CONFIG_CRYPTO_CBC=y 1613#
1528CONFIG_CRYPTO_PCBC=m 1614# Ciphers
1529# CONFIG_CRYPTO_LRW is not set 1615#
1530# CONFIG_CRYPTO_XTS is not set
1531# CONFIG_CRYPTO_CTR is not set
1532# CONFIG_CRYPTO_GCM is not set
1533# CONFIG_CRYPTO_CCM is not set
1534# CONFIG_CRYPTO_CRYPTD is not set
1535CONFIG_CRYPTO_DES=y
1536# CONFIG_CRYPTO_FCRYPT is not set
1537# CONFIG_CRYPTO_BLOWFISH is not set
1538# CONFIG_CRYPTO_TWOFISH is not set
1539# CONFIG_CRYPTO_SERPENT is not set
1540# CONFIG_CRYPTO_AES is not set 1616# CONFIG_CRYPTO_AES is not set
1617# CONFIG_CRYPTO_ANUBIS is not set
1618# CONFIG_CRYPTO_ARC4 is not set
1619# CONFIG_CRYPTO_BLOWFISH is not set
1620# CONFIG_CRYPTO_CAMELLIA is not set
1541# CONFIG_CRYPTO_CAST5 is not set 1621# CONFIG_CRYPTO_CAST5 is not set
1542# CONFIG_CRYPTO_CAST6 is not set 1622# CONFIG_CRYPTO_CAST6 is not set
1543# CONFIG_CRYPTO_TEA is not set 1623CONFIG_CRYPTO_DES=y
1544# CONFIG_CRYPTO_ARC4 is not set 1624# CONFIG_CRYPTO_FCRYPT is not set
1545# CONFIG_CRYPTO_KHAZAD is not set 1625# CONFIG_CRYPTO_KHAZAD is not set
1546# CONFIG_CRYPTO_ANUBIS is not set
1547# CONFIG_CRYPTO_SEED is not set
1548# CONFIG_CRYPTO_SALSA20 is not set 1626# CONFIG_CRYPTO_SALSA20 is not set
1627# CONFIG_CRYPTO_SEED is not set
1628# CONFIG_CRYPTO_SERPENT is not set
1629# CONFIG_CRYPTO_TEA is not set
1630# CONFIG_CRYPTO_TWOFISH is not set
1631
1632#
1633# Compression
1634#
1549# CONFIG_CRYPTO_DEFLATE is not set 1635# CONFIG_CRYPTO_DEFLATE is not set
1550# CONFIG_CRYPTO_MICHAEL_MIC is not set
1551# CONFIG_CRYPTO_CRC32C is not set
1552# CONFIG_CRYPTO_CAMELLIA is not set
1553# CONFIG_CRYPTO_TEST is not set
1554# CONFIG_CRYPTO_AUTHENC is not set
1555# CONFIG_CRYPTO_LZO is not set 1636# CONFIG_CRYPTO_LZO is not set
1556CONFIG_CRYPTO_HW=y 1637CONFIG_CRYPTO_HW=y
1557# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1638# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1558# CONFIG_PPC_CLOCK is not set 1639# CONFIG_PPC_CLOCK is not set
1559CONFIG_PPC_LIB_RHEAP=y 1640CONFIG_PPC_LIB_RHEAP=y
1641# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/mpc8610_hpcd_defconfig b/arch/powerpc/configs/mpc8610_hpcd_defconfig
index 7e5b9ce58d89..5612d40d0463 100644
--- a/arch/powerpc/configs/mpc8610_hpcd_defconfig
+++ b/arch/powerpc/configs/mpc8610_hpcd_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:33 2008 4# Mon Jun 9 08:50:24 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -60,9 +62,10 @@ CONFIG_EXPERIMENTAL=y
60CONFIG_BROKEN_ON_SMP=y 62CONFIG_BROKEN_ON_SMP=y
61CONFIG_INIT_ENV_ARG_LIMIT=32 63CONFIG_INIT_ENV_ARG_LIMIT=32
62CONFIG_LOCALVERSION="" 64CONFIG_LOCALVERSION=""
63# CONFIG_LOCALVERSION_AUTO is not set 65CONFIG_LOCALVERSION_AUTO=y
64# CONFIG_SWAP is not set 66# CONFIG_SWAP is not set
65# CONFIG_SYSVIPC is not set 67CONFIG_SYSVIPC=y
68CONFIG_SYSVIPC_SYSCTL=y
66# CONFIG_POSIX_MQUEUE is not set 69# CONFIG_POSIX_MQUEUE is not set
67# CONFIG_BSD_PROCESS_ACCT is not set 70# CONFIG_BSD_PROCESS_ACCT is not set
68# CONFIG_TASKSTATS is not set 71# CONFIG_TASKSTATS is not set
@@ -86,6 +89,7 @@ CONFIG_INITRAMFS_SOURCE=""
86CONFIG_SYSCTL=y 89CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y 90CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y 91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
89CONFIG_KALLSYMS=y 93CONFIG_KALLSYMS=y
90# CONFIG_KALLSYMS_ALL is not set 94# CONFIG_KALLSYMS_ALL is not set
91CONFIG_KALLSYMS_EXTRA_PASS=y 95CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -110,14 +114,22 @@ CONFIG_SLUB=y
110# CONFIG_PROFILING is not set 114# CONFIG_PROFILING is not set
111# CONFIG_MARKERS is not set 115# CONFIG_MARKERS is not set
112CONFIG_HAVE_OPROFILE=y 116CONFIG_HAVE_OPROFILE=y
117# CONFIG_KPROBES is not set
113CONFIG_HAVE_KPROBES=y 118CONFIG_HAVE_KPROBES=y
114CONFIG_HAVE_KRETPROBES=y 119CONFIG_HAVE_KRETPROBES=y
120# CONFIG_HAVE_DMA_ATTRS is not set
115CONFIG_PROC_PAGE_MONITOR=y 121CONFIG_PROC_PAGE_MONITOR=y
116CONFIG_SLABINFO=y 122CONFIG_SLABINFO=y
117CONFIG_RT_MUTEXES=y 123CONFIG_RT_MUTEXES=y
118# CONFIG_TINY_SHMEM is not set 124# CONFIG_TINY_SHMEM is not set
119CONFIG_BASE_SMALL=0 125CONFIG_BASE_SMALL=0
120# CONFIG_MODULES is not set 126CONFIG_MODULES=y
127# CONFIG_MODULE_FORCE_LOAD is not set
128CONFIG_MODULE_UNLOAD=y
129# CONFIG_MODULE_FORCE_UNLOAD is not set
130# CONFIG_MODVERSIONS is not set
131# CONFIG_MODULE_SRCVERSION_ALL is not set
132CONFIG_KMOD=y
121CONFIG_BLOCK=y 133CONFIG_BLOCK=y
122# CONFIG_LBD is not set 134# CONFIG_LBD is not set
123# CONFIG_BLK_DEV_IO_TRACE is not set 135# CONFIG_BLK_DEV_IO_TRACE is not set
@@ -151,6 +163,7 @@ CONFIG_PPC_86xx=y
151# CONFIG_PPC_CELL_NATIVE is not set 163# CONFIG_PPC_CELL_NATIVE is not set
152# CONFIG_PQ2ADS is not set 164# CONFIG_PQ2ADS is not set
153# CONFIG_MPC8641_HPCN is not set 165# CONFIG_MPC8641_HPCN is not set
166# CONFIG_SBC8641D is not set
154CONFIG_MPC8610_HPCD=y 167CONFIG_MPC8610_HPCD=y
155CONFIG_MPC8610=y 168CONFIG_MPC8610=y
156# CONFIG_IPIC is not set 169# CONFIG_IPIC is not set
@@ -199,11 +212,13 @@ CONFIG_FLATMEM=y
199CONFIG_FLAT_NODE_MEM_MAP=y 212CONFIG_FLAT_NODE_MEM_MAP=y
200# CONFIG_SPARSEMEM_STATIC is not set 213# CONFIG_SPARSEMEM_STATIC is not set
201# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 214# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
215CONFIG_PAGEFLAGS_EXTENDED=y
202CONFIG_SPLIT_PTLOCK_CPUS=4 216CONFIG_SPLIT_PTLOCK_CPUS=4
203# CONFIG_RESOURCES_64BIT is not set 217# CONFIG_RESOURCES_64BIT is not set
204CONFIG_ZONE_DMA_FLAG=1 218CONFIG_ZONE_DMA_FLAG=1
205CONFIG_BOUNCE=y 219CONFIG_BOUNCE=y
206CONFIG_VIRT_TO_BUS=y 220CONFIG_VIRT_TO_BUS=y
221CONFIG_FORCE_MAX_ZONEORDER=12
207CONFIG_PROC_DEVICETREE=y 222CONFIG_PROC_DEVICETREE=y
208# CONFIG_CMDLINE_BOOL is not set 223# CONFIG_CMDLINE_BOOL is not set
209# CONFIG_PM is not set 224# CONFIG_PM is not set
@@ -223,12 +238,14 @@ CONFIG_PCI_DOMAINS=y
223CONFIG_PCI_SYSCALL=y 238CONFIG_PCI_SYSCALL=y
224CONFIG_PCIEPORTBUS=y 239CONFIG_PCIEPORTBUS=y
225CONFIG_PCIEAER=y 240CONFIG_PCIEAER=y
241# CONFIG_PCIEASPM is not set
226CONFIG_ARCH_SUPPORTS_MSI=y 242CONFIG_ARCH_SUPPORTS_MSI=y
227# CONFIG_PCI_MSI is not set 243# CONFIG_PCI_MSI is not set
228CONFIG_PCI_LEGACY=y 244CONFIG_PCI_LEGACY=y
229CONFIG_PCI_DEBUG=y 245CONFIG_PCI_DEBUG=y
230# CONFIG_PCCARD is not set 246# CONFIG_PCCARD is not set
231# CONFIG_HOTPLUG_PCI is not set 247# CONFIG_HOTPLUG_PCI is not set
248# CONFIG_HAS_RAPIDIO is not set
232 249
233# 250#
234# Advanced setup 251# Advanced setup
@@ -238,11 +255,11 @@ CONFIG_PCI_DEBUG=y
238# 255#
239# Default settings for advanced configuration options are used 256# Default settings for advanced configuration options are used
240# 257#
241CONFIG_HIGHMEM_START=0xfe000000
242CONFIG_LOWMEM_SIZE=0x30000000 258CONFIG_LOWMEM_SIZE=0x30000000
259CONFIG_PAGE_OFFSET=0xc0000000
243CONFIG_KERNEL_START=0xc0000000 260CONFIG_KERNEL_START=0xc0000000
261CONFIG_PHYSICAL_START=0x00000000
244CONFIG_TASK_SIZE=0xc0000000 262CONFIG_TASK_SIZE=0xc0000000
245CONFIG_BOOT_LOAD=0x00800000
246 263
247# 264#
248# Networking 265# Networking
@@ -303,8 +320,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
303CONFIG_INET6_XFRM_MODE_BEET=y 320CONFIG_INET6_XFRM_MODE_BEET=y
304# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 321# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
305CONFIG_IPV6_SIT=y 322CONFIG_IPV6_SIT=y
323CONFIG_IPV6_NDISC_NODETYPE=y
306# CONFIG_IPV6_TUNNEL is not set 324# CONFIG_IPV6_TUNNEL is not set
307# CONFIG_IPV6_MULTIPLE_TABLES is not set 325# CONFIG_IPV6_MULTIPLE_TABLES is not set
326# CONFIG_IPV6_MROUTE is not set
308# CONFIG_NETWORK_SECMARK is not set 327# CONFIG_NETWORK_SECMARK is not set
309# CONFIG_NETFILTER is not set 328# CONFIG_NETFILTER is not set
310# CONFIG_IP_DCCP is not set 329# CONFIG_IP_DCCP is not set
@@ -446,6 +465,7 @@ CONFIG_MTD_NAND_FSL_ELBC=y
446# 465#
447# CONFIG_MTD_UBI is not set 466# CONFIG_MTD_UBI is not set
448CONFIG_OF_DEVICE=y 467CONFIG_OF_DEVICE=y
468CONFIG_OF_I2C=y
449# CONFIG_PARPORT is not set 469# CONFIG_PARPORT is not set
450CONFIG_BLK_DEV=y 470CONFIG_BLK_DEV=y
451# CONFIG_BLK_DEV_FD is not set 471# CONFIG_BLK_DEV_FD is not set
@@ -504,6 +524,7 @@ CONFIG_CHR_DEV_SG=y
504# CONFIG_SCSI_CONSTANTS is not set 524# CONFIG_SCSI_CONSTANTS is not set
505# CONFIG_SCSI_LOGGING is not set 525# CONFIG_SCSI_LOGGING is not set
506# CONFIG_SCSI_SCAN_ASYNC is not set 526# CONFIG_SCSI_SCAN_ASYNC is not set
527CONFIG_SCSI_WAIT_SCAN=m
507 528
508# 529#
509# SCSI Transports 530# SCSI Transports
@@ -553,7 +574,11 @@ CONFIG_SCSI_LOWLEVEL=y
553# CONFIG_SCSI_SRP is not set 574# CONFIG_SCSI_SRP is not set
554CONFIG_ATA=y 575CONFIG_ATA=y
555# CONFIG_ATA_NONSTANDARD is not set 576# CONFIG_ATA_NONSTANDARD is not set
577CONFIG_SATA_PMP=y
556CONFIG_SATA_AHCI=y 578CONFIG_SATA_AHCI=y
579# CONFIG_SATA_SIL24 is not set
580# CONFIG_SATA_FSL is not set
581CONFIG_ATA_SFF=y
557# CONFIG_SATA_SVW is not set 582# CONFIG_SATA_SVW is not set
558# CONFIG_ATA_PIIX is not set 583# CONFIG_ATA_PIIX is not set
559# CONFIG_SATA_MV is not set 584# CONFIG_SATA_MV is not set
@@ -563,13 +588,11 @@ CONFIG_SATA_AHCI=y
563# CONFIG_SATA_PROMISE is not set 588# CONFIG_SATA_PROMISE is not set
564# CONFIG_SATA_SX4 is not set 589# CONFIG_SATA_SX4 is not set
565# CONFIG_SATA_SIL is not set 590# CONFIG_SATA_SIL is not set
566# CONFIG_SATA_SIL24 is not set
567# CONFIG_SATA_SIS is not set 591# CONFIG_SATA_SIS is not set
568# CONFIG_SATA_ULI is not set 592# CONFIG_SATA_ULI is not set
569# CONFIG_SATA_VIA is not set 593# CONFIG_SATA_VIA is not set
570# CONFIG_SATA_VITESSE is not set 594# CONFIG_SATA_VITESSE is not set
571# CONFIG_SATA_INIC162X is not set 595# CONFIG_SATA_INIC162X is not set
572# CONFIG_SATA_FSL is not set
573CONFIG_PATA_ALI=y 596CONFIG_PATA_ALI=y
574# CONFIG_PATA_AMD is not set 597# CONFIG_PATA_AMD is not set
575# CONFIG_PATA_ARTOP is not set 598# CONFIG_PATA_ARTOP is not set
@@ -609,6 +632,7 @@ CONFIG_PATA_ALI=y
609# CONFIG_PATA_VIA is not set 632# CONFIG_PATA_VIA is not set
610# CONFIG_PATA_WINBOND is not set 633# CONFIG_PATA_WINBOND is not set
611# CONFIG_PATA_PLATFORM is not set 634# CONFIG_PATA_PLATFORM is not set
635# CONFIG_PATA_SCH is not set
612# CONFIG_MD is not set 636# CONFIG_MD is not set
613# CONFIG_FUSION is not set 637# CONFIG_FUSION is not set
614 638
@@ -628,25 +652,9 @@ CONFIG_DUMMY=y
628# CONFIG_TUN is not set 652# CONFIG_TUN is not set
629# CONFIG_VETH is not set 653# CONFIG_VETH is not set
630# CONFIG_ARCNET is not set 654# CONFIG_ARCNET is not set
631CONFIG_PHYLIB=y 655# CONFIG_PHYLIB is not set
632
633#
634# MII PHY device drivers
635#
636# CONFIG_MARVELL_PHY is not set
637# CONFIG_DAVICOM_PHY is not set
638# CONFIG_QSEMI_PHY is not set
639# CONFIG_LXT_PHY is not set
640# CONFIG_CICADA_PHY is not set
641# CONFIG_VITESSE_PHY is not set
642# CONFIG_SMSC_PHY is not set
643# CONFIG_BROADCOM_PHY is not set
644# CONFIG_ICPLUS_PHY is not set
645# CONFIG_REALTEK_PHY is not set
646# CONFIG_FIXED_PHY is not set
647# CONFIG_MDIO_BITBANG is not set
648CONFIG_NET_ETHERNET=y 656CONFIG_NET_ETHERNET=y
649CONFIG_MII=y 657# CONFIG_MII is not set
650# CONFIG_HAPPYMEAL is not set 658# CONFIG_HAPPYMEAL is not set
651# CONFIG_SUNGEM is not set 659# CONFIG_SUNGEM is not set
652# CONFIG_CASSINI is not set 660# CONFIG_CASSINI is not set
@@ -663,64 +671,10 @@ CONFIG_ULI526X=y
663# CONFIG_IBM_NEW_EMAC_RGMII is not set 671# CONFIG_IBM_NEW_EMAC_RGMII is not set
664# CONFIG_IBM_NEW_EMAC_TAH is not set 672# CONFIG_IBM_NEW_EMAC_TAH is not set
665# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 673# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
666CONFIG_NET_PCI=y 674# CONFIG_NET_PCI is not set
667# CONFIG_PCNET32 is not set
668# CONFIG_AMD8111_ETH is not set
669# CONFIG_ADAPTEC_STARFIRE is not set
670# CONFIG_B44 is not set 675# CONFIG_B44 is not set
671# CONFIG_FORCEDETH is not set 676# CONFIG_NETDEV_1000 is not set
672# CONFIG_EEPRO100 is not set 677# CONFIG_NETDEV_10000 is not set
673# CONFIG_E100 is not set
674# CONFIG_FEALNX is not set
675# CONFIG_NATSEMI is not set
676# CONFIG_NE2K_PCI is not set
677# CONFIG_8139CP is not set
678CONFIG_8139TOO=y
679CONFIG_8139TOO_PIO=y
680# CONFIG_8139TOO_TUNE_TWISTER is not set
681# CONFIG_8139TOO_8129 is not set
682# CONFIG_8139_OLD_RX_RESET is not set
683# CONFIG_R6040 is not set
684# CONFIG_SIS900 is not set
685# CONFIG_EPIC100 is not set
686# CONFIG_SUNDANCE is not set
687# CONFIG_TLAN is not set
688# CONFIG_VIA_RHINE is not set
689# CONFIG_SC92031 is not set
690CONFIG_NETDEV_1000=y
691# CONFIG_ACENIC is not set
692# CONFIG_DL2K is not set
693# CONFIG_E1000 is not set
694# CONFIG_E1000E is not set
695# CONFIG_E1000E_ENABLED is not set
696# CONFIG_IP1000 is not set
697# CONFIG_IGB is not set
698# CONFIG_NS83820 is not set
699# CONFIG_HAMACHI is not set
700# CONFIG_YELLOWFIN is not set
701# CONFIG_R8169 is not set
702# CONFIG_SIS190 is not set
703# CONFIG_SKGE is not set
704# CONFIG_SKY2 is not set
705# CONFIG_SK98LIN is not set
706# CONFIG_VIA_VELOCITY is not set
707# CONFIG_TIGON3 is not set
708# CONFIG_BNX2 is not set
709# CONFIG_GIANFAR is not set
710# CONFIG_QLA3XXX is not set
711# CONFIG_ATL1 is not set
712CONFIG_NETDEV_10000=y
713# CONFIG_CHELSIO_T1 is not set
714# CONFIG_CHELSIO_T3 is not set
715# CONFIG_IXGBE is not set
716# CONFIG_IXGB is not set
717# CONFIG_S2IO is not set
718# CONFIG_MYRI10GE is not set
719# CONFIG_NETXEN_NIC is not set
720# CONFIG_NIU is not set
721# CONFIG_MLX4_CORE is not set
722# CONFIG_TEHUTI is not set
723# CONFIG_BNX2X is not set
724# CONFIG_TR is not set 678# CONFIG_TR is not set
725 679
726# 680#
@@ -728,6 +682,7 @@ CONFIG_NETDEV_10000=y
728# 682#
729# CONFIG_WLAN_PRE80211 is not set 683# CONFIG_WLAN_PRE80211 is not set
730# CONFIG_WLAN_80211 is not set 684# CONFIG_WLAN_80211 is not set
685# CONFIG_IWLWIFI_LEDS is not set
731# CONFIG_WAN is not set 686# CONFIG_WAN is not set
732# CONFIG_FDDI is not set 687# CONFIG_FDDI is not set
733# CONFIG_HIPPI is not set 688# CONFIG_HIPPI is not set
@@ -783,6 +738,7 @@ CONFIG_VT=y
783CONFIG_VT_CONSOLE=y 738CONFIG_VT_CONSOLE=y
784CONFIG_HW_CONSOLE=y 739CONFIG_HW_CONSOLE=y
785# CONFIG_VT_HW_CONSOLE_BINDING is not set 740# CONFIG_VT_HW_CONSOLE_BINDING is not set
741CONFIG_DEVKMEM=y
786# CONFIG_SERIAL_NONSTANDARD is not set 742# CONFIG_SERIAL_NONSTANDARD is not set
787# CONFIG_NOZOMI is not set 743# CONFIG_NOZOMI is not set
788 744
@@ -824,13 +780,6 @@ CONFIG_I2C_BOARDINFO=y
824# CONFIG_I2C_CHARDEV is not set 780# CONFIG_I2C_CHARDEV is not set
825 781
826# 782#
827# I2C Algorithms
828#
829# CONFIG_I2C_ALGOBIT is not set
830# CONFIG_I2C_ALGOPCF is not set
831# CONFIG_I2C_ALGOPCA is not set
832
833#
834# I2C Hardware Bus support 783# I2C Hardware Bus support
835# 784#
836# CONFIG_I2C_ALI1535 is not set 785# CONFIG_I2C_ALI1535 is not set
@@ -852,9 +801,11 @@ CONFIG_I2C_MPC=y
852# CONFIG_I2C_SIS630 is not set 801# CONFIG_I2C_SIS630 is not set
853# CONFIG_I2C_SIS96X is not set 802# CONFIG_I2C_SIS96X is not set
854# CONFIG_I2C_TAOS_EVM is not set 803# CONFIG_I2C_TAOS_EVM is not set
804# CONFIG_I2C_STUB is not set
855# CONFIG_I2C_VIA is not set 805# CONFIG_I2C_VIA is not set
856# CONFIG_I2C_VIAPRO is not set 806# CONFIG_I2C_VIAPRO is not set
857# CONFIG_I2C_VOODOO3 is not set 807# CONFIG_I2C_VOODOO3 is not set
808# CONFIG_I2C_PCA_PLATFORM is not set
858 809
859# 810#
860# Miscellaneous I2C Chip support 811# Miscellaneous I2C Chip support
@@ -864,19 +815,13 @@ CONFIG_I2C_MPC=y
864# CONFIG_SENSORS_PCF8574 is not set 815# CONFIG_SENSORS_PCF8574 is not set
865# CONFIG_PCF8575 is not set 816# CONFIG_PCF8575 is not set
866# CONFIG_SENSORS_PCF8591 is not set 817# CONFIG_SENSORS_PCF8591 is not set
867# CONFIG_TPS65010 is not set
868# CONFIG_SENSORS_MAX6875 is not set 818# CONFIG_SENSORS_MAX6875 is not set
869# CONFIG_SENSORS_TSL2550 is not set 819# CONFIG_SENSORS_TSL2550 is not set
870# CONFIG_I2C_DEBUG_CORE is not set 820# CONFIG_I2C_DEBUG_CORE is not set
871# CONFIG_I2C_DEBUG_ALGO is not set 821# CONFIG_I2C_DEBUG_ALGO is not set
872# CONFIG_I2C_DEBUG_BUS is not set 822# CONFIG_I2C_DEBUG_BUS is not set
873# CONFIG_I2C_DEBUG_CHIP is not set 823# CONFIG_I2C_DEBUG_CHIP is not set
874
875#
876# SPI support
877#
878# CONFIG_SPI is not set 824# CONFIG_SPI is not set
879# CONFIG_SPI_MASTER is not set
880# CONFIG_W1 is not set 825# CONFIG_W1 is not set
881# CONFIG_POWER_SUPPLY is not set 826# CONFIG_POWER_SUPPLY is not set
882# CONFIG_HWMON is not set 827# CONFIG_HWMON is not set
@@ -893,12 +838,22 @@ CONFIG_SSB_POSSIBLE=y
893# Multifunction device drivers 838# Multifunction device drivers
894# 839#
895# CONFIG_MFD_SM501 is not set 840# CONFIG_MFD_SM501 is not set
841# CONFIG_HTC_PASIC3 is not set
896 842
897# 843#
898# Multimedia devices 844# Multimedia devices
899# 845#
846
847#
848# Multimedia core support
849#
900# CONFIG_VIDEO_DEV is not set 850# CONFIG_VIDEO_DEV is not set
901# CONFIG_DVB_CORE is not set 851# CONFIG_DVB_CORE is not set
852# CONFIG_VIDEO_MEDIA is not set
853
854#
855# Multimedia drivers
856#
902CONFIG_DAB=y 857CONFIG_DAB=y
903 858
904# 859#
@@ -908,7 +863,56 @@ CONFIG_DAB=y
908# CONFIG_DRM is not set 863# CONFIG_DRM is not set
909# CONFIG_VGASTATE is not set 864# CONFIG_VGASTATE is not set
910CONFIG_VIDEO_OUTPUT_CONTROL=y 865CONFIG_VIDEO_OUTPUT_CONTROL=y
911# CONFIG_FB is not set 866CONFIG_FB=y
867# CONFIG_FIRMWARE_EDID is not set
868# CONFIG_FB_DDC is not set
869CONFIG_FB_CFB_FILLRECT=y
870CONFIG_FB_CFB_COPYAREA=y
871CONFIG_FB_CFB_IMAGEBLIT=y
872# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
873# CONFIG_FB_SYS_FILLRECT is not set
874# CONFIG_FB_SYS_COPYAREA is not set
875# CONFIG_FB_SYS_IMAGEBLIT is not set
876# CONFIG_FB_FOREIGN_ENDIAN is not set
877# CONFIG_FB_SYS_FOPS is not set
878# CONFIG_FB_SVGALIB is not set
879# CONFIG_FB_MACMODES is not set
880# CONFIG_FB_BACKLIGHT is not set
881# CONFIG_FB_MODE_HELPERS is not set
882# CONFIG_FB_TILEBLITTING is not set
883
884#
885# Frame buffer hardware drivers
886#
887# CONFIG_FB_CIRRUS is not set
888# CONFIG_FB_PM2 is not set
889# CONFIG_FB_CYBER2000 is not set
890# CONFIG_FB_OF is not set
891# CONFIG_FB_CT65550 is not set
892# CONFIG_FB_ASILIANT is not set
893# CONFIG_FB_IMSTT is not set
894# CONFIG_FB_VGA16 is not set
895# CONFIG_FB_S1D13XXX is not set
896# CONFIG_FB_NVIDIA is not set
897# CONFIG_FB_RIVA is not set
898# CONFIG_FB_MATROX is not set
899# CONFIG_FB_RADEON is not set
900# CONFIG_FB_ATY128 is not set
901# CONFIG_FB_ATY is not set
902# CONFIG_FB_S3 is not set
903# CONFIG_FB_SAVAGE is not set
904# CONFIG_FB_SIS is not set
905# CONFIG_FB_NEOMAGIC is not set
906# CONFIG_FB_KYRO is not set
907# CONFIG_FB_3DFX is not set
908# CONFIG_FB_VOODOO1 is not set
909# CONFIG_FB_VT8623 is not set
910# CONFIG_FB_TRIDENT is not set
911# CONFIG_FB_ARK is not set
912# CONFIG_FB_PM3 is not set
913CONFIG_FB_FSL_DIU=y
914# CONFIG_FB_IBM_GXT4500 is not set
915# CONFIG_FB_VIRTUAL is not set
912# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 916# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
913 917
914# 918#
@@ -922,6 +926,8 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
922CONFIG_VGA_CONSOLE=y 926CONFIG_VGA_CONSOLE=y
923# CONFIG_VGACON_SOFT_SCROLLBACK is not set 927# CONFIG_VGACON_SOFT_SCROLLBACK is not set
924CONFIG_DUMMY_CONSOLE=y 928CONFIG_DUMMY_CONSOLE=y
929# CONFIG_FRAMEBUFFER_CONSOLE is not set
930# CONFIG_LOGO is not set
925 931
926# 932#
927# Sound 933# Sound
@@ -938,7 +944,7 @@ CONFIG_SND_PCM=y
938CONFIG_SND_OSSEMUL=y 944CONFIG_SND_OSSEMUL=y
939CONFIG_SND_MIXER_OSS=y 945CONFIG_SND_MIXER_OSS=y
940CONFIG_SND_PCM_OSS=y 946CONFIG_SND_PCM_OSS=y
941# CONFIG_SND_PCM_OSS_PLUGINS is not set 947CONFIG_SND_PCM_OSS_PLUGINS=y
942# CONFIG_SND_DYNAMIC_MINORS is not set 948# CONFIG_SND_DYNAMIC_MINORS is not set
943# CONFIG_SND_SUPPORT_OLD_API is not set 949# CONFIG_SND_SUPPORT_OLD_API is not set
944CONFIG_SND_VERBOSE_PROCFS=y 950CONFIG_SND_VERBOSE_PROCFS=y
@@ -965,6 +971,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
965# CONFIG_SND_AU8810 is not set 971# CONFIG_SND_AU8810 is not set
966# CONFIG_SND_AU8820 is not set 972# CONFIG_SND_AU8820 is not set
967# CONFIG_SND_AU8830 is not set 973# CONFIG_SND_AU8830 is not set
974# CONFIG_SND_AW2 is not set
968# CONFIG_SND_AZT3328 is not set 975# CONFIG_SND_AZT3328 is not set
969# CONFIG_SND_BT87X is not set 976# CONFIG_SND_BT87X is not set
970# CONFIG_SND_CA0106 is not set 977# CONFIG_SND_CA0106 is not set
@@ -1031,14 +1038,14 @@ CONFIG_SND_VERBOSE_PROCFS=y
1031CONFIG_SND_SOC=y 1038CONFIG_SND_SOC=y
1032 1039
1033# 1040#
1034# SoC Audio support for SuperH
1035#
1036
1037#
1038# ALSA SoC audio for Freescale SOCs 1041# ALSA SoC audio for Freescale SOCs
1039# 1042#
1040CONFIG_SND_SOC_MPC8610=y 1043CONFIG_SND_SOC_MPC8610=y
1041CONFIG_SND_SOC_MPC8610_HPCD=y 1044CONFIG_SND_SOC_MPC8610_HPCD=y
1045
1046#
1047# SoC Audio for the Texas Instruments OMAP
1048#
1042CONFIG_SND_SOC_CS4270=y 1049CONFIG_SND_SOC_CS4270=y
1043CONFIG_SND_SOC_CS4270_VD33_ERRATA=y 1050CONFIG_SND_SOC_CS4270_VD33_ERRATA=y
1044 1051
@@ -1055,6 +1062,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
1055CONFIG_USB_ARCH_HAS_OHCI=y 1062CONFIG_USB_ARCH_HAS_OHCI=y
1056CONFIG_USB_ARCH_HAS_EHCI=y 1063CONFIG_USB_ARCH_HAS_EHCI=y
1057# CONFIG_USB is not set 1064# CONFIG_USB is not set
1065# CONFIG_USB_OTG_WHITELIST is not set
1066# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1058 1067
1059# 1068#
1060# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1069# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1063,14 +1072,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
1063# CONFIG_MMC is not set 1072# CONFIG_MMC is not set
1064# CONFIG_MEMSTICK is not set 1073# CONFIG_MEMSTICK is not set
1065# CONFIG_NEW_LEDS is not set 1074# CONFIG_NEW_LEDS is not set
1075# CONFIG_ACCESSIBILITY is not set
1066# CONFIG_INFINIBAND is not set 1076# CONFIG_INFINIBAND is not set
1067# CONFIG_EDAC is not set 1077# CONFIG_EDAC is not set
1068# CONFIG_RTC_CLASS is not set 1078# CONFIG_RTC_CLASS is not set
1069# CONFIG_DMADEVICES is not set 1079# CONFIG_DMADEVICES is not set
1070
1071#
1072# Userspace I/O
1073#
1074# CONFIG_UIO is not set 1080# CONFIG_UIO is not set
1075 1081
1076# 1082#
@@ -1090,7 +1096,6 @@ CONFIG_FS_MBCACHE=y
1090# CONFIG_JFS_FS is not set 1096# CONFIG_JFS_FS is not set
1091# CONFIG_FS_POSIX_ACL is not set 1097# CONFIG_FS_POSIX_ACL is not set
1092# CONFIG_XFS_FS is not set 1098# CONFIG_XFS_FS is not set
1093# CONFIG_GFS2_FS is not set
1094# CONFIG_OCFS2_FS is not set 1099# CONFIG_OCFS2_FS is not set
1095# CONFIG_DNOTIFY is not set 1100# CONFIG_DNOTIFY is not set
1096# CONFIG_INOTIFY is not set 1101# CONFIG_INOTIFY is not set
@@ -1134,6 +1139,7 @@ CONFIG_TMPFS=y
1134# CONFIG_BEFS_FS is not set 1139# CONFIG_BEFS_FS is not set
1135# CONFIG_BFS_FS is not set 1140# CONFIG_BFS_FS is not set
1136# CONFIG_EFS_FS is not set 1141# CONFIG_EFS_FS is not set
1142# CONFIG_JFFS2_FS is not set
1137# CONFIG_CRAMFS is not set 1143# CONFIG_CRAMFS is not set
1138# CONFIG_VXFS_FS is not set 1144# CONFIG_VXFS_FS is not set
1139# CONFIG_MINIX_FS is not set 1145# CONFIG_MINIX_FS is not set
@@ -1147,10 +1153,9 @@ CONFIG_NFS_FS=y
1147CONFIG_NFS_V3=y 1153CONFIG_NFS_V3=y
1148# CONFIG_NFS_V3_ACL is not set 1154# CONFIG_NFS_V3_ACL is not set
1149# CONFIG_NFS_V4 is not set 1155# CONFIG_NFS_V4 is not set
1150# CONFIG_NFS_DIRECTIO is not set
1151CONFIG_NFSD=y 1156CONFIG_NFSD=y
1152# CONFIG_NFSD_V3 is not set 1157# CONFIG_NFSD_V3 is not set
1153CONFIG_NFSD_TCP=y 1158# CONFIG_NFSD_V4 is not set
1154CONFIG_ROOT_NFS=y 1159CONFIG_ROOT_NFS=y
1155CONFIG_LOCKD=y 1160CONFIG_LOCKD=y
1156CONFIG_LOCKD_V4=y 1161CONFIG_LOCKD_V4=y
@@ -1234,6 +1239,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1234# Library routines 1239# Library routines
1235# 1240#
1236CONFIG_BITREVERSE=y 1241CONFIG_BITREVERSE=y
1242# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1237# CONFIG_CRC_CCITT is not set 1243# CONFIG_CRC_CCITT is not set
1238# CONFIG_CRC16 is not set 1244# CONFIG_CRC16 is not set
1239# CONFIG_CRC_ITU_T is not set 1245# CONFIG_CRC_ITU_T is not set
@@ -1244,6 +1250,7 @@ CONFIG_PLIST=y
1244CONFIG_HAS_IOMEM=y 1250CONFIG_HAS_IOMEM=y
1245CONFIG_HAS_IOPORT=y 1251CONFIG_HAS_IOPORT=y
1246CONFIG_HAS_DMA=y 1252CONFIG_HAS_DMA=y
1253CONFIG_HAVE_LMB=y
1247 1254
1248# 1255#
1249# Kernel hacking 1256# Kernel hacking
@@ -1251,6 +1258,7 @@ CONFIG_HAS_DMA=y
1251# CONFIG_PRINTK_TIME is not set 1258# CONFIG_PRINTK_TIME is not set
1252CONFIG_ENABLE_WARN_DEPRECATED=y 1259CONFIG_ENABLE_WARN_DEPRECATED=y
1253CONFIG_ENABLE_MUST_CHECK=y 1260CONFIG_ENABLE_MUST_CHECK=y
1261CONFIG_FRAME_WARN=1024
1254# CONFIG_MAGIC_SYSRQ is not set 1262# CONFIG_MAGIC_SYSRQ is not set
1255# CONFIG_UNUSED_SYMBOLS is not set 1263# CONFIG_UNUSED_SYMBOLS is not set
1256# CONFIG_DEBUG_FS is not set 1264# CONFIG_DEBUG_FS is not set
@@ -1261,6 +1269,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1261CONFIG_SCHED_DEBUG=y 1269CONFIG_SCHED_DEBUG=y
1262# CONFIG_SCHEDSTATS is not set 1270# CONFIG_SCHEDSTATS is not set
1263# CONFIG_TIMER_STATS is not set 1271# CONFIG_TIMER_STATS is not set
1272# CONFIG_DEBUG_OBJECTS is not set
1264# CONFIG_SLUB_DEBUG_ON is not set 1273# CONFIG_SLUB_DEBUG_ON is not set
1265# CONFIG_SLUB_STATS is not set 1274# CONFIG_SLUB_STATS is not set
1266# CONFIG_DEBUG_RT_MUTEXES is not set 1275# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1274,9 +1283,11 @@ CONFIG_SCHED_DEBUG=y
1274CONFIG_DEBUG_BUGVERBOSE=y 1283CONFIG_DEBUG_BUGVERBOSE=y
1275CONFIG_DEBUG_INFO=y 1284CONFIG_DEBUG_INFO=y
1276# CONFIG_DEBUG_VM is not set 1285# CONFIG_DEBUG_VM is not set
1286# CONFIG_DEBUG_WRITECOUNT is not set
1277# CONFIG_DEBUG_LIST is not set 1287# CONFIG_DEBUG_LIST is not set
1278# CONFIG_DEBUG_SG is not set 1288# CONFIG_DEBUG_SG is not set
1279# CONFIG_BOOT_PRINTK_DELAY is not set 1289# CONFIG_BOOT_PRINTK_DELAY is not set
1290# CONFIG_RCU_TORTURE_TEST is not set
1280# CONFIG_BACKTRACE_SELF_TEST is not set 1291# CONFIG_BACKTRACE_SELF_TEST is not set
1281# CONFIG_FAULT_INJECTION is not set 1292# CONFIG_FAULT_INJECTION is not set
1282# CONFIG_SAMPLES is not set 1293# CONFIG_SAMPLES is not set
@@ -1284,6 +1295,7 @@ CONFIG_DEBUG_INFO=y
1284# CONFIG_DEBUG_STACK_USAGE is not set 1295# CONFIG_DEBUG_STACK_USAGE is not set
1285# CONFIG_DEBUG_PAGEALLOC is not set 1296# CONFIG_DEBUG_PAGEALLOC is not set
1286# CONFIG_DEBUGGER is not set 1297# CONFIG_DEBUGGER is not set
1298# CONFIG_IRQSTACKS is not set
1287# CONFIG_BDI_SWITCH is not set 1299# CONFIG_BDI_SWITCH is not set
1288# CONFIG_PPC_EARLY_DEBUG is not set 1300# CONFIG_PPC_EARLY_DEBUG is not set
1289 1301
@@ -1294,48 +1306,80 @@ CONFIG_DEBUG_INFO=y
1294# CONFIG_SECURITY is not set 1306# CONFIG_SECURITY is not set
1295# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1307# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1296CONFIG_CRYPTO=y 1308CONFIG_CRYPTO=y
1297# CONFIG_CRYPTO_SEQIV is not set 1309
1310#
1311# Crypto core or helper
1312#
1298# CONFIG_CRYPTO_MANAGER is not set 1313# CONFIG_CRYPTO_MANAGER is not set
1314# CONFIG_CRYPTO_GF128MUL is not set
1315# CONFIG_CRYPTO_NULL is not set
1316# CONFIG_CRYPTO_CRYPTD is not set
1317# CONFIG_CRYPTO_AUTHENC is not set
1318# CONFIG_CRYPTO_TEST is not set
1319
1320#
1321# Authenticated Encryption with Associated Data
1322#
1323# CONFIG_CRYPTO_CCM is not set
1324# CONFIG_CRYPTO_GCM is not set
1325# CONFIG_CRYPTO_SEQIV is not set
1326
1327#
1328# Block modes
1329#
1330# CONFIG_CRYPTO_CBC is not set
1331# CONFIG_CRYPTO_CTR is not set
1332# CONFIG_CRYPTO_CTS is not set
1333# CONFIG_CRYPTO_ECB is not set
1334# CONFIG_CRYPTO_LRW is not set
1335# CONFIG_CRYPTO_PCBC is not set
1336# CONFIG_CRYPTO_XTS is not set
1337
1338#
1339# Hash modes
1340#
1299# CONFIG_CRYPTO_HMAC is not set 1341# CONFIG_CRYPTO_HMAC is not set
1300# CONFIG_CRYPTO_XCBC is not set 1342# CONFIG_CRYPTO_XCBC is not set
1301# CONFIG_CRYPTO_NULL is not set 1343
1344#
1345# Digest
1346#
1347# CONFIG_CRYPTO_CRC32C is not set
1302# CONFIG_CRYPTO_MD4 is not set 1348# CONFIG_CRYPTO_MD4 is not set
1303# CONFIG_CRYPTO_MD5 is not set 1349# CONFIG_CRYPTO_MD5 is not set
1350# CONFIG_CRYPTO_MICHAEL_MIC is not set
1304# CONFIG_CRYPTO_SHA1 is not set 1351# CONFIG_CRYPTO_SHA1 is not set
1305# CONFIG_CRYPTO_SHA256 is not set 1352# CONFIG_CRYPTO_SHA256 is not set
1306# CONFIG_CRYPTO_SHA512 is not set 1353# CONFIG_CRYPTO_SHA512 is not set
1307# CONFIG_CRYPTO_WP512 is not set
1308# CONFIG_CRYPTO_TGR192 is not set 1354# CONFIG_CRYPTO_TGR192 is not set
1309# CONFIG_CRYPTO_GF128MUL is not set 1355# CONFIG_CRYPTO_WP512 is not set
1310# CONFIG_CRYPTO_ECB is not set 1356
1311# CONFIG_CRYPTO_CBC is not set 1357#
1312# CONFIG_CRYPTO_PCBC is not set 1358# Ciphers
1313# CONFIG_CRYPTO_LRW is not set 1359#
1314# CONFIG_CRYPTO_XTS is not set
1315# CONFIG_CRYPTO_CTR is not set
1316# CONFIG_CRYPTO_GCM is not set
1317# CONFIG_CRYPTO_CCM is not set
1318# CONFIG_CRYPTO_CRYPTD is not set
1319# CONFIG_CRYPTO_DES is not set
1320# CONFIG_CRYPTO_FCRYPT is not set
1321# CONFIG_CRYPTO_BLOWFISH is not set
1322# CONFIG_CRYPTO_TWOFISH is not set
1323# CONFIG_CRYPTO_SERPENT is not set
1324# CONFIG_CRYPTO_AES is not set 1360# CONFIG_CRYPTO_AES is not set
1361# CONFIG_CRYPTO_ANUBIS is not set
1362# CONFIG_CRYPTO_ARC4 is not set
1363# CONFIG_CRYPTO_BLOWFISH is not set
1364# CONFIG_CRYPTO_CAMELLIA is not set
1325# CONFIG_CRYPTO_CAST5 is not set 1365# CONFIG_CRYPTO_CAST5 is not set
1326# CONFIG_CRYPTO_CAST6 is not set 1366# CONFIG_CRYPTO_CAST6 is not set
1327# CONFIG_CRYPTO_TEA is not set 1367# CONFIG_CRYPTO_DES is not set
1328# CONFIG_CRYPTO_ARC4 is not set 1368# CONFIG_CRYPTO_FCRYPT is not set
1329# CONFIG_CRYPTO_KHAZAD is not set 1369# CONFIG_CRYPTO_KHAZAD is not set
1330# CONFIG_CRYPTO_ANUBIS is not set
1331# CONFIG_CRYPTO_SEED is not set
1332# CONFIG_CRYPTO_SALSA20 is not set 1370# CONFIG_CRYPTO_SALSA20 is not set
1371# CONFIG_CRYPTO_SEED is not set
1372# CONFIG_CRYPTO_SERPENT is not set
1373# CONFIG_CRYPTO_TEA is not set
1374# CONFIG_CRYPTO_TWOFISH is not set
1375
1376#
1377# Compression
1378#
1333# CONFIG_CRYPTO_DEFLATE is not set 1379# CONFIG_CRYPTO_DEFLATE is not set
1334# CONFIG_CRYPTO_MICHAEL_MIC is not set
1335# CONFIG_CRYPTO_CRC32C is not set
1336# CONFIG_CRYPTO_CAMELLIA is not set
1337# CONFIG_CRYPTO_AUTHENC is not set
1338# CONFIG_CRYPTO_LZO is not set 1380# CONFIG_CRYPTO_LZO is not set
1339CONFIG_CRYPTO_HW=y 1381CONFIG_CRYPTO_HW=y
1340# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1382# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1341# CONFIG_PPC_CLOCK is not set 1383# CONFIG_PPC_CLOCK is not set
1384CONFIG_PPC_LIB_RHEAP=y
1385# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/mpc8641_hpcn_defconfig b/arch/powerpc/configs/mpc8641_hpcn_defconfig
index d01dcdb70bd7..4a8171507391 100644
--- a/arch/powerpc/configs/mpc8641_hpcn_defconfig
+++ b/arch/powerpc/configs/mpc8641_hpcn_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:37:11 2008 4# Mon Jun 9 08:52:15 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -90,6 +92,7 @@ CONFIG_INITRAMFS_SOURCE=""
90CONFIG_SYSCTL=y 92CONFIG_SYSCTL=y
91CONFIG_EMBEDDED=y 93CONFIG_EMBEDDED=y
92CONFIG_SYSCTL_SYSCALL=y 94CONFIG_SYSCTL_SYSCALL=y
95CONFIG_SYSCTL_SYSCALL_CHECK=y
93CONFIG_KALLSYMS=y 96CONFIG_KALLSYMS=y
94CONFIG_KALLSYMS_ALL=y 97CONFIG_KALLSYMS_ALL=y
95CONFIG_KALLSYMS_EXTRA_PASS=y 98CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -117,12 +120,14 @@ CONFIG_HAVE_OPROFILE=y
117# CONFIG_KPROBES is not set 120# CONFIG_KPROBES is not set
118CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
123# CONFIG_HAVE_DMA_ATTRS is not set
120CONFIG_PROC_PAGE_MONITOR=y 124CONFIG_PROC_PAGE_MONITOR=y
121CONFIG_SLABINFO=y 125CONFIG_SLABINFO=y
122CONFIG_RT_MUTEXES=y 126CONFIG_RT_MUTEXES=y
123# CONFIG_TINY_SHMEM is not set 127# CONFIG_TINY_SHMEM is not set
124CONFIG_BASE_SMALL=0 128CONFIG_BASE_SMALL=0
125CONFIG_MODULES=y 129CONFIG_MODULES=y
130# CONFIG_MODULE_FORCE_LOAD is not set
126CONFIG_MODULE_UNLOAD=y 131CONFIG_MODULE_UNLOAD=y
127CONFIG_MODULE_FORCE_UNLOAD=y 132CONFIG_MODULE_FORCE_UNLOAD=y
128CONFIG_MODVERSIONS=y 133CONFIG_MODVERSIONS=y
@@ -162,6 +167,7 @@ CONFIG_PPC_86xx=y
162# CONFIG_PPC_CELL_NATIVE is not set 167# CONFIG_PPC_CELL_NATIVE is not set
163# CONFIG_PQ2ADS is not set 168# CONFIG_PQ2ADS is not set
164CONFIG_MPC8641_HPCN=y 169CONFIG_MPC8641_HPCN=y
170# CONFIG_SBC8641D is not set
165# CONFIG_MPC8610_HPCD is not set 171# CONFIG_MPC8610_HPCD is not set
166CONFIG_MPC8641=y 172CONFIG_MPC8641=y
167# CONFIG_IPIC is not set 173# CONFIG_IPIC is not set
@@ -211,11 +217,13 @@ CONFIG_FLATMEM=y
211CONFIG_FLAT_NODE_MEM_MAP=y 217CONFIG_FLAT_NODE_MEM_MAP=y
212# CONFIG_SPARSEMEM_STATIC is not set 218# CONFIG_SPARSEMEM_STATIC is not set
213# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 219# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
220CONFIG_PAGEFLAGS_EXTENDED=y
214CONFIG_SPLIT_PTLOCK_CPUS=4 221CONFIG_SPLIT_PTLOCK_CPUS=4
215# CONFIG_RESOURCES_64BIT is not set 222# CONFIG_RESOURCES_64BIT is not set
216CONFIG_ZONE_DMA_FLAG=1 223CONFIG_ZONE_DMA_FLAG=1
217CONFIG_BOUNCE=y 224CONFIG_BOUNCE=y
218CONFIG_VIRT_TO_BUS=y 225CONFIG_VIRT_TO_BUS=y
226CONFIG_FORCE_MAX_ZONEORDER=11
219CONFIG_PROC_DEVICETREE=y 227CONFIG_PROC_DEVICETREE=y
220# CONFIG_CMDLINE_BOOL is not set 228# CONFIG_CMDLINE_BOOL is not set
221# CONFIG_PM is not set 229# CONFIG_PM is not set
@@ -240,6 +248,8 @@ CONFIG_PCI_LEGACY=y
240# CONFIG_PCI_DEBUG is not set 248# CONFIG_PCI_DEBUG is not set
241# CONFIG_PCCARD is not set 249# CONFIG_PCCARD is not set
242# CONFIG_HOTPLUG_PCI is not set 250# CONFIG_HOTPLUG_PCI is not set
251CONFIG_HAS_RAPIDIO=y
252# CONFIG_RAPIDIO is not set
243 253
244# 254#
245# Advanced setup 255# Advanced setup
@@ -249,11 +259,11 @@ CONFIG_PCI_LEGACY=y
249# 259#
250# Default settings for advanced configuration options are used 260# Default settings for advanced configuration options are used
251# 261#
252CONFIG_HIGHMEM_START=0xfe000000
253CONFIG_LOWMEM_SIZE=0x30000000 262CONFIG_LOWMEM_SIZE=0x30000000
263CONFIG_PAGE_OFFSET=0xc0000000
254CONFIG_KERNEL_START=0xc0000000 264CONFIG_KERNEL_START=0xc0000000
265CONFIG_PHYSICAL_START=0x00000000
255CONFIG_TASK_SIZE=0xc0000000 266CONFIG_TASK_SIZE=0xc0000000
256CONFIG_BOOT_LOAD=0x00800000
257 267
258# 268#
259# Networking 269# Networking
@@ -324,8 +334,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
324CONFIG_INET6_XFRM_MODE_BEET=y 334CONFIG_INET6_XFRM_MODE_BEET=y
325# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 335# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
326CONFIG_IPV6_SIT=y 336CONFIG_IPV6_SIT=y
337CONFIG_IPV6_NDISC_NODETYPE=y
327# CONFIG_IPV6_TUNNEL is not set 338# CONFIG_IPV6_TUNNEL is not set
328# CONFIG_IPV6_MULTIPLE_TABLES is not set 339# CONFIG_IPV6_MULTIPLE_TABLES is not set
340# CONFIG_IPV6_MROUTE is not set
329# CONFIG_NETWORK_SECMARK is not set 341# CONFIG_NETWORK_SECMARK is not set
330# CONFIG_NETFILTER is not set 342# CONFIG_NETFILTER is not set
331# CONFIG_IP_DCCP is not set 343# CONFIG_IP_DCCP is not set
@@ -387,6 +399,7 @@ CONFIG_FW_LOADER=y
387# CONFIG_CONNECTOR is not set 399# CONFIG_CONNECTOR is not set
388# CONFIG_MTD is not set 400# CONFIG_MTD is not set
389CONFIG_OF_DEVICE=y 401CONFIG_OF_DEVICE=y
402CONFIG_OF_I2C=y
390# CONFIG_PARPORT is not set 403# CONFIG_PARPORT is not set
391CONFIG_BLK_DEV=y 404CONFIG_BLK_DEV=y
392# CONFIG_BLK_DEV_FD is not set 405# CONFIG_BLK_DEV_FD is not set
@@ -493,7 +506,11 @@ CONFIG_SCSI_LOWLEVEL=y
493# CONFIG_SCSI_SRP is not set 506# CONFIG_SCSI_SRP is not set
494CONFIG_ATA=y 507CONFIG_ATA=y
495# CONFIG_ATA_NONSTANDARD is not set 508# CONFIG_ATA_NONSTANDARD is not set
509CONFIG_SATA_PMP=y
496CONFIG_SATA_AHCI=y 510CONFIG_SATA_AHCI=y
511# CONFIG_SATA_SIL24 is not set
512# CONFIG_SATA_FSL is not set
513CONFIG_ATA_SFF=y
497# CONFIG_SATA_SVW is not set 514# CONFIG_SATA_SVW is not set
498# CONFIG_ATA_PIIX is not set 515# CONFIG_ATA_PIIX is not set
499# CONFIG_SATA_MV is not set 516# CONFIG_SATA_MV is not set
@@ -503,13 +520,11 @@ CONFIG_SATA_AHCI=y
503# CONFIG_SATA_PROMISE is not set 520# CONFIG_SATA_PROMISE is not set
504# CONFIG_SATA_SX4 is not set 521# CONFIG_SATA_SX4 is not set
505# CONFIG_SATA_SIL is not set 522# CONFIG_SATA_SIL is not set
506# CONFIG_SATA_SIL24 is not set
507# CONFIG_SATA_SIS is not set 523# CONFIG_SATA_SIS is not set
508# CONFIG_SATA_ULI is not set 524# CONFIG_SATA_ULI is not set
509# CONFIG_SATA_VIA is not set 525# CONFIG_SATA_VIA is not set
510# CONFIG_SATA_VITESSE is not set 526# CONFIG_SATA_VITESSE is not set
511# CONFIG_SATA_INIC162X is not set 527# CONFIG_SATA_INIC162X is not set
512# CONFIG_SATA_FSL is not set
513CONFIG_PATA_ALI=y 528CONFIG_PATA_ALI=y
514# CONFIG_PATA_AMD is not set 529# CONFIG_PATA_AMD is not set
515# CONFIG_PATA_ARTOP is not set 530# CONFIG_PATA_ARTOP is not set
@@ -549,6 +564,7 @@ CONFIG_PATA_ALI=y
549# CONFIG_PATA_VIA is not set 564# CONFIG_PATA_VIA is not set
550# CONFIG_PATA_WINBOND is not set 565# CONFIG_PATA_WINBOND is not set
551# CONFIG_PATA_PLATFORM is not set 566# CONFIG_PATA_PLATFORM is not set
567# CONFIG_PATA_SCH is not set
552# CONFIG_MD is not set 568# CONFIG_MD is not set
553# CONFIG_FUSION is not set 569# CONFIG_FUSION is not set
554 570
@@ -614,7 +630,6 @@ CONFIG_NETDEV_1000=y
614# CONFIG_SIS190 is not set 630# CONFIG_SIS190 is not set
615# CONFIG_SKGE is not set 631# CONFIG_SKGE is not set
616# CONFIG_SKY2 is not set 632# CONFIG_SKY2 is not set
617# CONFIG_SK98LIN is not set
618# CONFIG_VIA_VELOCITY is not set 633# CONFIG_VIA_VELOCITY is not set
619# CONFIG_TIGON3 is not set 634# CONFIG_TIGON3 is not set
620# CONFIG_BNX2 is not set 635# CONFIG_BNX2 is not set
@@ -634,6 +649,7 @@ CONFIG_NETDEV_10000=y
634# CONFIG_MLX4_CORE is not set 649# CONFIG_MLX4_CORE is not set
635# CONFIG_TEHUTI is not set 650# CONFIG_TEHUTI is not set
636# CONFIG_BNX2X is not set 651# CONFIG_BNX2X is not set
652# CONFIG_SFC is not set
637# CONFIG_TR is not set 653# CONFIG_TR is not set
638 654
639# 655#
@@ -641,6 +657,7 @@ CONFIG_NETDEV_10000=y
641# 657#
642# CONFIG_WLAN_PRE80211 is not set 658# CONFIG_WLAN_PRE80211 is not set
643# CONFIG_WLAN_80211 is not set 659# CONFIG_WLAN_80211 is not set
660# CONFIG_IWLWIFI_LEDS is not set
644 661
645# 662#
646# USB Network Adapters 663# USB Network Adapters
@@ -705,6 +722,7 @@ CONFIG_VT=y
705CONFIG_VT_CONSOLE=y 722CONFIG_VT_CONSOLE=y
706CONFIG_HW_CONSOLE=y 723CONFIG_HW_CONSOLE=y
707# CONFIG_VT_HW_CONSOLE_BINDING is not set 724# CONFIG_VT_HW_CONSOLE_BINDING is not set
725CONFIG_DEVKMEM=y
708# CONFIG_SERIAL_NONSTANDARD is not set 726# CONFIG_SERIAL_NONSTANDARD is not set
709# CONFIG_NOZOMI is not set 727# CONFIG_NOZOMI is not set
710 728
@@ -736,7 +754,6 @@ CONFIG_LEGACY_PTY_COUNT=256
736# CONFIG_IPMI_HANDLER is not set 754# CONFIG_IPMI_HANDLER is not set
737# CONFIG_HW_RANDOM is not set 755# CONFIG_HW_RANDOM is not set
738CONFIG_NVRAM=y 756CONFIG_NVRAM=y
739# CONFIG_GEN_RTC is not set
740# CONFIG_R3964 is not set 757# CONFIG_R3964 is not set
741# CONFIG_APPLICOM is not set 758# CONFIG_APPLICOM is not set
742# CONFIG_RAW_DRIVER is not set 759# CONFIG_RAW_DRIVER is not set
@@ -747,13 +764,6 @@ CONFIG_I2C_BOARDINFO=y
747# CONFIG_I2C_CHARDEV is not set 764# CONFIG_I2C_CHARDEV is not set
748 765
749# 766#
750# I2C Algorithms
751#
752# CONFIG_I2C_ALGOBIT is not set
753# CONFIG_I2C_ALGOPCF is not set
754# CONFIG_I2C_ALGOPCA is not set
755
756#
757# I2C Hardware Bus support 767# I2C Hardware Bus support
758# 768#
759# CONFIG_I2C_ALI1535 is not set 769# CONFIG_I2C_ALI1535 is not set
@@ -780,6 +790,7 @@ CONFIG_I2C_MPC=y
780# CONFIG_I2C_VIA is not set 790# CONFIG_I2C_VIA is not set
781# CONFIG_I2C_VIAPRO is not set 791# CONFIG_I2C_VIAPRO is not set
782# CONFIG_I2C_VOODOO3 is not set 792# CONFIG_I2C_VOODOO3 is not set
793# CONFIG_I2C_PCA_PLATFORM is not set
783 794
784# 795#
785# Miscellaneous I2C Chip support 796# Miscellaneous I2C Chip support
@@ -789,19 +800,13 @@ CONFIG_SENSORS_EEPROM=y
789# CONFIG_SENSORS_PCF8574 is not set 800# CONFIG_SENSORS_PCF8574 is not set
790# CONFIG_PCF8575 is not set 801# CONFIG_PCF8575 is not set
791# CONFIG_SENSORS_PCF8591 is not set 802# CONFIG_SENSORS_PCF8591 is not set
792# CONFIG_TPS65010 is not set
793# CONFIG_SENSORS_MAX6875 is not set 803# CONFIG_SENSORS_MAX6875 is not set
794# CONFIG_SENSORS_TSL2550 is not set 804# CONFIG_SENSORS_TSL2550 is not set
795# CONFIG_I2C_DEBUG_CORE is not set 805# CONFIG_I2C_DEBUG_CORE is not set
796# CONFIG_I2C_DEBUG_ALGO is not set 806# CONFIG_I2C_DEBUG_ALGO is not set
797# CONFIG_I2C_DEBUG_BUS is not set 807# CONFIG_I2C_DEBUG_BUS is not set
798# CONFIG_I2C_DEBUG_CHIP is not set 808# CONFIG_I2C_DEBUG_CHIP is not set
799
800#
801# SPI support
802#
803# CONFIG_SPI is not set 809# CONFIG_SPI is not set
804# CONFIG_SPI_MASTER is not set
805# CONFIG_W1 is not set 810# CONFIG_W1 is not set
806# CONFIG_POWER_SUPPLY is not set 811# CONFIG_POWER_SUPPLY is not set
807# CONFIG_HWMON is not set 812# CONFIG_HWMON is not set
@@ -818,13 +823,33 @@ CONFIG_SSB_POSSIBLE=y
818# Multifunction device drivers 823# Multifunction device drivers
819# 824#
820# CONFIG_MFD_SM501 is not set 825# CONFIG_MFD_SM501 is not set
826# CONFIG_HTC_PASIC3 is not set
821 827
822# 828#
823# Multimedia devices 829# Multimedia devices
824# 830#
831
832#
833# Multimedia core support
834#
825# CONFIG_VIDEO_DEV is not set 835# CONFIG_VIDEO_DEV is not set
826CONFIG_DVB_CORE=m 836CONFIG_DVB_CORE=m
827# CONFIG_DVB_CORE_ATTACH is not set 837CONFIG_VIDEO_MEDIA=m
838
839#
840# Multimedia drivers
841#
842# CONFIG_MEDIA_ATTACH is not set
843CONFIG_MEDIA_TUNER=m
844# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
845CONFIG_MEDIA_TUNER_SIMPLE=m
846CONFIG_MEDIA_TUNER_TDA8290=m
847CONFIG_MEDIA_TUNER_TDA9887=m
848CONFIG_MEDIA_TUNER_TEA5761=m
849CONFIG_MEDIA_TUNER_TEA5767=m
850CONFIG_MEDIA_TUNER_MT20XX=m
851CONFIG_MEDIA_TUNER_XC2028=m
852CONFIG_MEDIA_TUNER_XC5000=m
828CONFIG_DVB_CAPTURE_DRIVERS=y 853CONFIG_DVB_CAPTURE_DRIVERS=y
829 854
830# 855#
@@ -867,14 +892,17 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
867# 892#
868# DVB-S (satellite) frontends 893# DVB-S (satellite) frontends
869# 894#
870# CONFIG_DVB_STV0299 is not set
871# CONFIG_DVB_CX24110 is not set 895# CONFIG_DVB_CX24110 is not set
872# CONFIG_DVB_CX24123 is not set 896# CONFIG_DVB_CX24123 is not set
873# CONFIG_DVB_TDA8083 is not set
874# CONFIG_DVB_MT312 is not set 897# CONFIG_DVB_MT312 is not set
875# CONFIG_DVB_VES1X93 is not set
876# CONFIG_DVB_S5H1420 is not set 898# CONFIG_DVB_S5H1420 is not set
899# CONFIG_DVB_STV0299 is not set
900# CONFIG_DVB_TDA8083 is not set
877# CONFIG_DVB_TDA10086 is not set 901# CONFIG_DVB_TDA10086 is not set
902# CONFIG_DVB_VES1X93 is not set
903# CONFIG_DVB_TUNER_ITD1000 is not set
904# CONFIG_DVB_TDA826X is not set
905# CONFIG_DVB_TUA6100 is not set
878 906
879# 907#
880# DVB-T (terrestrial) frontends 908# DVB-T (terrestrial) frontends
@@ -892,6 +920,7 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
892# CONFIG_DVB_DIB3000MC is not set 920# CONFIG_DVB_DIB3000MC is not set
893# CONFIG_DVB_DIB7000M is not set 921# CONFIG_DVB_DIB7000M is not set
894# CONFIG_DVB_DIB7000P is not set 922# CONFIG_DVB_DIB7000P is not set
923# CONFIG_DVB_TDA10048 is not set
895 924
896# 925#
897# DVB-C (cable) frontends 926# DVB-C (cable) frontends
@@ -910,27 +939,21 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
910# CONFIG_DVB_BCM3510 is not set 939# CONFIG_DVB_BCM3510 is not set
911# CONFIG_DVB_LGDT330X is not set 940# CONFIG_DVB_LGDT330X is not set
912# CONFIG_DVB_S5H1409 is not set 941# CONFIG_DVB_S5H1409 is not set
942# CONFIG_DVB_AU8522 is not set
943# CONFIG_DVB_S5H1411 is not set
913 944
914# 945#
915# Tuners/PLL support 946# Digital terrestrial only tuners/PLL
916# 947#
917# CONFIG_DVB_PLL is not set 948# CONFIG_DVB_PLL is not set
918# CONFIG_DVB_TDA826X is not set
919# CONFIG_DVB_TDA827X is not set
920# CONFIG_DVB_TDA18271 is not set
921# CONFIG_DVB_TUNER_QT1010 is not set
922# CONFIG_DVB_TUNER_MT2060 is not set
923# CONFIG_DVB_TUNER_MT2266 is not set
924# CONFIG_DVB_TUNER_MT2131 is not set
925# CONFIG_DVB_TUNER_DIB0070 is not set 949# CONFIG_DVB_TUNER_DIB0070 is not set
926# CONFIG_DVB_TUNER_XC5000 is not set
927 950
928# 951#
929# Miscellaneous devices 952# SEC control devices for DVB-S
930# 953#
931# CONFIG_DVB_LNBP21 is not set 954# CONFIG_DVB_LNBP21 is not set
955# CONFIG_DVB_ISL6405 is not set
932# CONFIG_DVB_ISL6421 is not set 956# CONFIG_DVB_ISL6421 is not set
933# CONFIG_DVB_TUA6100 is not set
934CONFIG_DAB=y 957CONFIG_DAB=y
935# CONFIG_USB_DABUSB is not set 958# CONFIG_USB_DABUSB is not set
936 959
@@ -997,6 +1020,7 @@ CONFIG_SND_AC97_CODEC=y
997# CONFIG_SND_AU8810 is not set 1020# CONFIG_SND_AU8810 is not set
998# CONFIG_SND_AU8820 is not set 1021# CONFIG_SND_AU8820 is not set
999# CONFIG_SND_AU8830 is not set 1022# CONFIG_SND_AU8830 is not set
1023# CONFIG_SND_AW2 is not set
1000# CONFIG_SND_AZT3328 is not set 1024# CONFIG_SND_AZT3328 is not set
1001# CONFIG_SND_BT87X is not set 1025# CONFIG_SND_BT87X is not set
1002# CONFIG_SND_CA0106 is not set 1026# CONFIG_SND_CA0106 is not set
@@ -1071,11 +1095,11 @@ CONFIG_SND_INTEL8X0=y
1071# CONFIG_SND_SOC is not set 1095# CONFIG_SND_SOC is not set
1072 1096
1073# 1097#
1074# SoC Audio support for SuperH 1098# ALSA SoC audio for Freescale SOCs
1075# 1099#
1076 1100
1077# 1101#
1078# ALSA SoC audio for Freescale SOCs 1102# SoC Audio for the Texas Instruments OMAP
1079# 1103#
1080 1104
1081# 1105#
@@ -1110,16 +1134,20 @@ CONFIG_USB_DEVICEFS=y
1110CONFIG_USB_DEVICE_CLASS=y 1134CONFIG_USB_DEVICE_CLASS=y
1111# CONFIG_USB_DYNAMIC_MINORS is not set 1135# CONFIG_USB_DYNAMIC_MINORS is not set
1112# CONFIG_USB_OTG is not set 1136# CONFIG_USB_OTG is not set
1137# CONFIG_USB_OTG_WHITELIST is not set
1138# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1113 1139
1114# 1140#
1115# USB Host Controller Drivers 1141# USB Host Controller Drivers
1116# 1142#
1143# CONFIG_USB_C67X00_HCD is not set
1117CONFIG_USB_EHCI_HCD=y 1144CONFIG_USB_EHCI_HCD=y
1118# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1145# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1119# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1146# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1120# CONFIG_USB_EHCI_FSL is not set 1147# CONFIG_USB_EHCI_FSL is not set
1121CONFIG_USB_EHCI_HCD_PPC_OF=y 1148CONFIG_USB_EHCI_HCD_PPC_OF=y
1122# CONFIG_USB_ISP116X_HCD is not set 1149# CONFIG_USB_ISP116X_HCD is not set
1150# CONFIG_USB_ISP1760_HCD is not set
1123CONFIG_USB_OHCI_HCD=y 1151CONFIG_USB_OHCI_HCD=y
1124CONFIG_USB_OHCI_HCD_PPC_OF=y 1152CONFIG_USB_OHCI_HCD_PPC_OF=y
1125CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1153CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
@@ -1137,6 +1165,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1137# 1165#
1138# CONFIG_USB_ACM is not set 1166# CONFIG_USB_ACM is not set
1139# CONFIG_USB_PRINTER is not set 1167# CONFIG_USB_PRINTER is not set
1168# CONFIG_USB_WDM is not set
1140 1169
1141# 1170#
1142# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1171# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1156,7 +1185,9 @@ CONFIG_USB_STORAGE=y
1156# CONFIG_USB_STORAGE_SDDR55 is not set 1185# CONFIG_USB_STORAGE_SDDR55 is not set
1157# CONFIG_USB_STORAGE_JUMPSHOT is not set 1186# CONFIG_USB_STORAGE_JUMPSHOT is not set
1158# CONFIG_USB_STORAGE_ALAUDA is not set 1187# CONFIG_USB_STORAGE_ALAUDA is not set
1188# CONFIG_USB_STORAGE_ONETOUCH is not set
1159# CONFIG_USB_STORAGE_KARMA is not set 1189# CONFIG_USB_STORAGE_KARMA is not set
1190# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1160# CONFIG_USB_LIBUSUAL is not set 1191# CONFIG_USB_LIBUSUAL is not set
1161 1192
1162# 1193#
@@ -1194,10 +1225,12 @@ CONFIG_USB_MON=y
1194# CONFIG_USB_TRANCEVIBRATOR is not set 1225# CONFIG_USB_TRANCEVIBRATOR is not set
1195# CONFIG_USB_IOWARRIOR is not set 1226# CONFIG_USB_IOWARRIOR is not set
1196# CONFIG_USB_TEST is not set 1227# CONFIG_USB_TEST is not set
1228# CONFIG_USB_ISIGHTFW is not set
1197# CONFIG_USB_GADGET is not set 1229# CONFIG_USB_GADGET is not set
1198# CONFIG_MMC is not set 1230# CONFIG_MMC is not set
1199# CONFIG_MEMSTICK is not set 1231# CONFIG_MEMSTICK is not set
1200# CONFIG_NEW_LEDS is not set 1232# CONFIG_NEW_LEDS is not set
1233# CONFIG_ACCESSIBILITY is not set
1201# CONFIG_INFINIBAND is not set 1234# CONFIG_INFINIBAND is not set
1202# CONFIG_EDAC is not set 1235# CONFIG_EDAC is not set
1203CONFIG_RTC_LIB=y 1236CONFIG_RTC_LIB=y
@@ -1249,11 +1282,8 @@ CONFIG_RTC_DRV_CMOS=y
1249# 1282#
1250# on-CPU RTC drivers 1283# on-CPU RTC drivers
1251# 1284#
1285# CONFIG_RTC_DRV_PPC is not set
1252# CONFIG_DMADEVICES is not set 1286# CONFIG_DMADEVICES is not set
1253
1254#
1255# Userspace I/O
1256#
1257# CONFIG_UIO is not set 1287# CONFIG_UIO is not set
1258 1288
1259# 1289#
@@ -1273,7 +1303,6 @@ CONFIG_FS_MBCACHE=y
1273# CONFIG_JFS_FS is not set 1303# CONFIG_JFS_FS is not set
1274# CONFIG_FS_POSIX_ACL is not set 1304# CONFIG_FS_POSIX_ACL is not set
1275# CONFIG_XFS_FS is not set 1305# CONFIG_XFS_FS is not set
1276# CONFIG_GFS2_FS is not set
1277# CONFIG_OCFS2_FS is not set 1306# CONFIG_OCFS2_FS is not set
1278CONFIG_DNOTIFY=y 1307CONFIG_DNOTIFY=y
1279CONFIG_INOTIFY=y 1308CONFIG_INOTIFY=y
@@ -1343,10 +1372,9 @@ CONFIG_NFS_FS=y
1343CONFIG_NFS_V3=y 1372CONFIG_NFS_V3=y
1344# CONFIG_NFS_V3_ACL is not set 1373# CONFIG_NFS_V3_ACL is not set
1345CONFIG_NFS_V4=y 1374CONFIG_NFS_V4=y
1346# CONFIG_NFS_DIRECTIO is not set
1347CONFIG_NFSD=y 1375CONFIG_NFSD=y
1348# CONFIG_NFSD_V3 is not set 1376# CONFIG_NFSD_V3 is not set
1349CONFIG_NFSD_TCP=y 1377# CONFIG_NFSD_V4 is not set
1350CONFIG_ROOT_NFS=y 1378CONFIG_ROOT_NFS=y
1351CONFIG_LOCKD=y 1379CONFIG_LOCKD=y
1352CONFIG_LOCKD_V4=y 1380CONFIG_LOCKD_V4=y
@@ -1430,9 +1458,10 @@ CONFIG_NLS_UTF8=m
1430# Library routines 1458# Library routines
1431# 1459#
1432CONFIG_BITREVERSE=y 1460CONFIG_BITREVERSE=y
1461# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1433# CONFIG_CRC_CCITT is not set 1462# CONFIG_CRC_CCITT is not set
1434# CONFIG_CRC16 is not set 1463# CONFIG_CRC16 is not set
1435# CONFIG_CRC_ITU_T is not set 1464CONFIG_CRC_ITU_T=m
1436CONFIG_CRC32=y 1465CONFIG_CRC32=y
1437# CONFIG_CRC7 is not set 1466# CONFIG_CRC7 is not set
1438CONFIG_LIBCRC32C=m 1467CONFIG_LIBCRC32C=m
@@ -1441,6 +1470,7 @@ CONFIG_PLIST=y
1441CONFIG_HAS_IOMEM=y 1470CONFIG_HAS_IOMEM=y
1442CONFIG_HAS_IOPORT=y 1471CONFIG_HAS_IOPORT=y
1443CONFIG_HAS_DMA=y 1472CONFIG_HAS_DMA=y
1473CONFIG_HAVE_LMB=y
1444 1474
1445# 1475#
1446# Kernel hacking 1476# Kernel hacking
@@ -1448,6 +1478,7 @@ CONFIG_HAS_DMA=y
1448# CONFIG_PRINTK_TIME is not set 1478# CONFIG_PRINTK_TIME is not set
1449CONFIG_ENABLE_WARN_DEPRECATED=y 1479CONFIG_ENABLE_WARN_DEPRECATED=y
1450CONFIG_ENABLE_MUST_CHECK=y 1480CONFIG_ENABLE_MUST_CHECK=y
1481CONFIG_FRAME_WARN=1024
1451# CONFIG_MAGIC_SYSRQ is not set 1482# CONFIG_MAGIC_SYSRQ is not set
1452# CONFIG_UNUSED_SYMBOLS is not set 1483# CONFIG_UNUSED_SYMBOLS is not set
1453# CONFIG_DEBUG_FS is not set 1484# CONFIG_DEBUG_FS is not set
@@ -1458,6 +1489,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1458CONFIG_SCHED_DEBUG=y 1489CONFIG_SCHED_DEBUG=y
1459# CONFIG_SCHEDSTATS is not set 1490# CONFIG_SCHEDSTATS is not set
1460# CONFIG_TIMER_STATS is not set 1491# CONFIG_TIMER_STATS is not set
1492# CONFIG_DEBUG_OBJECTS is not set
1461# CONFIG_SLUB_DEBUG_ON is not set 1493# CONFIG_SLUB_DEBUG_ON is not set
1462# CONFIG_SLUB_STATS is not set 1494# CONFIG_SLUB_STATS is not set
1463# CONFIG_DEBUG_RT_MUTEXES is not set 1495# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1471,6 +1503,7 @@ CONFIG_SCHED_DEBUG=y
1471# CONFIG_DEBUG_BUGVERBOSE is not set 1503# CONFIG_DEBUG_BUGVERBOSE is not set
1472CONFIG_DEBUG_INFO=y 1504CONFIG_DEBUG_INFO=y
1473# CONFIG_DEBUG_VM is not set 1505# CONFIG_DEBUG_VM is not set
1506# CONFIG_DEBUG_WRITECOUNT is not set
1474# CONFIG_DEBUG_LIST is not set 1507# CONFIG_DEBUG_LIST is not set
1475# CONFIG_DEBUG_SG is not set 1508# CONFIG_DEBUG_SG is not set
1476# CONFIG_BOOT_PRINTK_DELAY is not set 1509# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1482,6 +1515,7 @@ CONFIG_DEBUG_INFO=y
1482# CONFIG_DEBUG_STACK_USAGE is not set 1515# CONFIG_DEBUG_STACK_USAGE is not set
1483# CONFIG_DEBUG_PAGEALLOC is not set 1516# CONFIG_DEBUG_PAGEALLOC is not set
1484# CONFIG_DEBUGGER is not set 1517# CONFIG_DEBUGGER is not set
1518# CONFIG_IRQSTACKS is not set
1485# CONFIG_BDI_SWITCH is not set 1519# CONFIG_BDI_SWITCH is not set
1486# CONFIG_PPC_EARLY_DEBUG is not set 1520# CONFIG_PPC_EARLY_DEBUG is not set
1487 1521
@@ -1492,52 +1526,82 @@ CONFIG_DEBUG_INFO=y
1492# CONFIG_SECURITY is not set 1526# CONFIG_SECURITY is not set
1493# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1527# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1494CONFIG_CRYPTO=y 1528CONFIG_CRYPTO=y
1529
1530#
1531# Crypto core or helper
1532#
1495CONFIG_CRYPTO_ALGAPI=y 1533CONFIG_CRYPTO_ALGAPI=y
1496CONFIG_CRYPTO_BLKCIPHER=y 1534CONFIG_CRYPTO_BLKCIPHER=y
1497# CONFIG_CRYPTO_SEQIV is not set
1498CONFIG_CRYPTO_HASH=y 1535CONFIG_CRYPTO_HASH=y
1499CONFIG_CRYPTO_MANAGER=y 1536CONFIG_CRYPTO_MANAGER=y
1537# CONFIG_CRYPTO_GF128MUL is not set
1538# CONFIG_CRYPTO_NULL is not set
1539# CONFIG_CRYPTO_CRYPTD is not set
1540# CONFIG_CRYPTO_AUTHENC is not set
1541# CONFIG_CRYPTO_TEST is not set
1542
1543#
1544# Authenticated Encryption with Associated Data
1545#
1546# CONFIG_CRYPTO_CCM is not set
1547# CONFIG_CRYPTO_GCM is not set
1548# CONFIG_CRYPTO_SEQIV is not set
1549
1550#
1551# Block modes
1552#
1553CONFIG_CRYPTO_CBC=y
1554# CONFIG_CRYPTO_CTR is not set
1555# CONFIG_CRYPTO_CTS is not set
1556# CONFIG_CRYPTO_ECB is not set
1557# CONFIG_CRYPTO_LRW is not set
1558CONFIG_CRYPTO_PCBC=m
1559# CONFIG_CRYPTO_XTS is not set
1560
1561#
1562# Hash modes
1563#
1500CONFIG_CRYPTO_HMAC=y 1564CONFIG_CRYPTO_HMAC=y
1501# CONFIG_CRYPTO_XCBC is not set 1565# CONFIG_CRYPTO_XCBC is not set
1502# CONFIG_CRYPTO_NULL is not set 1566
1567#
1568# Digest
1569#
1570# CONFIG_CRYPTO_CRC32C is not set
1503# CONFIG_CRYPTO_MD4 is not set 1571# CONFIG_CRYPTO_MD4 is not set
1504CONFIG_CRYPTO_MD5=y 1572CONFIG_CRYPTO_MD5=y
1573# CONFIG_CRYPTO_MICHAEL_MIC is not set
1505CONFIG_CRYPTO_SHA1=m 1574CONFIG_CRYPTO_SHA1=m
1506# CONFIG_CRYPTO_SHA256 is not set 1575# CONFIG_CRYPTO_SHA256 is not set
1507# CONFIG_CRYPTO_SHA512 is not set 1576# CONFIG_CRYPTO_SHA512 is not set
1508# CONFIG_CRYPTO_WP512 is not set
1509# CONFIG_CRYPTO_TGR192 is not set 1577# CONFIG_CRYPTO_TGR192 is not set
1510# CONFIG_CRYPTO_GF128MUL is not set 1578# CONFIG_CRYPTO_WP512 is not set
1511# CONFIG_CRYPTO_ECB is not set 1579
1512CONFIG_CRYPTO_CBC=y 1580#
1513CONFIG_CRYPTO_PCBC=m 1581# Ciphers
1514# CONFIG_CRYPTO_LRW is not set 1582#
1515# CONFIG_CRYPTO_XTS is not set
1516# CONFIG_CRYPTO_CTR is not set
1517# CONFIG_CRYPTO_GCM is not set
1518# CONFIG_CRYPTO_CCM is not set
1519# CONFIG_CRYPTO_CRYPTD is not set
1520CONFIG_CRYPTO_DES=y
1521# CONFIG_CRYPTO_FCRYPT is not set
1522# CONFIG_CRYPTO_BLOWFISH is not set
1523# CONFIG_CRYPTO_TWOFISH is not set
1524# CONFIG_CRYPTO_SERPENT is not set
1525# CONFIG_CRYPTO_AES is not set 1583# CONFIG_CRYPTO_AES is not set
1584# CONFIG_CRYPTO_ANUBIS is not set
1585# CONFIG_CRYPTO_ARC4 is not set
1586# CONFIG_CRYPTO_BLOWFISH is not set
1587# CONFIG_CRYPTO_CAMELLIA is not set
1526# CONFIG_CRYPTO_CAST5 is not set 1588# CONFIG_CRYPTO_CAST5 is not set
1527# CONFIG_CRYPTO_CAST6 is not set 1589# CONFIG_CRYPTO_CAST6 is not set
1528# CONFIG_CRYPTO_TEA is not set 1590CONFIG_CRYPTO_DES=y
1529# CONFIG_CRYPTO_ARC4 is not set 1591# CONFIG_CRYPTO_FCRYPT is not set
1530# CONFIG_CRYPTO_KHAZAD is not set 1592# CONFIG_CRYPTO_KHAZAD is not set
1531# CONFIG_CRYPTO_ANUBIS is not set
1532# CONFIG_CRYPTO_SEED is not set
1533# CONFIG_CRYPTO_SALSA20 is not set 1593# CONFIG_CRYPTO_SALSA20 is not set
1594# CONFIG_CRYPTO_SEED is not set
1595# CONFIG_CRYPTO_SERPENT is not set
1596# CONFIG_CRYPTO_TEA is not set
1597# CONFIG_CRYPTO_TWOFISH is not set
1598
1599#
1600# Compression
1601#
1534# CONFIG_CRYPTO_DEFLATE is not set 1602# CONFIG_CRYPTO_DEFLATE is not set
1535# CONFIG_CRYPTO_MICHAEL_MIC is not set
1536# CONFIG_CRYPTO_CRC32C is not set
1537# CONFIG_CRYPTO_CAMELLIA is not set
1538# CONFIG_CRYPTO_TEST is not set
1539# CONFIG_CRYPTO_AUTHENC is not set
1540# CONFIG_CRYPTO_LZO is not set 1603# CONFIG_CRYPTO_LZO is not set
1541CONFIG_CRYPTO_HW=y 1604CONFIG_CRYPTO_HW=y
1542# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1605# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1543# CONFIG_PPC_CLOCK is not set 1606# CONFIG_PPC_CLOCK is not set
1607# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/mpc866_ads_defconfig b/arch/powerpc/configs/mpc866_ads_defconfig
index 2d831db9ae5b..46fffbcd3f99 100644
--- a/arch/powerpc/configs/mpc866_ads_defconfig
+++ b/arch/powerpc/configs/mpc866_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:35 2008 4# Mon Jun 9 08:52:16 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -28,6 +28,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y 28CONFIG_GENERIC_HARDIRQS=y
29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
30CONFIG_IRQ_PER_CPU=y 30CONFIG_IRQ_PER_CPU=y
31CONFIG_STACKTRACE_SUPPORT=y
32CONFIG_LOCKDEP_SUPPORT=y
31CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
32CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
33CONFIG_GENERIC_HWEIGHT=y 35CONFIG_GENERIC_HWEIGHT=y
@@ -106,6 +108,7 @@ CONFIG_SLUB=y
106CONFIG_HAVE_OPROFILE=y 108CONFIG_HAVE_OPROFILE=y
107CONFIG_HAVE_KPROBES=y 109CONFIG_HAVE_KPROBES=y
108CONFIG_HAVE_KRETPROBES=y 110CONFIG_HAVE_KRETPROBES=y
111# CONFIG_HAVE_DMA_ATTRS is not set
109CONFIG_PROC_PAGE_MONITOR=y 112CONFIG_PROC_PAGE_MONITOR=y
110CONFIG_SLABINFO=y 113CONFIG_SLABINFO=y
111CONFIG_RT_MUTEXES=y 114CONFIG_RT_MUTEXES=y
@@ -210,11 +213,13 @@ CONFIG_FLATMEM=y
210CONFIG_FLAT_NODE_MEM_MAP=y 213CONFIG_FLAT_NODE_MEM_MAP=y
211# CONFIG_SPARSEMEM_STATIC is not set 214# CONFIG_SPARSEMEM_STATIC is not set
212# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 215# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
216CONFIG_PAGEFLAGS_EXTENDED=y
213CONFIG_SPLIT_PTLOCK_CPUS=4 217CONFIG_SPLIT_PTLOCK_CPUS=4
214# CONFIG_RESOURCES_64BIT is not set 218# CONFIG_RESOURCES_64BIT is not set
215CONFIG_ZONE_DMA_FLAG=1 219CONFIG_ZONE_DMA_FLAG=1
216CONFIG_BOUNCE=y 220CONFIG_BOUNCE=y
217CONFIG_VIRT_TO_BUS=y 221CONFIG_VIRT_TO_BUS=y
222CONFIG_FORCE_MAX_ZONEORDER=11
218# CONFIG_PROC_DEVICETREE is not set 223# CONFIG_PROC_DEVICETREE is not set
219# CONFIG_CMDLINE_BOOL is not set 224# CONFIG_CMDLINE_BOOL is not set
220# CONFIG_PM is not set 225# CONFIG_PM is not set
@@ -231,6 +236,7 @@ CONFIG_FSL_SOC=y
231# CONFIG_PCI_SYSCALL is not set 236# CONFIG_PCI_SYSCALL is not set
232# CONFIG_PCI_QSPAN is not set 237# CONFIG_PCI_QSPAN is not set
233# CONFIG_ARCH_SUPPORTS_MSI is not set 238# CONFIG_ARCH_SUPPORTS_MSI is not set
239# CONFIG_HAS_RAPIDIO is not set
234 240
235# 241#
236# Advanced setup 242# Advanced setup
@@ -240,13 +246,13 @@ CONFIG_FSL_SOC=y
240# 246#
241# Default settings for advanced configuration options are used 247# Default settings for advanced configuration options are used
242# 248#
243CONFIG_HIGHMEM_START=0xfe000000
244CONFIG_LOWMEM_SIZE=0x30000000 249CONFIG_LOWMEM_SIZE=0x30000000
250CONFIG_PAGE_OFFSET=0xc0000000
245CONFIG_KERNEL_START=0xc0000000 251CONFIG_KERNEL_START=0xc0000000
252CONFIG_PHYSICAL_START=0x00000000
246CONFIG_TASK_SIZE=0x80000000 253CONFIG_TASK_SIZE=0x80000000
247CONFIG_CONSISTENT_START=0xfd000000 254CONFIG_CONSISTENT_START=0xfd000000
248CONFIG_CONSISTENT_SIZE=0x00200000 255CONFIG_CONSISTENT_SIZE=0x00200000
249CONFIG_BOOT_LOAD=0x00400000
250 256
251# 257#
252# Networking 258# Networking
@@ -294,8 +300,6 @@ CONFIG_TCP_CONG_CUBIC=y
294CONFIG_DEFAULT_TCP_CONG="cubic" 300CONFIG_DEFAULT_TCP_CONG="cubic"
295# CONFIG_TCP_MD5SIG is not set 301# CONFIG_TCP_MD5SIG is not set
296# CONFIG_IPV6 is not set 302# CONFIG_IPV6 is not set
297# CONFIG_INET6_XFRM_TUNNEL is not set
298# CONFIG_INET6_TUNNEL is not set
299# CONFIG_NETWORK_SECMARK is not set 303# CONFIG_NETWORK_SECMARK is not set
300# CONFIG_NETFILTER is not set 304# CONFIG_NETFILTER is not set
301# CONFIG_IP_DCCP is not set 305# CONFIG_IP_DCCP is not set
@@ -419,6 +423,7 @@ CONFIG_NETDEV_10000=y
419# 423#
420# CONFIG_WLAN_PRE80211 is not set 424# CONFIG_WLAN_PRE80211 is not set
421# CONFIG_WLAN_80211 is not set 425# CONFIG_WLAN_80211 is not set
426# CONFIG_IWLWIFI_LEDS is not set
422# CONFIG_WAN is not set 427# CONFIG_WAN is not set
423# CONFIG_PPP is not set 428# CONFIG_PPP is not set
424# CONFIG_SLIP is not set 429# CONFIG_SLIP is not set
@@ -485,6 +490,7 @@ CONFIG_SERIO_LIBPS2=y
485# Character devices 490# Character devices
486# 491#
487# CONFIG_VT is not set 492# CONFIG_VT is not set
493CONFIG_DEVKMEM=y
488# CONFIG_SERIAL_NONSTANDARD is not set 494# CONFIG_SERIAL_NONSTANDARD is not set
489 495
490# 496#
@@ -517,12 +523,7 @@ CONFIG_GEN_RTC=y
517# CONFIG_RAW_DRIVER is not set 523# CONFIG_RAW_DRIVER is not set
518# CONFIG_TCG_TPM is not set 524# CONFIG_TCG_TPM is not set
519# CONFIG_I2C is not set 525# CONFIG_I2C is not set
520
521#
522# SPI support
523#
524# CONFIG_SPI is not set 526# CONFIG_SPI is not set
525# CONFIG_SPI_MASTER is not set
526# CONFIG_W1 is not set 527# CONFIG_W1 is not set
527# CONFIG_POWER_SUPPLY is not set 528# CONFIG_POWER_SUPPLY is not set
528CONFIG_HWMON=y 529CONFIG_HWMON=y
@@ -551,12 +552,22 @@ CONFIG_SSB_POSSIBLE=y
551# Multifunction device drivers 552# Multifunction device drivers
552# 553#
553# CONFIG_MFD_SM501 is not set 554# CONFIG_MFD_SM501 is not set
555# CONFIG_HTC_PASIC3 is not set
554 556
555# 557#
556# Multimedia devices 558# Multimedia devices
557# 559#
560
561#
562# Multimedia core support
563#
558# CONFIG_VIDEO_DEV is not set 564# CONFIG_VIDEO_DEV is not set
559# CONFIG_DVB_CORE is not set 565# CONFIG_DVB_CORE is not set
566# CONFIG_VIDEO_MEDIA is not set
567
568#
569# Multimedia drivers
570#
560CONFIG_DAB=y 571CONFIG_DAB=y
561 572
562# 573#
@@ -584,6 +595,8 @@ CONFIG_USB_SUPPORT=y
584# CONFIG_USB_ARCH_HAS_HCD is not set 595# CONFIG_USB_ARCH_HAS_HCD is not set
585# CONFIG_USB_ARCH_HAS_OHCI is not set 596# CONFIG_USB_ARCH_HAS_OHCI is not set
586# CONFIG_USB_ARCH_HAS_EHCI is not set 597# CONFIG_USB_ARCH_HAS_EHCI is not set
598# CONFIG_USB_OTG_WHITELIST is not set
599# CONFIG_USB_OTG_BLACKLIST_HUB is not set
587 600
588# 601#
589# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 602# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -592,13 +605,10 @@ CONFIG_USB_SUPPORT=y
592# CONFIG_MMC is not set 605# CONFIG_MMC is not set
593# CONFIG_MEMSTICK is not set 606# CONFIG_MEMSTICK is not set
594# CONFIG_NEW_LEDS is not set 607# CONFIG_NEW_LEDS is not set
608# CONFIG_ACCESSIBILITY is not set
595# CONFIG_EDAC is not set 609# CONFIG_EDAC is not set
596# CONFIG_RTC_CLASS is not set 610# CONFIG_RTC_CLASS is not set
597# CONFIG_DMADEVICES is not set 611# CONFIG_DMADEVICES is not set
598
599#
600# Userspace I/O
601#
602# CONFIG_UIO is not set 612# CONFIG_UIO is not set
603 613
604# 614#
@@ -620,7 +630,6 @@ CONFIG_FS_MBCACHE=y
620# CONFIG_JFS_FS is not set 630# CONFIG_JFS_FS is not set
621# CONFIG_FS_POSIX_ACL is not set 631# CONFIG_FS_POSIX_ACL is not set
622# CONFIG_XFS_FS is not set 632# CONFIG_XFS_FS is not set
623# CONFIG_GFS2_FS is not set
624# CONFIG_OCFS2_FS is not set 633# CONFIG_OCFS2_FS is not set
625CONFIG_DNOTIFY=y 634CONFIG_DNOTIFY=y
626CONFIG_INOTIFY=y 635CONFIG_INOTIFY=y
@@ -678,7 +687,6 @@ CONFIG_NFS_FS=y
678CONFIG_NFS_V3=y 687CONFIG_NFS_V3=y
679# CONFIG_NFS_V3_ACL is not set 688# CONFIG_NFS_V3_ACL is not set
680# CONFIG_NFS_V4 is not set 689# CONFIG_NFS_V4 is not set
681# CONFIG_NFS_DIRECTIO is not set
682# CONFIG_NFSD is not set 690# CONFIG_NFSD is not set
683CONFIG_ROOT_NFS=y 691CONFIG_ROOT_NFS=y
684CONFIG_LOCKD=y 692CONFIG_LOCKD=y
@@ -722,6 +730,7 @@ CONFIG_MSDOS_PARTITION=y
722# Library routines 730# Library routines
723# 731#
724CONFIG_BITREVERSE=y 732CONFIG_BITREVERSE=y
733# CONFIG_GENERIC_FIND_FIRST_BIT is not set
725CONFIG_CRC_CCITT=y 734CONFIG_CRC_CCITT=y
726# CONFIG_CRC16 is not set 735# CONFIG_CRC16 is not set
727# CONFIG_CRC_ITU_T is not set 736# CONFIG_CRC_ITU_T is not set
@@ -733,6 +742,7 @@ CONFIG_PLIST=y
733CONFIG_HAS_IOMEM=y 742CONFIG_HAS_IOMEM=y
734CONFIG_HAS_IOPORT=y 743CONFIG_HAS_IOPORT=y
735CONFIG_HAS_DMA=y 744CONFIG_HAS_DMA=y
745CONFIG_HAVE_LMB=y
736 746
737# 747#
738# Kernel hacking 748# Kernel hacking
@@ -740,6 +750,7 @@ CONFIG_HAS_DMA=y
740# CONFIG_PRINTK_TIME is not set 750# CONFIG_PRINTK_TIME is not set
741CONFIG_ENABLE_WARN_DEPRECATED=y 751CONFIG_ENABLE_WARN_DEPRECATED=y
742CONFIG_ENABLE_MUST_CHECK=y 752CONFIG_ENABLE_MUST_CHECK=y
753CONFIG_FRAME_WARN=1024
743# CONFIG_MAGIC_SYSRQ is not set 754# CONFIG_MAGIC_SYSRQ is not set
744# CONFIG_UNUSED_SYMBOLS is not set 755# CONFIG_UNUSED_SYMBOLS is not set
745# CONFIG_DEBUG_FS is not set 756# CONFIG_DEBUG_FS is not set
@@ -748,6 +759,7 @@ CONFIG_ENABLE_MUST_CHECK=y
748# CONFIG_SLUB_DEBUG_ON is not set 759# CONFIG_SLUB_DEBUG_ON is not set
749# CONFIG_SLUB_STATS is not set 760# CONFIG_SLUB_STATS is not set
750# CONFIG_SAMPLES is not set 761# CONFIG_SAMPLES is not set
762# CONFIG_IRQSTACKS is not set
751# CONFIG_PPC_EARLY_DEBUG is not set 763# CONFIG_PPC_EARLY_DEBUG is not set
752 764
753# 765#
@@ -757,48 +769,78 @@ CONFIG_ENABLE_MUST_CHECK=y
757# CONFIG_SECURITY is not set 769# CONFIG_SECURITY is not set
758# CONFIG_SECURITY_FILE_CAPABILITIES is not set 770# CONFIG_SECURITY_FILE_CAPABILITIES is not set
759CONFIG_CRYPTO=y 771CONFIG_CRYPTO=y
760# CONFIG_CRYPTO_SEQIV is not set 772
773#
774# Crypto core or helper
775#
761# CONFIG_CRYPTO_MANAGER is not set 776# CONFIG_CRYPTO_MANAGER is not set
777# CONFIG_CRYPTO_GF128MUL is not set
778# CONFIG_CRYPTO_NULL is not set
779# CONFIG_CRYPTO_CRYPTD is not set
780# CONFIG_CRYPTO_AUTHENC is not set
781
782#
783# Authenticated Encryption with Associated Data
784#
785# CONFIG_CRYPTO_CCM is not set
786# CONFIG_CRYPTO_GCM is not set
787# CONFIG_CRYPTO_SEQIV is not set
788
789#
790# Block modes
791#
792# CONFIG_CRYPTO_CBC is not set
793# CONFIG_CRYPTO_CTR is not set
794# CONFIG_CRYPTO_CTS is not set
795# CONFIG_CRYPTO_ECB is not set
796# CONFIG_CRYPTO_LRW is not set
797# CONFIG_CRYPTO_PCBC is not set
798# CONFIG_CRYPTO_XTS is not set
799
800#
801# Hash modes
802#
762# CONFIG_CRYPTO_HMAC is not set 803# CONFIG_CRYPTO_HMAC is not set
763# CONFIG_CRYPTO_XCBC is not set 804# CONFIG_CRYPTO_XCBC is not set
764# CONFIG_CRYPTO_NULL is not set 805
806#
807# Digest
808#
809# CONFIG_CRYPTO_CRC32C is not set
765# CONFIG_CRYPTO_MD4 is not set 810# CONFIG_CRYPTO_MD4 is not set
766# CONFIG_CRYPTO_MD5 is not set 811# CONFIG_CRYPTO_MD5 is not set
812# CONFIG_CRYPTO_MICHAEL_MIC is not set
767# CONFIG_CRYPTO_SHA1 is not set 813# CONFIG_CRYPTO_SHA1 is not set
768# CONFIG_CRYPTO_SHA256 is not set 814# CONFIG_CRYPTO_SHA256 is not set
769# CONFIG_CRYPTO_SHA512 is not set 815# CONFIG_CRYPTO_SHA512 is not set
770# CONFIG_CRYPTO_WP512 is not set
771# CONFIG_CRYPTO_TGR192 is not set 816# CONFIG_CRYPTO_TGR192 is not set
772# CONFIG_CRYPTO_GF128MUL is not set 817# CONFIG_CRYPTO_WP512 is not set
773# CONFIG_CRYPTO_ECB is not set 818
774# CONFIG_CRYPTO_CBC is not set 819#
775# CONFIG_CRYPTO_PCBC is not set 820# Ciphers
776# CONFIG_CRYPTO_LRW is not set 821#
777# CONFIG_CRYPTO_XTS is not set
778# CONFIG_CRYPTO_CTR is not set
779# CONFIG_CRYPTO_GCM is not set
780# CONFIG_CRYPTO_CCM is not set
781# CONFIG_CRYPTO_CRYPTD is not set
782# CONFIG_CRYPTO_DES is not set
783# CONFIG_CRYPTO_FCRYPT is not set
784# CONFIG_CRYPTO_BLOWFISH is not set
785# CONFIG_CRYPTO_TWOFISH is not set
786# CONFIG_CRYPTO_SERPENT is not set
787# CONFIG_CRYPTO_AES is not set 822# CONFIG_CRYPTO_AES is not set
823# CONFIG_CRYPTO_ANUBIS is not set
824# CONFIG_CRYPTO_ARC4 is not set
825# CONFIG_CRYPTO_BLOWFISH is not set
826# CONFIG_CRYPTO_CAMELLIA is not set
788# CONFIG_CRYPTO_CAST5 is not set 827# CONFIG_CRYPTO_CAST5 is not set
789# CONFIG_CRYPTO_CAST6 is not set 828# CONFIG_CRYPTO_CAST6 is not set
790# CONFIG_CRYPTO_TEA is not set 829# CONFIG_CRYPTO_DES is not set
791# CONFIG_CRYPTO_ARC4 is not set 830# CONFIG_CRYPTO_FCRYPT is not set
792# CONFIG_CRYPTO_KHAZAD is not set 831# CONFIG_CRYPTO_KHAZAD is not set
793# CONFIG_CRYPTO_ANUBIS is not set
794# CONFIG_CRYPTO_SEED is not set
795# CONFIG_CRYPTO_SALSA20 is not set 832# CONFIG_CRYPTO_SALSA20 is not set
833# CONFIG_CRYPTO_SEED is not set
834# CONFIG_CRYPTO_SERPENT is not set
835# CONFIG_CRYPTO_TEA is not set
836# CONFIG_CRYPTO_TWOFISH is not set
837
838#
839# Compression
840#
796# CONFIG_CRYPTO_DEFLATE is not set 841# CONFIG_CRYPTO_DEFLATE is not set
797# CONFIG_CRYPTO_MICHAEL_MIC is not set
798# CONFIG_CRYPTO_CRC32C is not set
799# CONFIG_CRYPTO_CAMELLIA is not set
800# CONFIG_CRYPTO_AUTHENC is not set
801# CONFIG_CRYPTO_LZO is not set 842# CONFIG_CRYPTO_LZO is not set
802CONFIG_CRYPTO_HW=y 843CONFIG_CRYPTO_HW=y
803# CONFIG_PPC_CLOCK is not set 844# CONFIG_PPC_CLOCK is not set
804CONFIG_PPC_LIB_RHEAP=y 845CONFIG_PPC_LIB_RHEAP=y
846# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig
index 82151b9bba26..9df78973005e 100644
--- a/arch/powerpc/configs/mpc885_ads_defconfig
+++ b/arch/powerpc/configs/mpc885_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:35 2008 4# Mon Jun 9 08:52:17 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -28,6 +28,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y 28CONFIG_GENERIC_HARDIRQS=y
29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
30CONFIG_IRQ_PER_CPU=y 30CONFIG_IRQ_PER_CPU=y
31CONFIG_STACKTRACE_SUPPORT=y
32CONFIG_LOCKDEP_SUPPORT=y
31CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
32CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
33CONFIG_GENERIC_HWEIGHT=y 35CONFIG_GENERIC_HWEIGHT=y
@@ -108,6 +110,7 @@ CONFIG_SLUB=y
108CONFIG_HAVE_OPROFILE=y 110CONFIG_HAVE_OPROFILE=y
109CONFIG_HAVE_KPROBES=y 111CONFIG_HAVE_KPROBES=y
110CONFIG_HAVE_KRETPROBES=y 112CONFIG_HAVE_KRETPROBES=y
113# CONFIG_HAVE_DMA_ATTRS is not set
111CONFIG_PROC_PAGE_MONITOR=y 114CONFIG_PROC_PAGE_MONITOR=y
112CONFIG_SLABINFO=y 115CONFIG_SLABINFO=y
113# CONFIG_TINY_SHMEM is not set 116# CONFIG_TINY_SHMEM is not set
@@ -219,11 +222,13 @@ CONFIG_FLATMEM=y
219CONFIG_FLAT_NODE_MEM_MAP=y 222CONFIG_FLAT_NODE_MEM_MAP=y
220# CONFIG_SPARSEMEM_STATIC is not set 223# CONFIG_SPARSEMEM_STATIC is not set
221# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 224# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
225CONFIG_PAGEFLAGS_EXTENDED=y
222CONFIG_SPLIT_PTLOCK_CPUS=4 226CONFIG_SPLIT_PTLOCK_CPUS=4
223# CONFIG_RESOURCES_64BIT is not set 227# CONFIG_RESOURCES_64BIT is not set
224CONFIG_ZONE_DMA_FLAG=1 228CONFIG_ZONE_DMA_FLAG=1
225CONFIG_BOUNCE=y 229CONFIG_BOUNCE=y
226CONFIG_VIRT_TO_BUS=y 230CONFIG_VIRT_TO_BUS=y
231CONFIG_FORCE_MAX_ZONEORDER=11
227CONFIG_PROC_DEVICETREE=y 232CONFIG_PROC_DEVICETREE=y
228# CONFIG_CMDLINE_BOOL is not set 233# CONFIG_CMDLINE_BOOL is not set
229# CONFIG_PM is not set 234# CONFIG_PM is not set
@@ -241,6 +246,7 @@ CONFIG_FSL_SOC=y
241# CONFIG_PCI_QSPAN is not set 246# CONFIG_PCI_QSPAN is not set
242# CONFIG_ARCH_SUPPORTS_MSI is not set 247# CONFIG_ARCH_SUPPORTS_MSI is not set
243# CONFIG_PCCARD is not set 248# CONFIG_PCCARD is not set
249# CONFIG_HAS_RAPIDIO is not set
244 250
245# 251#
246# Advanced setup 252# Advanced setup
@@ -250,13 +256,13 @@ CONFIG_FSL_SOC=y
250# 256#
251# Default settings for advanced configuration options are used 257# Default settings for advanced configuration options are used
252# 258#
253CONFIG_HIGHMEM_START=0xfe000000
254CONFIG_LOWMEM_SIZE=0x30000000 259CONFIG_LOWMEM_SIZE=0x30000000
260CONFIG_PAGE_OFFSET=0xc0000000
255CONFIG_KERNEL_START=0xc0000000 261CONFIG_KERNEL_START=0xc0000000
262CONFIG_PHYSICAL_START=0x00000000
256CONFIG_TASK_SIZE=0x80000000 263CONFIG_TASK_SIZE=0x80000000
257CONFIG_CONSISTENT_START=0xfd000000 264CONFIG_CONSISTENT_START=0xfd000000
258CONFIG_CONSISTENT_SIZE=0x00200000 265CONFIG_CONSISTENT_SIZE=0x00200000
259CONFIG_BOOT_LOAD=0x00400000
260 266
261# 267#
262# Networking 268# Networking
@@ -299,8 +305,6 @@ CONFIG_TCP_CONG_CUBIC=y
299CONFIG_DEFAULT_TCP_CONG="cubic" 305CONFIG_DEFAULT_TCP_CONG="cubic"
300# CONFIG_TCP_MD5SIG is not set 306# CONFIG_TCP_MD5SIG is not set
301# CONFIG_IPV6 is not set 307# CONFIG_IPV6 is not set
302# CONFIG_INET6_XFRM_TUNNEL is not set
303# CONFIG_INET6_TUNNEL is not set
304# CONFIG_NETWORK_SECMARK is not set 308# CONFIG_NETWORK_SECMARK is not set
305# CONFIG_NETFILTER is not set 309# CONFIG_NETFILTER is not set
306# CONFIG_IP_DCCP is not set 310# CONFIG_IP_DCCP is not set
@@ -492,6 +496,7 @@ CONFIG_FS_ENET_MDIO_FEC=y
492# 496#
493# CONFIG_WLAN_PRE80211 is not set 497# CONFIG_WLAN_PRE80211 is not set
494# CONFIG_WLAN_80211 is not set 498# CONFIG_WLAN_80211 is not set
499# CONFIG_IWLWIFI_LEDS is not set
495# CONFIG_WAN is not set 500# CONFIG_WAN is not set
496# CONFIG_PPP is not set 501# CONFIG_PPP is not set
497# CONFIG_SLIP is not set 502# CONFIG_SLIP is not set
@@ -516,6 +521,7 @@ CONFIG_FS_ENET_MDIO_FEC=y
516# Character devices 521# Character devices
517# 522#
518# CONFIG_VT is not set 523# CONFIG_VT is not set
524CONFIG_DEVKMEM=y
519# CONFIG_SERIAL_NONSTANDARD is not set 525# CONFIG_SERIAL_NONSTANDARD is not set
520 526
521# 527#
@@ -548,12 +554,7 @@ CONFIG_GEN_RTC=y
548# CONFIG_RAW_DRIVER is not set 554# CONFIG_RAW_DRIVER is not set
549# CONFIG_TCG_TPM is not set 555# CONFIG_TCG_TPM is not set
550# CONFIG_I2C is not set 556# CONFIG_I2C is not set
551
552#
553# SPI support
554#
555# CONFIG_SPI is not set 557# CONFIG_SPI is not set
556# CONFIG_SPI_MASTER is not set
557# CONFIG_W1 is not set 558# CONFIG_W1 is not set
558# CONFIG_POWER_SUPPLY is not set 559# CONFIG_POWER_SUPPLY is not set
559# CONFIG_HWMON is not set 560# CONFIG_HWMON is not set
@@ -570,12 +571,22 @@ CONFIG_SSB_POSSIBLE=y
570# Multifunction device drivers 571# Multifunction device drivers
571# 572#
572# CONFIG_MFD_SM501 is not set 573# CONFIG_MFD_SM501 is not set
574# CONFIG_HTC_PASIC3 is not set
573 575
574# 576#
575# Multimedia devices 577# Multimedia devices
576# 578#
579
580#
581# Multimedia core support
582#
577# CONFIG_VIDEO_DEV is not set 583# CONFIG_VIDEO_DEV is not set
578# CONFIG_DVB_CORE is not set 584# CONFIG_DVB_CORE is not set
585# CONFIG_VIDEO_MEDIA is not set
586
587#
588# Multimedia drivers
589#
579CONFIG_DAB=y 590CONFIG_DAB=y
580 591
581# 592#
@@ -599,13 +610,10 @@ CONFIG_DAB=y
599# CONFIG_MMC is not set 610# CONFIG_MMC is not set
600# CONFIG_MEMSTICK is not set 611# CONFIG_MEMSTICK is not set
601# CONFIG_NEW_LEDS is not set 612# CONFIG_NEW_LEDS is not set
613# CONFIG_ACCESSIBILITY is not set
602# CONFIG_EDAC is not set 614# CONFIG_EDAC is not set
603# CONFIG_RTC_CLASS is not set 615# CONFIG_RTC_CLASS is not set
604# CONFIG_DMADEVICES is not set 616# CONFIG_DMADEVICES is not set
605
606#
607# Userspace I/O
608#
609# CONFIG_UIO is not set 617# CONFIG_UIO is not set
610 618
611# 619#
@@ -618,7 +626,6 @@ CONFIG_DAB=y
618# CONFIG_JFS_FS is not set 626# CONFIG_JFS_FS is not set
619# CONFIG_FS_POSIX_ACL is not set 627# CONFIG_FS_POSIX_ACL is not set
620# CONFIG_XFS_FS is not set 628# CONFIG_XFS_FS is not set
621# CONFIG_GFS2_FS is not set
622# CONFIG_OCFS2_FS is not set 629# CONFIG_OCFS2_FS is not set
623# CONFIG_DNOTIFY is not set 630# CONFIG_DNOTIFY is not set
624# CONFIG_INOTIFY is not set 631# CONFIG_INOTIFY is not set
@@ -676,7 +683,6 @@ CONFIG_NFS_FS=y
676CONFIG_NFS_V3=y 683CONFIG_NFS_V3=y
677# CONFIG_NFS_V3_ACL is not set 684# CONFIG_NFS_V3_ACL is not set
678# CONFIG_NFS_V4 is not set 685# CONFIG_NFS_V4 is not set
679# CONFIG_NFS_DIRECTIO is not set
680# CONFIG_NFSD is not set 686# CONFIG_NFSD is not set
681CONFIG_ROOT_NFS=y 687CONFIG_ROOT_NFS=y
682CONFIG_LOCKD=y 688CONFIG_LOCKD=y
@@ -719,6 +725,7 @@ CONFIG_MSDOS_PARTITION=y
719# 725#
720# Library routines 726# Library routines
721# 727#
728# CONFIG_GENERIC_FIND_FIRST_BIT is not set
722# CONFIG_CRC_CCITT is not set 729# CONFIG_CRC_CCITT is not set
723# CONFIG_CRC16 is not set 730# CONFIG_CRC16 is not set
724# CONFIG_CRC_ITU_T is not set 731# CONFIG_CRC_ITU_T is not set
@@ -729,6 +736,7 @@ CONFIG_ZLIB_INFLATE=y
729CONFIG_HAS_IOMEM=y 736CONFIG_HAS_IOMEM=y
730CONFIG_HAS_IOPORT=y 737CONFIG_HAS_IOPORT=y
731CONFIG_HAS_DMA=y 738CONFIG_HAS_DMA=y
739CONFIG_HAVE_LMB=y
732 740
733# 741#
734# Kernel hacking 742# Kernel hacking
@@ -736,6 +744,7 @@ CONFIG_HAS_DMA=y
736# CONFIG_PRINTK_TIME is not set 744# CONFIG_PRINTK_TIME is not set
737CONFIG_ENABLE_WARN_DEPRECATED=y 745CONFIG_ENABLE_WARN_DEPRECATED=y
738CONFIG_ENABLE_MUST_CHECK=y 746CONFIG_ENABLE_MUST_CHECK=y
747CONFIG_FRAME_WARN=1024
739CONFIG_MAGIC_SYSRQ=y 748CONFIG_MAGIC_SYSRQ=y
740# CONFIG_UNUSED_SYMBOLS is not set 749# CONFIG_UNUSED_SYMBOLS is not set
741# CONFIG_DEBUG_FS is not set 750# CONFIG_DEBUG_FS is not set
@@ -746,6 +755,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
746CONFIG_SCHED_DEBUG=y 755CONFIG_SCHED_DEBUG=y
747# CONFIG_SCHEDSTATS is not set 756# CONFIG_SCHEDSTATS is not set
748# CONFIG_TIMER_STATS is not set 757# CONFIG_TIMER_STATS is not set
758# CONFIG_DEBUG_OBJECTS is not set
749# CONFIG_SLUB_DEBUG_ON is not set 759# CONFIG_SLUB_DEBUG_ON is not set
750# CONFIG_SLUB_STATS is not set 760# CONFIG_SLUB_STATS is not set
751# CONFIG_DEBUG_SPINLOCK is not set 761# CONFIG_DEBUG_SPINLOCK is not set
@@ -756,6 +766,7 @@ CONFIG_SCHED_DEBUG=y
756CONFIG_DEBUG_BUGVERBOSE=y 766CONFIG_DEBUG_BUGVERBOSE=y
757CONFIG_DEBUG_INFO=y 767CONFIG_DEBUG_INFO=y
758# CONFIG_DEBUG_VM is not set 768# CONFIG_DEBUG_VM is not set
769# CONFIG_DEBUG_WRITECOUNT is not set
759# CONFIG_DEBUG_LIST is not set 770# CONFIG_DEBUG_LIST is not set
760# CONFIG_DEBUG_SG is not set 771# CONFIG_DEBUG_SG is not set
761# CONFIG_BOOT_PRINTK_DELAY is not set 772# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -766,6 +777,7 @@ CONFIG_DEBUG_INFO=y
766# CONFIG_DEBUG_STACK_USAGE is not set 777# CONFIG_DEBUG_STACK_USAGE is not set
767# CONFIG_DEBUG_PAGEALLOC is not set 778# CONFIG_DEBUG_PAGEALLOC is not set
768# CONFIG_DEBUGGER is not set 779# CONFIG_DEBUGGER is not set
780# CONFIG_IRQSTACKS is not set
769# CONFIG_BDI_SWITCH is not set 781# CONFIG_BDI_SWITCH is not set
770# CONFIG_PPC_EARLY_DEBUG is not set 782# CONFIG_PPC_EARLY_DEBUG is not set
771 783
@@ -778,3 +790,4 @@ CONFIG_DEBUG_INFO=y
778# CONFIG_CRYPTO is not set 790# CONFIG_CRYPTO is not set
779# CONFIG_PPC_CLOCK is not set 791# CONFIG_PPC_CLOCK is not set
780CONFIG_PPC_LIB_RHEAP=y 792CONFIG_PPC_LIB_RHEAP=y
793# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
index 40f84fa2bd29..ce250bc98584 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc3 3# Linux kernel version: 2.6.26-rc6
4# Tue May 20 20:03:02 2008 4# Mon Jun 16 21:11:19 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -763,7 +763,63 @@ CONFIG_ATA_NONSTANDARD=y
763CONFIG_SATA_PMP=y 763CONFIG_SATA_PMP=y
764# CONFIG_SATA_AHCI is not set 764# CONFIG_SATA_AHCI is not set
765CONFIG_SATA_SIL24=y 765CONFIG_SATA_SIL24=y
766# CONFIG_ATA_SFF is not set 766CONFIG_ATA_SFF=y
767CONFIG_SATA_SVW=y
768# CONFIG_ATA_PIIX is not set
769# CONFIG_SATA_MV is not set
770# CONFIG_SATA_NV is not set
771# CONFIG_PDC_ADMA is not set
772# CONFIG_SATA_QSTOR is not set
773# CONFIG_SATA_PROMISE is not set
774# CONFIG_SATA_SX4 is not set
775# CONFIG_SATA_SIL is not set
776# CONFIG_SATA_SIS is not set
777# CONFIG_SATA_ULI is not set
778# CONFIG_SATA_VIA is not set
779# CONFIG_SATA_VITESSE is not set
780# CONFIG_SATA_INIC162X is not set
781# CONFIG_PATA_ALI is not set
782# CONFIG_PATA_AMD is not set
783# CONFIG_PATA_ARTOP is not set
784# CONFIG_PATA_ATIIXP is not set
785# CONFIG_PATA_CMD640_PCI is not set
786# CONFIG_PATA_CMD64X is not set
787# CONFIG_PATA_CS5520 is not set
788# CONFIG_PATA_CS5530 is not set
789# CONFIG_PATA_CYPRESS is not set
790# CONFIG_PATA_EFAR is not set
791# CONFIG_ATA_GENERIC is not set
792# CONFIG_PATA_HPT366 is not set
793# CONFIG_PATA_HPT37X is not set
794# CONFIG_PATA_HPT3X2N is not set
795# CONFIG_PATA_HPT3X3 is not set
796# CONFIG_PATA_IT821X is not set
797# CONFIG_PATA_IT8213 is not set
798# CONFIG_PATA_JMICRON is not set
799# CONFIG_PATA_TRIFLEX is not set
800# CONFIG_PATA_MARVELL is not set
801# CONFIG_PATA_MPIIX is not set
802# CONFIG_PATA_OLDPIIX is not set
803# CONFIG_PATA_NETCELL is not set
804# CONFIG_PATA_NINJA32 is not set
805# CONFIG_PATA_NS87410 is not set
806# CONFIG_PATA_NS87415 is not set
807# CONFIG_PATA_OPTI is not set
808# CONFIG_PATA_OPTIDMA is not set
809# CONFIG_PATA_PCMCIA is not set
810# CONFIG_PATA_PDC_OLD is not set
811# CONFIG_PATA_RADISYS is not set
812# CONFIG_PATA_RZ1000 is not set
813# CONFIG_PATA_SC1200 is not set
814# CONFIG_PATA_SERVERWORKS is not set
815# CONFIG_PATA_PDC2027X is not set
816# CONFIG_PATA_SIL680 is not set
817# CONFIG_PATA_SIS is not set
818# CONFIG_PATA_VIA is not set
819# CONFIG_PATA_WINBOND is not set
820# CONFIG_PATA_PLATFORM is not set
821# CONFIG_PATA_SCC is not set
822# CONFIG_PATA_SCH is not set
767CONFIG_MD=y 823CONFIG_MD=y
768CONFIG_BLK_DEV_MD=y 824CONFIG_BLK_DEV_MD=y
769CONFIG_MD_LINEAR=y 825CONFIG_MD_LINEAR=y
@@ -1478,6 +1534,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1478# 1534#
1479# CONFIG_USB_ACM is not set 1535# CONFIG_USB_ACM is not set
1480# CONFIG_USB_PRINTER is not set 1536# CONFIG_USB_PRINTER is not set
1537# CONFIG_USB_WDM is not set
1481 1538
1482# 1539#
1483# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1540# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1537,6 +1594,7 @@ CONFIG_USB_APPLEDISPLAY=m
1537# CONFIG_USB_TRANCEVIBRATOR is not set 1594# CONFIG_USB_TRANCEVIBRATOR is not set
1538# CONFIG_USB_IOWARRIOR is not set 1595# CONFIG_USB_IOWARRIOR is not set
1539# CONFIG_USB_TEST is not set 1596# CONFIG_USB_TEST is not set
1597# CONFIG_USB_ISIGHTFW is not set
1540# CONFIG_USB_GADGET is not set 1598# CONFIG_USB_GADGET is not set
1541# CONFIG_MMC is not set 1599# CONFIG_MMC is not set
1542# CONFIG_MEMSTICK is not set 1600# CONFIG_MEMSTICK is not set
@@ -1597,6 +1655,7 @@ CONFIG_RTC_DRV_DS1307=y
1597# CONFIG_RTC_DRV_PCF8583 is not set 1655# CONFIG_RTC_DRV_PCF8583 is not set
1598# CONFIG_RTC_DRV_M41T80 is not set 1656# CONFIG_RTC_DRV_M41T80 is not set
1599# CONFIG_RTC_DRV_S35390A is not set 1657# CONFIG_RTC_DRV_S35390A is not set
1658# CONFIG_RTC_DRV_FM3130 is not set
1600 1659
1601# 1660#
1602# SPI RTC drivers 1661# SPI RTC drivers
@@ -1617,6 +1676,7 @@ CONFIG_RTC_DRV_DS1307=y
1617# 1676#
1618# on-CPU RTC drivers 1677# on-CPU RTC drivers
1619# 1678#
1679CONFIG_RTC_DRV_PPC=y
1620# CONFIG_DMADEVICES is not set 1680# CONFIG_DMADEVICES is not set
1621# CONFIG_UIO is not set 1681# CONFIG_UIO is not set
1622 1682
diff --git a/arch/powerpc/configs/pq2fads_defconfig b/arch/powerpc/configs/pq2fads_defconfig
index 1383eb696a20..bc3bf62ddc2f 100644
--- a/arch/powerpc/configs/pq2fads_defconfig
+++ b/arch/powerpc/configs/pq2fads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 24 08:48:36 2008 4# Mon Jun 9 08:52:18 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -30,6 +30,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
32CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y
33CONFIG_RWSEM_XCHGADD_ALGORITHM=y 35CONFIG_RWSEM_XCHGADD_ALGORITHM=y
34CONFIG_ARCH_HAS_ILOG2_U32=y 36CONFIG_ARCH_HAS_ILOG2_U32=y
35CONFIG_GENERIC_HWEIGHT=y 37CONFIG_GENERIC_HWEIGHT=y
@@ -70,19 +72,17 @@ CONFIG_IKCONFIG=y
70CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
71CONFIG_LOG_BUF_SHIFT=14 73CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set 74# CONFIG_CGROUPS is not set
73CONFIG_GROUP_SCHED=y
74# CONFIG_FAIR_GROUP_SCHED is not set
75CONFIG_USER_SCHED=y
76# CONFIG_CGROUP_SCHED is not set
77CONFIG_SYSFS_DEPRECATED=y 75CONFIG_SYSFS_DEPRECATED=y
78CONFIG_SYSFS_DEPRECATED_V2=y 76CONFIG_SYSFS_DEPRECATED_V2=y
79# CONFIG_RELAY is not set 77# CONFIG_RELAY is not set
80# CONFIG_NAMESPACES is not set 78# CONFIG_NAMESPACES is not set
81CONFIG_BLK_DEV_INITRD=y 79CONFIG_BLK_DEV_INITRD=y
82CONFIG_INITRAMFS_SOURCE="" 80CONFIG_INITRAMFS_SOURCE=""
81CONFIG_CC_OPTIMIZE_FOR_SIZE=y
83CONFIG_SYSCTL=y 82CONFIG_SYSCTL=y
84CONFIG_EMBEDDED=y 83CONFIG_EMBEDDED=y
85CONFIG_SYSCTL_SYSCALL=y 84CONFIG_SYSCTL_SYSCALL=y
85CONFIG_SYSCTL_SYSCALL_CHECK=y
86CONFIG_KALLSYMS=y 86CONFIG_KALLSYMS=y
87CONFIG_KALLSYMS_ALL=y 87CONFIG_KALLSYMS_ALL=y
88# CONFIG_KALLSYMS_EXTRA_PASS is not set 88# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -109,6 +109,7 @@ CONFIG_SLUB=y
109CONFIG_HAVE_OPROFILE=y 109CONFIG_HAVE_OPROFILE=y
110CONFIG_HAVE_KPROBES=y 110CONFIG_HAVE_KPROBES=y
111CONFIG_HAVE_KRETPROBES=y 111CONFIG_HAVE_KRETPROBES=y
112# CONFIG_HAVE_DMA_ATTRS is not set
112CONFIG_PROC_PAGE_MONITOR=y 113CONFIG_PROC_PAGE_MONITOR=y
113CONFIG_SLABINFO=y 114CONFIG_SLABINFO=y
114CONFIG_RT_MUTEXES=y 115CONFIG_RT_MUTEXES=y
@@ -196,11 +197,13 @@ CONFIG_FLATMEM=y
196CONFIG_FLAT_NODE_MEM_MAP=y 197CONFIG_FLAT_NODE_MEM_MAP=y
197# CONFIG_SPARSEMEM_STATIC is not set 198# CONFIG_SPARSEMEM_STATIC is not set
198# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 199# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
200CONFIG_PAGEFLAGS_EXTENDED=y
199CONFIG_SPLIT_PTLOCK_CPUS=4 201CONFIG_SPLIT_PTLOCK_CPUS=4
200# CONFIG_RESOURCES_64BIT is not set 202# CONFIG_RESOURCES_64BIT is not set
201CONFIG_ZONE_DMA_FLAG=1 203CONFIG_ZONE_DMA_FLAG=1
202CONFIG_BOUNCE=y 204CONFIG_BOUNCE=y
203CONFIG_VIRT_TO_BUS=y 205CONFIG_VIRT_TO_BUS=y
206CONFIG_FORCE_MAX_ZONEORDER=11
204CONFIG_PROC_DEVICETREE=y 207CONFIG_PROC_DEVICETREE=y
205# CONFIG_CMDLINE_BOOL is not set 208# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set 209# CONFIG_PM is not set
@@ -225,6 +228,7 @@ CONFIG_PCI_LEGACY=y
225# CONFIG_PCI_DEBUG is not set 228# CONFIG_PCI_DEBUG is not set
226# CONFIG_PCCARD is not set 229# CONFIG_PCCARD is not set
227# CONFIG_HOTPLUG_PCI is not set 230# CONFIG_HOTPLUG_PCI is not set
231# CONFIG_HAS_RAPIDIO is not set
228 232
229# 233#
230# Advanced setup 234# Advanced setup
@@ -234,11 +238,11 @@ CONFIG_PCI_LEGACY=y
234# 238#
235# Default settings for advanced configuration options are used 239# Default settings for advanced configuration options are used
236# 240#
237CONFIG_HIGHMEM_START=0xfe000000
238CONFIG_LOWMEM_SIZE=0x30000000 241CONFIG_LOWMEM_SIZE=0x30000000
242CONFIG_PAGE_OFFSET=0xc0000000
239CONFIG_KERNEL_START=0xc0000000 243CONFIG_KERNEL_START=0xc0000000
244CONFIG_PHYSICAL_START=0x00000000
240CONFIG_TASK_SIZE=0xc0000000 245CONFIG_TASK_SIZE=0xc0000000
241CONFIG_BOOT_LOAD=0x00400000
242 246
243# 247#
244# Networking 248# Networking
@@ -293,6 +297,7 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=y
293CONFIG_INET6_XFRM_MODE_TUNNEL=y 297CONFIG_INET6_XFRM_MODE_TUNNEL=y
294CONFIG_INET6_XFRM_MODE_BEET=y 298CONFIG_INET6_XFRM_MODE_BEET=y
295CONFIG_IPV6_SIT=y 299CONFIG_IPV6_SIT=y
300CONFIG_IPV6_NDISC_NODETYPE=y
296# CONFIG_IPV6_TUNNEL is not set 301# CONFIG_IPV6_TUNNEL is not set
297# CONFIG_NETWORK_SECMARK is not set 302# CONFIG_NETWORK_SECMARK is not set
298CONFIG_NETFILTER=y 303CONFIG_NETFILTER=y
@@ -513,7 +518,7 @@ CONFIG_IDE_PROC_FS=y
513# CONFIG_BLK_DEV_VIA82CXXX is not set 518# CONFIG_BLK_DEV_VIA82CXXX is not set
514# CONFIG_BLK_DEV_TC86C001 is not set 519# CONFIG_BLK_DEV_TC86C001 is not set
515# CONFIG_BLK_DEV_IDEDMA is not set 520# CONFIG_BLK_DEV_IDEDMA is not set
516CONFIG_IDE_ARCH_OBSOLETE_INIT=y 521# CONFIG_BLK_DEV_HD_ONLY is not set
517# CONFIG_BLK_DEV_HD is not set 522# CONFIG_BLK_DEV_HD is not set
518 523
519# 524#
@@ -593,7 +598,6 @@ CONFIG_NETDEV_1000=y
593# CONFIG_SIS190 is not set 598# CONFIG_SIS190 is not set
594# CONFIG_SKGE is not set 599# CONFIG_SKGE is not set
595# CONFIG_SKY2 is not set 600# CONFIG_SKY2 is not set
596# CONFIG_SK98LIN is not set
597# CONFIG_VIA_VELOCITY is not set 601# CONFIG_VIA_VELOCITY is not set
598# CONFIG_TIGON3 is not set 602# CONFIG_TIGON3 is not set
599# CONFIG_BNX2 is not set 603# CONFIG_BNX2 is not set
@@ -611,6 +615,7 @@ CONFIG_NETDEV_10000=y
611# CONFIG_MLX4_CORE is not set 615# CONFIG_MLX4_CORE is not set
612# CONFIG_TEHUTI is not set 616# CONFIG_TEHUTI is not set
613# CONFIG_BNX2X is not set 617# CONFIG_BNX2X is not set
618# CONFIG_SFC is not set
614# CONFIG_TR is not set 619# CONFIG_TR is not set
615 620
616# 621#
@@ -618,6 +623,7 @@ CONFIG_NETDEV_10000=y
618# 623#
619# CONFIG_WLAN_PRE80211 is not set 624# CONFIG_WLAN_PRE80211 is not set
620# CONFIG_WLAN_80211 is not set 625# CONFIG_WLAN_80211 is not set
626# CONFIG_IWLWIFI_LEDS is not set
621# CONFIG_WAN is not set 627# CONFIG_WAN is not set
622# CONFIG_FDDI is not set 628# CONFIG_FDDI is not set
623CONFIG_PPP=y 629CONFIG_PPP=y
@@ -692,6 +698,7 @@ CONFIG_SERIO_LIBPS2=y
692# Character devices 698# Character devices
693# 699#
694# CONFIG_VT is not set 700# CONFIG_VT is not set
701CONFIG_DEVKMEM=y
695# CONFIG_SERIAL_NONSTANDARD is not set 702# CONFIG_SERIAL_NONSTANDARD is not set
696 703
697# 704#
@@ -726,12 +733,7 @@ CONFIG_HW_RANDOM=y
726# CONFIG_RAW_DRIVER is not set 733# CONFIG_RAW_DRIVER is not set
727CONFIG_DEVPORT=y 734CONFIG_DEVPORT=y
728# CONFIG_I2C is not set 735# CONFIG_I2C is not set
729
730#
731# SPI support
732#
733# CONFIG_SPI is not set 736# CONFIG_SPI is not set
734# CONFIG_SPI_MASTER is not set
735# CONFIG_W1 is not set 737# CONFIG_W1 is not set
736# CONFIG_POWER_SUPPLY is not set 738# CONFIG_POWER_SUPPLY is not set
737# CONFIG_HWMON is not set 739# CONFIG_HWMON is not set
@@ -748,12 +750,22 @@ CONFIG_SSB_POSSIBLE=y
748# Multifunction device drivers 750# Multifunction device drivers
749# 751#
750# CONFIG_MFD_SM501 is not set 752# CONFIG_MFD_SM501 is not set
753# CONFIG_HTC_PASIC3 is not set
751 754
752# 755#
753# Multimedia devices 756# Multimedia devices
754# 757#
758
759#
760# Multimedia core support
761#
755# CONFIG_VIDEO_DEV is not set 762# CONFIG_VIDEO_DEV is not set
756# CONFIG_DVB_CORE is not set 763# CONFIG_DVB_CORE is not set
764# CONFIG_VIDEO_MEDIA is not set
765
766#
767# Multimedia drivers
768#
757CONFIG_DAB=y 769CONFIG_DAB=y
758 770
759# 771#
@@ -781,11 +793,14 @@ CONFIG_USB_ARCH_HAS_HCD=y
781CONFIG_USB_ARCH_HAS_OHCI=y 793CONFIG_USB_ARCH_HAS_OHCI=y
782CONFIG_USB_ARCH_HAS_EHCI=y 794CONFIG_USB_ARCH_HAS_EHCI=y
783# CONFIG_USB is not set 795# CONFIG_USB is not set
796# CONFIG_USB_OTG_WHITELIST is not set
797# CONFIG_USB_OTG_BLACKLIST_HUB is not set
784 798
785# 799#
786# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 800# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
787# 801#
788CONFIG_USB_GADGET=y 802CONFIG_USB_GADGET=y
803# CONFIG_USB_GADGET_DEBUG is not set
789# CONFIG_USB_GADGET_DEBUG_FILES is not set 804# CONFIG_USB_GADGET_DEBUG_FILES is not set
790CONFIG_USB_GADGET_SELECTED=y 805CONFIG_USB_GADGET_SELECTED=y
791# CONFIG_USB_GADGET_AMD5536UDC is not set 806# CONFIG_USB_GADGET_AMD5536UDC is not set
@@ -795,6 +810,7 @@ CONFIG_USB_GADGET_SELECTED=y
795# CONFIG_USB_GADGET_PXA2XX is not set 810# CONFIG_USB_GADGET_PXA2XX is not set
796CONFIG_USB_GADGET_M66592=y 811CONFIG_USB_GADGET_M66592=y
797CONFIG_USB_M66592=y 812CONFIG_USB_M66592=y
813# CONFIG_USB_GADGET_PXA27X is not set
798# CONFIG_USB_GADGET_GOKU is not set 814# CONFIG_USB_GADGET_GOKU is not set
799# CONFIG_USB_GADGET_LH7A40X is not set 815# CONFIG_USB_GADGET_LH7A40X is not set
800# CONFIG_USB_GADGET_OMAP is not set 816# CONFIG_USB_GADGET_OMAP is not set
@@ -804,6 +820,7 @@ CONFIG_USB_M66592=y
804CONFIG_USB_GADGET_DUALSPEED=y 820CONFIG_USB_GADGET_DUALSPEED=y
805# CONFIG_USB_ZERO is not set 821# CONFIG_USB_ZERO is not set
806CONFIG_USB_ETH=y 822CONFIG_USB_ETH=y
823CONFIG_USB_ETH_RNDIS=y
807# CONFIG_USB_GADGETFS is not set 824# CONFIG_USB_GADGETFS is not set
808# CONFIG_USB_FILE_STORAGE is not set 825# CONFIG_USB_FILE_STORAGE is not set
809# CONFIG_USB_G_SERIAL is not set 826# CONFIG_USB_G_SERIAL is not set
@@ -812,13 +829,10 @@ CONFIG_USB_ETH=y
812# CONFIG_MMC is not set 829# CONFIG_MMC is not set
813# CONFIG_MEMSTICK is not set 830# CONFIG_MEMSTICK is not set
814# CONFIG_NEW_LEDS is not set 831# CONFIG_NEW_LEDS is not set
832# CONFIG_ACCESSIBILITY is not set
815# CONFIG_INFINIBAND is not set 833# CONFIG_INFINIBAND is not set
816# CONFIG_RTC_CLASS is not set 834# CONFIG_RTC_CLASS is not set
817# CONFIG_DMADEVICES is not set 835# CONFIG_DMADEVICES is not set
818
819#
820# Userspace I/O
821#
822# CONFIG_UIO is not set 836# CONFIG_UIO is not set
823 837
824# 838#
@@ -888,7 +902,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
888CONFIG_NFS_FS=y 902CONFIG_NFS_FS=y
889CONFIG_NFS_V3=y 903CONFIG_NFS_V3=y
890CONFIG_NFS_V3_ACL=y 904CONFIG_NFS_V3_ACL=y
891# CONFIG_NFS_DIRECTIO is not set
892# CONFIG_NFSD is not set 905# CONFIG_NFSD is not set
893CONFIG_ROOT_NFS=y 906CONFIG_ROOT_NFS=y
894CONFIG_LOCKD=y 907CONFIG_LOCKD=y
@@ -967,6 +980,7 @@ CONFIG_NLS_UTF8=y
967# Library routines 980# Library routines
968# 981#
969CONFIG_BITREVERSE=y 982CONFIG_BITREVERSE=y
983# CONFIG_GENERIC_FIND_FIRST_BIT is not set
970CONFIG_CRC_CCITT=y 984CONFIG_CRC_CCITT=y
971# CONFIG_CRC16 is not set 985# CONFIG_CRC16 is not set
972# CONFIG_CRC_ITU_T is not set 986# CONFIG_CRC_ITU_T is not set
@@ -979,6 +993,7 @@ CONFIG_PLIST=y
979CONFIG_HAS_IOMEM=y 993CONFIG_HAS_IOMEM=y
980CONFIG_HAS_IOPORT=y 994CONFIG_HAS_IOPORT=y
981CONFIG_HAS_DMA=y 995CONFIG_HAS_DMA=y
996CONFIG_HAVE_LMB=y
982 997
983# 998#
984# Kernel hacking 999# Kernel hacking
@@ -986,6 +1001,7 @@ CONFIG_HAS_DMA=y
986# CONFIG_PRINTK_TIME is not set 1001# CONFIG_PRINTK_TIME is not set
987CONFIG_ENABLE_WARN_DEPRECATED=y 1002CONFIG_ENABLE_WARN_DEPRECATED=y
988CONFIG_ENABLE_MUST_CHECK=y 1003CONFIG_ENABLE_MUST_CHECK=y
1004CONFIG_FRAME_WARN=1024
989CONFIG_MAGIC_SYSRQ=y 1005CONFIG_MAGIC_SYSRQ=y
990# CONFIG_UNUSED_SYMBOLS is not set 1006# CONFIG_UNUSED_SYMBOLS is not set
991# CONFIG_DEBUG_FS is not set 1007# CONFIG_DEBUG_FS is not set
@@ -996,6 +1012,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
996# CONFIG_SCHED_DEBUG is not set 1012# CONFIG_SCHED_DEBUG is not set
997# CONFIG_SCHEDSTATS is not set 1013# CONFIG_SCHEDSTATS is not set
998# CONFIG_TIMER_STATS is not set 1014# CONFIG_TIMER_STATS is not set
1015# CONFIG_DEBUG_OBJECTS is not set
999# CONFIG_SLUB_DEBUG_ON is not set 1016# CONFIG_SLUB_DEBUG_ON is not set
1000# CONFIG_SLUB_STATS is not set 1017# CONFIG_SLUB_STATS is not set
1001# CONFIG_DEBUG_RT_MUTEXES is not set 1018# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1008,6 +1025,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1008CONFIG_DEBUG_BUGVERBOSE=y 1025CONFIG_DEBUG_BUGVERBOSE=y
1009CONFIG_DEBUG_INFO=y 1026CONFIG_DEBUG_INFO=y
1010# CONFIG_DEBUG_VM is not set 1027# CONFIG_DEBUG_VM is not set
1028# CONFIG_DEBUG_WRITECOUNT is not set
1011# CONFIG_DEBUG_LIST is not set 1029# CONFIG_DEBUG_LIST is not set
1012# CONFIG_DEBUG_SG is not set 1030# CONFIG_DEBUG_SG is not set
1013# CONFIG_BOOT_PRINTK_DELAY is not set 1031# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1019,6 +1037,7 @@ CONFIG_DEBUG_INFO=y
1019# CONFIG_DEBUG_PAGEALLOC is not set 1037# CONFIG_DEBUG_PAGEALLOC is not set
1020# CONFIG_DEBUGGER is not set 1038# CONFIG_DEBUGGER is not set
1021# CONFIG_KGDB_CONSOLE is not set 1039# CONFIG_KGDB_CONSOLE is not set
1040# CONFIG_IRQSTACKS is not set
1022CONFIG_BDI_SWITCH=y 1041CONFIG_BDI_SWITCH=y
1023# CONFIG_PPC_EARLY_DEBUG is not set 1042# CONFIG_PPC_EARLY_DEBUG is not set
1024 1043
@@ -1028,46 +1047,76 @@ CONFIG_BDI_SWITCH=y
1028# CONFIG_KEYS is not set 1047# CONFIG_KEYS is not set
1029# CONFIG_SECURITY is not set 1048# CONFIG_SECURITY is not set
1030CONFIG_CRYPTO=y 1049CONFIG_CRYPTO=y
1050
1051#
1052# Crypto core or helper
1053#
1031CONFIG_CRYPTO_ALGAPI=y 1054CONFIG_CRYPTO_ALGAPI=y
1032CONFIG_CRYPTO_BLKCIPHER=y 1055CONFIG_CRYPTO_BLKCIPHER=y
1033# CONFIG_CRYPTO_SEQIV is not set
1034CONFIG_CRYPTO_MANAGER=y 1056CONFIG_CRYPTO_MANAGER=y
1035# CONFIG_CRYPTO_HMAC is not set
1036# CONFIG_CRYPTO_NULL is not set 1057# CONFIG_CRYPTO_NULL is not set
1058# CONFIG_CRYPTO_CRYPTD is not set
1059# CONFIG_CRYPTO_AUTHENC is not set
1060
1061#
1062# Authenticated Encryption with Associated Data
1063#
1064# CONFIG_CRYPTO_CCM is not set
1065# CONFIG_CRYPTO_GCM is not set
1066# CONFIG_CRYPTO_SEQIV is not set
1067
1068#
1069# Block modes
1070#
1071CONFIG_CRYPTO_CBC=y
1072# CONFIG_CRYPTO_CTR is not set
1073# CONFIG_CRYPTO_CTS is not set
1074CONFIG_CRYPTO_ECB=y
1075CONFIG_CRYPTO_PCBC=y
1076
1077#
1078# Hash modes
1079#
1080# CONFIG_CRYPTO_HMAC is not set
1081
1082#
1083# Digest
1084#
1085# CONFIG_CRYPTO_CRC32C is not set
1037# CONFIG_CRYPTO_MD4 is not set 1086# CONFIG_CRYPTO_MD4 is not set
1038CONFIG_CRYPTO_MD5=y 1087CONFIG_CRYPTO_MD5=y
1088# CONFIG_CRYPTO_MICHAEL_MIC is not set
1039# CONFIG_CRYPTO_SHA1 is not set 1089# CONFIG_CRYPTO_SHA1 is not set
1040# CONFIG_CRYPTO_SHA256 is not set 1090# CONFIG_CRYPTO_SHA256 is not set
1041# CONFIG_CRYPTO_SHA512 is not set 1091# CONFIG_CRYPTO_SHA512 is not set
1042# CONFIG_CRYPTO_WP512 is not set
1043# CONFIG_CRYPTO_TGR192 is not set 1092# CONFIG_CRYPTO_TGR192 is not set
1044CONFIG_CRYPTO_ECB=y 1093# CONFIG_CRYPTO_WP512 is not set
1045CONFIG_CRYPTO_CBC=y 1094
1046CONFIG_CRYPTO_PCBC=y 1095#
1047# CONFIG_CRYPTO_CTR is not set 1096# Ciphers
1048# CONFIG_CRYPTO_GCM is not set 1097#
1049# CONFIG_CRYPTO_CCM is not set
1050# CONFIG_CRYPTO_CRYPTD is not set
1051CONFIG_CRYPTO_DES=y
1052# CONFIG_CRYPTO_FCRYPT is not set
1053# CONFIG_CRYPTO_BLOWFISH is not set
1054# CONFIG_CRYPTO_TWOFISH is not set
1055# CONFIG_CRYPTO_SERPENT is not set
1056# CONFIG_CRYPTO_AES is not set 1098# CONFIG_CRYPTO_AES is not set
1099# CONFIG_CRYPTO_ANUBIS is not set
1100# CONFIG_CRYPTO_ARC4 is not set
1101# CONFIG_CRYPTO_BLOWFISH is not set
1102# CONFIG_CRYPTO_CAMELLIA is not set
1057# CONFIG_CRYPTO_CAST5 is not set 1103# CONFIG_CRYPTO_CAST5 is not set
1058# CONFIG_CRYPTO_CAST6 is not set 1104# CONFIG_CRYPTO_CAST6 is not set
1059# CONFIG_CRYPTO_TEA is not set 1105CONFIG_CRYPTO_DES=y
1060# CONFIG_CRYPTO_ARC4 is not set 1106# CONFIG_CRYPTO_FCRYPT is not set
1061# CONFIG_CRYPTO_KHAZAD is not set 1107# CONFIG_CRYPTO_KHAZAD is not set
1062# CONFIG_CRYPTO_ANUBIS is not set
1063# CONFIG_CRYPTO_SEED is not set 1108# CONFIG_CRYPTO_SEED is not set
1109# CONFIG_CRYPTO_SERPENT is not set
1110# CONFIG_CRYPTO_TEA is not set
1111# CONFIG_CRYPTO_TWOFISH is not set
1112
1113#
1114# Compression
1115#
1064# CONFIG_CRYPTO_DEFLATE is not set 1116# CONFIG_CRYPTO_DEFLATE is not set
1065# CONFIG_CRYPTO_MICHAEL_MIC is not set
1066# CONFIG_CRYPTO_CRC32C is not set
1067# CONFIG_CRYPTO_CAMELLIA is not set
1068# CONFIG_CRYPTO_AUTHENC is not set
1069# CONFIG_CRYPTO_LZO is not set 1117# CONFIG_CRYPTO_LZO is not set
1070CONFIG_CRYPTO_HW=y 1118CONFIG_CRYPTO_HW=y
1071# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1119# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1072# CONFIG_PPC_CLOCK is not set 1120# CONFIG_PPC_CLOCK is not set
1073CONFIG_PPC_LIB_RHEAP=y 1121CONFIG_PPC_LIB_RHEAP=y
1122# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/prpmc2800_defconfig b/arch/powerpc/configs/prpmc2800_defconfig
index f9121685f11a..c6b83577c055 100644
--- a/arch/powerpc/configs/prpmc2800_defconfig
+++ b/arch/powerpc/configs/prpmc2800_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:37:15 2008 4# Mon Jun 9 08:52:18 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -33,6 +33,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y 33CONFIG_GENERIC_HARDIRQS=y
34# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 34# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
35CONFIG_IRQ_PER_CPU=y 35CONFIG_IRQ_PER_CPU=y
36CONFIG_STACKTRACE_SUPPORT=y
37CONFIG_LOCKDEP_SUPPORT=y
36CONFIG_RWSEM_XCHGADD_ALGORITHM=y 38CONFIG_RWSEM_XCHGADD_ALGORITHM=y
37CONFIG_ARCH_HAS_ILOG2_U32=y 39CONFIG_ARCH_HAS_ILOG2_U32=y
38CONFIG_GENERIC_HWEIGHT=y 40CONFIG_GENERIC_HWEIGHT=y
@@ -92,6 +94,7 @@ CONFIG_INITRAMFS_SOURCE=""
92CONFIG_SYSCTL=y 94CONFIG_SYSCTL=y
93# CONFIG_EMBEDDED is not set 95# CONFIG_EMBEDDED is not set
94CONFIG_SYSCTL_SYSCALL=y 96CONFIG_SYSCTL_SYSCALL=y
97CONFIG_SYSCTL_SYSCALL_CHECK=y
95CONFIG_KALLSYMS=y 98CONFIG_KALLSYMS=y
96# CONFIG_KALLSYMS_EXTRA_PASS is not set 99# CONFIG_KALLSYMS_EXTRA_PASS is not set
97CONFIG_HOTPLUG=y 100CONFIG_HOTPLUG=y
@@ -117,6 +120,7 @@ CONFIG_SLUB=y
117CONFIG_HAVE_OPROFILE=y 120CONFIG_HAVE_OPROFILE=y
118CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
123# CONFIG_HAVE_DMA_ATTRS is not set
120CONFIG_PROC_PAGE_MONITOR=y 124CONFIG_PROC_PAGE_MONITOR=y
121CONFIG_SLABINFO=y 125CONFIG_SLABINFO=y
122CONFIG_RT_MUTEXES=y 126CONFIG_RT_MUTEXES=y
@@ -215,11 +219,13 @@ CONFIG_FLATMEM=y
215CONFIG_FLAT_NODE_MEM_MAP=y 219CONFIG_FLAT_NODE_MEM_MAP=y
216# CONFIG_SPARSEMEM_STATIC is not set 220# CONFIG_SPARSEMEM_STATIC is not set
217# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 221# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
222CONFIG_PAGEFLAGS_EXTENDED=y
218CONFIG_SPLIT_PTLOCK_CPUS=4 223CONFIG_SPLIT_PTLOCK_CPUS=4
219# CONFIG_RESOURCES_64BIT is not set 224# CONFIG_RESOURCES_64BIT is not set
220CONFIG_ZONE_DMA_FLAG=1 225CONFIG_ZONE_DMA_FLAG=1
221CONFIG_BOUNCE=y 226CONFIG_BOUNCE=y
222CONFIG_VIRT_TO_BUS=y 227CONFIG_VIRT_TO_BUS=y
228CONFIG_FORCE_MAX_ZONEORDER=11
223CONFIG_PROC_DEVICETREE=y 229CONFIG_PROC_DEVICETREE=y
224# CONFIG_CMDLINE_BOOL is not set 230# CONFIG_CMDLINE_BOOL is not set
225# CONFIG_PM is not set 231# CONFIG_PM is not set
@@ -241,6 +247,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
241CONFIG_PCI_LEGACY=y 247CONFIG_PCI_LEGACY=y
242# CONFIG_PCCARD is not set 248# CONFIG_PCCARD is not set
243# CONFIG_HOTPLUG_PCI is not set 249# CONFIG_HOTPLUG_PCI is not set
250# CONFIG_HAS_RAPIDIO is not set
244 251
245# 252#
246# Advanced setup 253# Advanced setup
@@ -250,13 +257,13 @@ CONFIG_PCI_LEGACY=y
250# 257#
251# Default settings for advanced configuration options are used 258# Default settings for advanced configuration options are used
252# 259#
253CONFIG_HIGHMEM_START=0xfe000000
254CONFIG_LOWMEM_SIZE=0x30000000 260CONFIG_LOWMEM_SIZE=0x30000000
261CONFIG_PAGE_OFFSET=0xc0000000
255CONFIG_KERNEL_START=0xc0000000 262CONFIG_KERNEL_START=0xc0000000
263CONFIG_PHYSICAL_START=0x00000000
256CONFIG_TASK_SIZE=0xc0000000 264CONFIG_TASK_SIZE=0xc0000000
257CONFIG_CONSISTENT_START=0xff100000 265CONFIG_CONSISTENT_START=0xff100000
258CONFIG_CONSISTENT_SIZE=0x00200000 266CONFIG_CONSISTENT_SIZE=0x00200000
259CONFIG_BOOT_LOAD=0x00800000
260 267
261# 268#
262# Networking 269# Networking
@@ -304,8 +311,6 @@ CONFIG_TCP_CONG_CUBIC=y
304CONFIG_DEFAULT_TCP_CONG="cubic" 311CONFIG_DEFAULT_TCP_CONG="cubic"
305# CONFIG_TCP_MD5SIG is not set 312# CONFIG_TCP_MD5SIG is not set
306# CONFIG_IPV6 is not set 313# CONFIG_IPV6 is not set
307# CONFIG_INET6_XFRM_TUNNEL is not set
308# CONFIG_INET6_TUNNEL is not set
309# CONFIG_NETWORK_SECMARK is not set 314# CONFIG_NETWORK_SECMARK is not set
310# CONFIG_NETFILTER is not set 315# CONFIG_NETFILTER is not set
311# CONFIG_IP_DCCP is not set 316# CONFIG_IP_DCCP is not set
@@ -364,6 +369,7 @@ CONFIG_MTD_PARTITIONS=y
364# CONFIG_MTD_REDBOOT_PARTS is not set 369# CONFIG_MTD_REDBOOT_PARTS is not set
365# CONFIG_MTD_CMDLINE_PARTS is not set 370# CONFIG_MTD_CMDLINE_PARTS is not set
366# CONFIG_MTD_OF_PARTS is not set 371# CONFIG_MTD_OF_PARTS is not set
372# CONFIG_MTD_AR7_PARTS is not set
367 373
368# 374#
369# User Modules And Translation Layers 375# User Modules And Translation Layers
@@ -435,6 +441,7 @@ CONFIG_MTD_PHYSMAP_OF=y
435# 441#
436# CONFIG_MTD_UBI is not set 442# CONFIG_MTD_UBI is not set
437CONFIG_OF_DEVICE=y 443CONFIG_OF_DEVICE=y
444CONFIG_OF_I2C=y
438# CONFIG_PARPORT is not set 445# CONFIG_PARPORT is not set
439CONFIG_BLK_DEV=y 446CONFIG_BLK_DEV=y
440# CONFIG_BLK_DEV_FD is not set 447# CONFIG_BLK_DEV_FD is not set
@@ -519,7 +526,7 @@ CONFIG_BLK_DEV_PDC202XX_NEW=y
519# CONFIG_BLK_DEV_VIA82CXXX is not set 526# CONFIG_BLK_DEV_VIA82CXXX is not set
520# CONFIG_BLK_DEV_TC86C001 is not set 527# CONFIG_BLK_DEV_TC86C001 is not set
521CONFIG_BLK_DEV_IDEDMA=y 528CONFIG_BLK_DEV_IDEDMA=y
522CONFIG_IDE_ARCH_OBSOLETE_INIT=y 529# CONFIG_BLK_DEV_HD_ONLY is not set
523# CONFIG_BLK_DEV_HD is not set 530# CONFIG_BLK_DEV_HD is not set
524 531
525# 532#
@@ -598,7 +605,10 @@ CONFIG_SCSI_LOWLEVEL=y
598# CONFIG_SCSI_SRP is not set 605# CONFIG_SCSI_SRP is not set
599CONFIG_ATA=y 606CONFIG_ATA=y
600# CONFIG_ATA_NONSTANDARD is not set 607# CONFIG_ATA_NONSTANDARD is not set
608CONFIG_SATA_PMP=y
601# CONFIG_SATA_AHCI is not set 609# CONFIG_SATA_AHCI is not set
610# CONFIG_SATA_SIL24 is not set
611CONFIG_ATA_SFF=y
602# CONFIG_SATA_SVW is not set 612# CONFIG_SATA_SVW is not set
603# CONFIG_ATA_PIIX is not set 613# CONFIG_ATA_PIIX is not set
604CONFIG_SATA_MV=y 614CONFIG_SATA_MV=y
@@ -608,7 +618,6 @@ CONFIG_SATA_MV=y
608# CONFIG_SATA_PROMISE is not set 618# CONFIG_SATA_PROMISE is not set
609# CONFIG_SATA_SX4 is not set 619# CONFIG_SATA_SX4 is not set
610# CONFIG_SATA_SIL is not set 620# CONFIG_SATA_SIL is not set
611# CONFIG_SATA_SIL24 is not set
612# CONFIG_SATA_SIS is not set 621# CONFIG_SATA_SIS is not set
613# CONFIG_SATA_ULI is not set 622# CONFIG_SATA_ULI is not set
614# CONFIG_SATA_VIA is not set 623# CONFIG_SATA_VIA is not set
@@ -653,6 +662,7 @@ CONFIG_SATA_MV=y
653# CONFIG_PATA_VIA is not set 662# CONFIG_PATA_VIA is not set
654# CONFIG_PATA_WINBOND is not set 663# CONFIG_PATA_WINBOND is not set
655# CONFIG_PATA_PLATFORM is not set 664# CONFIG_PATA_PLATFORM is not set
665# CONFIG_PATA_SCH is not set
656# CONFIG_MD is not set 666# CONFIG_MD is not set
657# CONFIG_FUSION is not set 667# CONFIG_FUSION is not set
658 668
@@ -744,7 +754,6 @@ CONFIG_E1000=y
744# CONFIG_SIS190 is not set 754# CONFIG_SIS190 is not set
745# CONFIG_SKGE is not set 755# CONFIG_SKGE is not set
746# CONFIG_SKY2 is not set 756# CONFIG_SKY2 is not set
747# CONFIG_SK98LIN is not set
748# CONFIG_VIA_VELOCITY is not set 757# CONFIG_VIA_VELOCITY is not set
749# CONFIG_TIGON3 is not set 758# CONFIG_TIGON3 is not set
750# CONFIG_BNX2 is not set 759# CONFIG_BNX2 is not set
@@ -763,6 +772,7 @@ CONFIG_NETDEV_10000=y
763# CONFIG_MLX4_CORE is not set 772# CONFIG_MLX4_CORE is not set
764# CONFIG_TEHUTI is not set 773# CONFIG_TEHUTI is not set
765# CONFIG_BNX2X is not set 774# CONFIG_BNX2X is not set
775# CONFIG_SFC is not set
766# CONFIG_TR is not set 776# CONFIG_TR is not set
767 777
768# 778#
@@ -770,6 +780,7 @@ CONFIG_NETDEV_10000=y
770# 780#
771# CONFIG_WLAN_PRE80211 is not set 781# CONFIG_WLAN_PRE80211 is not set
772# CONFIG_WLAN_80211 is not set 782# CONFIG_WLAN_80211 is not set
783# CONFIG_IWLWIFI_LEDS is not set
773 784
774# 785#
775# USB Network Adapters 786# USB Network Adapters
@@ -832,6 +843,7 @@ CONFIG_VT=y
832CONFIG_VT_CONSOLE=y 843CONFIG_VT_CONSOLE=y
833CONFIG_HW_CONSOLE=y 844CONFIG_HW_CONSOLE=y
834# CONFIG_VT_HW_CONSOLE_BINDING is not set 845# CONFIG_VT_HW_CONSOLE_BINDING is not set
846CONFIG_DEVKMEM=y
835# CONFIG_SERIAL_NONSTANDARD is not set 847# CONFIG_SERIAL_NONSTANDARD is not set
836# CONFIG_NOZOMI is not set 848# CONFIG_NOZOMI is not set
837 849
@@ -855,7 +867,6 @@ CONFIG_LEGACY_PTY_COUNT=256
855# CONFIG_IPMI_HANDLER is not set 867# CONFIG_IPMI_HANDLER is not set
856# CONFIG_HW_RANDOM is not set 868# CONFIG_HW_RANDOM is not set
857# CONFIG_NVRAM is not set 869# CONFIG_NVRAM is not set
858# CONFIG_GEN_RTC is not set
859# CONFIG_R3964 is not set 870# CONFIG_R3964 is not set
860# CONFIG_APPLICOM is not set 871# CONFIG_APPLICOM is not set
861# CONFIG_RAW_DRIVER is not set 872# CONFIG_RAW_DRIVER is not set
@@ -866,13 +877,6 @@ CONFIG_I2C_BOARDINFO=y
866CONFIG_I2C_CHARDEV=y 877CONFIG_I2C_CHARDEV=y
867 878
868# 879#
869# I2C Algorithms
870#
871# CONFIG_I2C_ALGOBIT is not set
872# CONFIG_I2C_ALGOPCF is not set
873# CONFIG_I2C_ALGOPCA is not set
874
875#
876# I2C Hardware Bus support 880# I2C Hardware Bus support
877# 881#
878# CONFIG_I2C_ALI1535 is not set 882# CONFIG_I2C_ALI1535 is not set
@@ -898,6 +902,7 @@ CONFIG_I2C_CHARDEV=y
898# CONFIG_I2C_VIA is not set 902# CONFIG_I2C_VIA is not set
899# CONFIG_I2C_VIAPRO is not set 903# CONFIG_I2C_VIAPRO is not set
900# CONFIG_I2C_VOODOO3 is not set 904# CONFIG_I2C_VOODOO3 is not set
905# CONFIG_I2C_PCA_PLATFORM is not set
901CONFIG_I2C_MV64XXX=y 906CONFIG_I2C_MV64XXX=y
902 907
903# 908#
@@ -908,19 +913,13 @@ CONFIG_I2C_MV64XXX=y
908# CONFIG_SENSORS_PCF8574 is not set 913# CONFIG_SENSORS_PCF8574 is not set
909# CONFIG_PCF8575 is not set 914# CONFIG_PCF8575 is not set
910# CONFIG_SENSORS_PCF8591 is not set 915# CONFIG_SENSORS_PCF8591 is not set
911# CONFIG_TPS65010 is not set
912# CONFIG_SENSORS_MAX6875 is not set 916# CONFIG_SENSORS_MAX6875 is not set
913# CONFIG_SENSORS_TSL2550 is not set 917# CONFIG_SENSORS_TSL2550 is not set
914# CONFIG_I2C_DEBUG_CORE is not set 918# CONFIG_I2C_DEBUG_CORE is not set
915# CONFIG_I2C_DEBUG_ALGO is not set 919# CONFIG_I2C_DEBUG_ALGO is not set
916# CONFIG_I2C_DEBUG_BUS is not set 920# CONFIG_I2C_DEBUG_BUS is not set
917# CONFIG_I2C_DEBUG_CHIP is not set 921# CONFIG_I2C_DEBUG_CHIP is not set
918
919#
920# SPI support
921#
922# CONFIG_SPI is not set 922# CONFIG_SPI is not set
923# CONFIG_SPI_MASTER is not set
924# CONFIG_W1 is not set 923# CONFIG_W1 is not set
925# CONFIG_POWER_SUPPLY is not set 924# CONFIG_POWER_SUPPLY is not set
926CONFIG_HWMON=y 925CONFIG_HWMON=y
@@ -990,12 +989,22 @@ CONFIG_SSB_POSSIBLE=y
990# Multifunction device drivers 989# Multifunction device drivers
991# 990#
992# CONFIG_MFD_SM501 is not set 991# CONFIG_MFD_SM501 is not set
992# CONFIG_HTC_PASIC3 is not set
993 993
994# 994#
995# Multimedia devices 995# Multimedia devices
996# 996#
997
998#
999# Multimedia core support
1000#
997# CONFIG_VIDEO_DEV is not set 1001# CONFIG_VIDEO_DEV is not set
998# CONFIG_DVB_CORE is not set 1002# CONFIG_DVB_CORE is not set
1003# CONFIG_VIDEO_MEDIA is not set
1004
1005#
1006# Multimedia drivers
1007#
999# CONFIG_DAB is not set 1008# CONFIG_DAB is not set
1000 1009
1001# 1010#
@@ -1055,11 +1064,13 @@ CONFIG_USB_DEVICEFS=y
1055# 1064#
1056# USB Host Controller Drivers 1065# USB Host Controller Drivers
1057# 1066#
1067# CONFIG_USB_C67X00_HCD is not set
1058CONFIG_USB_EHCI_HCD=y 1068CONFIG_USB_EHCI_HCD=y
1059# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1069# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1060# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1070# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1061CONFIG_USB_EHCI_HCD_PPC_OF=y 1071CONFIG_USB_EHCI_HCD_PPC_OF=y
1062# CONFIG_USB_ISP116X_HCD is not set 1072# CONFIG_USB_ISP116X_HCD is not set
1073# CONFIG_USB_ISP1760_HCD is not set
1063CONFIG_USB_OHCI_HCD=y 1074CONFIG_USB_OHCI_HCD=y
1064# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1075# CONFIG_USB_OHCI_HCD_PPC_OF is not set
1065# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1076# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -1074,6 +1085,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1074# 1085#
1075# CONFIG_USB_ACM is not set 1086# CONFIG_USB_ACM is not set
1076# CONFIG_USB_PRINTER is not set 1087# CONFIG_USB_PRINTER is not set
1088# CONFIG_USB_WDM is not set
1077 1089
1078# 1090#
1079# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1091# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1120,10 +1132,12 @@ CONFIG_USB_MON=y
1120# CONFIG_USB_TRANCEVIBRATOR is not set 1132# CONFIG_USB_TRANCEVIBRATOR is not set
1121# CONFIG_USB_IOWARRIOR is not set 1133# CONFIG_USB_IOWARRIOR is not set
1122# CONFIG_USB_TEST is not set 1134# CONFIG_USB_TEST is not set
1135# CONFIG_USB_ISIGHTFW is not set
1123# CONFIG_USB_GADGET is not set 1136# CONFIG_USB_GADGET is not set
1124# CONFIG_MMC is not set 1137# CONFIG_MMC is not set
1125# CONFIG_MEMSTICK is not set 1138# CONFIG_MEMSTICK is not set
1126# CONFIG_NEW_LEDS is not set 1139# CONFIG_NEW_LEDS is not set
1140# CONFIG_ACCESSIBILITY is not set
1127# CONFIG_INFINIBAND is not set 1141# CONFIG_INFINIBAND is not set
1128# CONFIG_EDAC is not set 1142# CONFIG_EDAC is not set
1129CONFIG_RTC_LIB=y 1143CONFIG_RTC_LIB=y
@@ -1175,11 +1189,8 @@ CONFIG_RTC_DRV_MAX6900=y
1175# 1189#
1176# on-CPU RTC drivers 1190# on-CPU RTC drivers
1177# 1191#
1192# CONFIG_RTC_DRV_PPC is not set
1178# CONFIG_DMADEVICES is not set 1193# CONFIG_DMADEVICES is not set
1179
1180#
1181# Userspace I/O
1182#
1183# CONFIG_UIO is not set 1194# CONFIG_UIO is not set
1184 1195
1185# 1196#
@@ -1199,7 +1210,6 @@ CONFIG_FS_MBCACHE=y
1199# CONFIG_JFS_FS is not set 1210# CONFIG_JFS_FS is not set
1200# CONFIG_FS_POSIX_ACL is not set 1211# CONFIG_FS_POSIX_ACL is not set
1201# CONFIG_XFS_FS is not set 1212# CONFIG_XFS_FS is not set
1202# CONFIG_GFS2_FS is not set
1203# CONFIG_OCFS2_FS is not set 1213# CONFIG_OCFS2_FS is not set
1204CONFIG_DNOTIFY=y 1214CONFIG_DNOTIFY=y
1205CONFIG_INOTIFY=y 1215CONFIG_INOTIFY=y
@@ -1257,7 +1267,6 @@ CONFIG_NETWORK_FILESYSTEMS=y
1257CONFIG_NFS_FS=y 1267CONFIG_NFS_FS=y
1258# CONFIG_NFS_V3 is not set 1268# CONFIG_NFS_V3 is not set
1259# CONFIG_NFS_V4 is not set 1269# CONFIG_NFS_V4 is not set
1260# CONFIG_NFS_DIRECTIO is not set
1261# CONFIG_NFSD is not set 1270# CONFIG_NFSD is not set
1262CONFIG_ROOT_NFS=y 1271CONFIG_ROOT_NFS=y
1263CONFIG_LOCKD=y 1272CONFIG_LOCKD=y
@@ -1300,6 +1309,7 @@ CONFIG_MSDOS_PARTITION=y
1300# Library routines 1309# Library routines
1301# 1310#
1302CONFIG_BITREVERSE=y 1311CONFIG_BITREVERSE=y
1312# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1303# CONFIG_CRC_CCITT is not set 1313# CONFIG_CRC_CCITT is not set
1304# CONFIG_CRC16 is not set 1314# CONFIG_CRC16 is not set
1305# CONFIG_CRC_ITU_T is not set 1315# CONFIG_CRC_ITU_T is not set
@@ -1310,6 +1320,7 @@ CONFIG_PLIST=y
1310CONFIG_HAS_IOMEM=y 1320CONFIG_HAS_IOMEM=y
1311CONFIG_HAS_IOPORT=y 1321CONFIG_HAS_IOPORT=y
1312CONFIG_HAS_DMA=y 1322CONFIG_HAS_DMA=y
1323CONFIG_HAVE_LMB=y
1313 1324
1314# 1325#
1315# Kernel hacking 1326# Kernel hacking
@@ -1317,6 +1328,7 @@ CONFIG_HAS_DMA=y
1317# CONFIG_PRINTK_TIME is not set 1328# CONFIG_PRINTK_TIME is not set
1318CONFIG_ENABLE_WARN_DEPRECATED=y 1329CONFIG_ENABLE_WARN_DEPRECATED=y
1319CONFIG_ENABLE_MUST_CHECK=y 1330CONFIG_ENABLE_MUST_CHECK=y
1331CONFIG_FRAME_WARN=1024
1320# CONFIG_MAGIC_SYSRQ is not set 1332# CONFIG_MAGIC_SYSRQ is not set
1321# CONFIG_UNUSED_SYMBOLS is not set 1333# CONFIG_UNUSED_SYMBOLS is not set
1322# CONFIG_DEBUG_FS is not set 1334# CONFIG_DEBUG_FS is not set
@@ -1326,6 +1338,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1326# CONFIG_SLUB_STATS is not set 1338# CONFIG_SLUB_STATS is not set
1327CONFIG_DEBUG_BUGVERBOSE=y 1339CONFIG_DEBUG_BUGVERBOSE=y
1328# CONFIG_SAMPLES is not set 1340# CONFIG_SAMPLES is not set
1341# CONFIG_IRQSTACKS is not set
1329# CONFIG_BOOTX_TEXT is not set 1342# CONFIG_BOOTX_TEXT is not set
1330# CONFIG_PPC_EARLY_DEBUG is not set 1343# CONFIG_PPC_EARLY_DEBUG is not set
1331 1344
@@ -1336,48 +1349,78 @@ CONFIG_DEBUG_BUGVERBOSE=y
1336# CONFIG_SECURITY is not set 1349# CONFIG_SECURITY is not set
1337# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1350# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1338CONFIG_CRYPTO=y 1351CONFIG_CRYPTO=y
1339# CONFIG_CRYPTO_SEQIV is not set 1352
1353#
1354# Crypto core or helper
1355#
1340# CONFIG_CRYPTO_MANAGER is not set 1356# CONFIG_CRYPTO_MANAGER is not set
1357# CONFIG_CRYPTO_GF128MUL is not set
1358# CONFIG_CRYPTO_NULL is not set
1359# CONFIG_CRYPTO_CRYPTD is not set
1360# CONFIG_CRYPTO_AUTHENC is not set
1361
1362#
1363# Authenticated Encryption with Associated Data
1364#
1365# CONFIG_CRYPTO_CCM is not set
1366# CONFIG_CRYPTO_GCM is not set
1367# CONFIG_CRYPTO_SEQIV is not set
1368
1369#
1370# Block modes
1371#
1372# CONFIG_CRYPTO_CBC is not set
1373# CONFIG_CRYPTO_CTR is not set
1374# CONFIG_CRYPTO_CTS is not set
1375# CONFIG_CRYPTO_ECB is not set
1376# CONFIG_CRYPTO_LRW is not set
1377# CONFIG_CRYPTO_PCBC is not set
1378# CONFIG_CRYPTO_XTS is not set
1379
1380#
1381# Hash modes
1382#
1341# CONFIG_CRYPTO_HMAC is not set 1383# CONFIG_CRYPTO_HMAC is not set
1342# CONFIG_CRYPTO_XCBC is not set 1384# CONFIG_CRYPTO_XCBC is not set
1343# CONFIG_CRYPTO_NULL is not set 1385
1386#
1387# Digest
1388#
1389# CONFIG_CRYPTO_CRC32C is not set
1344# CONFIG_CRYPTO_MD4 is not set 1390# CONFIG_CRYPTO_MD4 is not set
1345# CONFIG_CRYPTO_MD5 is not set 1391# CONFIG_CRYPTO_MD5 is not set
1392# CONFIG_CRYPTO_MICHAEL_MIC is not set
1346# CONFIG_CRYPTO_SHA1 is not set 1393# CONFIG_CRYPTO_SHA1 is not set
1347# CONFIG_CRYPTO_SHA256 is not set 1394# CONFIG_CRYPTO_SHA256 is not set
1348# CONFIG_CRYPTO_SHA512 is not set 1395# CONFIG_CRYPTO_SHA512 is not set
1349# CONFIG_CRYPTO_WP512 is not set
1350# CONFIG_CRYPTO_TGR192 is not set 1396# CONFIG_CRYPTO_TGR192 is not set
1351# CONFIG_CRYPTO_GF128MUL is not set 1397# CONFIG_CRYPTO_WP512 is not set
1352# CONFIG_CRYPTO_ECB is not set 1398
1353# CONFIG_CRYPTO_CBC is not set 1399#
1354# CONFIG_CRYPTO_PCBC is not set 1400# Ciphers
1355# CONFIG_CRYPTO_LRW is not set 1401#
1356# CONFIG_CRYPTO_XTS is not set
1357# CONFIG_CRYPTO_CTR is not set
1358# CONFIG_CRYPTO_GCM is not set
1359# CONFIG_CRYPTO_CCM is not set
1360# CONFIG_CRYPTO_CRYPTD is not set
1361# CONFIG_CRYPTO_DES is not set
1362# CONFIG_CRYPTO_FCRYPT is not set
1363# CONFIG_CRYPTO_BLOWFISH is not set
1364# CONFIG_CRYPTO_TWOFISH is not set
1365# CONFIG_CRYPTO_SERPENT is not set
1366# CONFIG_CRYPTO_AES is not set 1402# CONFIG_CRYPTO_AES is not set
1403# CONFIG_CRYPTO_ANUBIS is not set
1404# CONFIG_CRYPTO_ARC4 is not set
1405# CONFIG_CRYPTO_BLOWFISH is not set
1406# CONFIG_CRYPTO_CAMELLIA is not set
1367# CONFIG_CRYPTO_CAST5 is not set 1407# CONFIG_CRYPTO_CAST5 is not set
1368# CONFIG_CRYPTO_CAST6 is not set 1408# CONFIG_CRYPTO_CAST6 is not set
1369# CONFIG_CRYPTO_TEA is not set 1409# CONFIG_CRYPTO_DES is not set
1370# CONFIG_CRYPTO_ARC4 is not set 1410# CONFIG_CRYPTO_FCRYPT is not set
1371# CONFIG_CRYPTO_KHAZAD is not set 1411# CONFIG_CRYPTO_KHAZAD is not set
1372# CONFIG_CRYPTO_ANUBIS is not set
1373# CONFIG_CRYPTO_SEED is not set
1374# CONFIG_CRYPTO_SALSA20 is not set 1412# CONFIG_CRYPTO_SALSA20 is not set
1413# CONFIG_CRYPTO_SEED is not set
1414# CONFIG_CRYPTO_SERPENT is not set
1415# CONFIG_CRYPTO_TEA is not set
1416# CONFIG_CRYPTO_TWOFISH is not set
1417
1418#
1419# Compression
1420#
1375# CONFIG_CRYPTO_DEFLATE is not set 1421# CONFIG_CRYPTO_DEFLATE is not set
1376# CONFIG_CRYPTO_MICHAEL_MIC is not set
1377# CONFIG_CRYPTO_CRC32C is not set
1378# CONFIG_CRYPTO_CAMELLIA is not set
1379# CONFIG_CRYPTO_AUTHENC is not set
1380# CONFIG_CRYPTO_LZO is not set 1422# CONFIG_CRYPTO_LZO is not set
1381CONFIG_CRYPTO_HW=y 1423CONFIG_CRYPTO_HW=y
1382# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1424# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1383# CONFIG_PPC_CLOCK is not set 1425# CONFIG_PPC_CLOCK is not set
1426# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/sbc8641d_defconfig b/arch/powerpc/configs/sbc8641d_defconfig
index 3180125aa6c4..8227510b41a9 100644
--- a/arch/powerpc/configs/sbc8641d_defconfig
+++ b/arch/powerpc/configs/sbc8641d_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc5
4# Thu Apr 10 18:03:25 2008 4# Mon Jun 9 08:52:19 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_GENERIC_LOCKBREAK=y 38CONFIG_GENERIC_LOCKBREAK=y
37CONFIG_ARCH_HAS_ILOG2_U32=y 39CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -90,6 +92,7 @@ CONFIG_INITRAMFS_SOURCE=""
90CONFIG_SYSCTL=y 92CONFIG_SYSCTL=y
91CONFIG_EMBEDDED=y 93CONFIG_EMBEDDED=y
92CONFIG_SYSCTL_SYSCALL=y 94CONFIG_SYSCTL_SYSCALL=y
95CONFIG_SYSCTL_SYSCALL_CHECK=y
93CONFIG_KALLSYMS=y 96CONFIG_KALLSYMS=y
94# CONFIG_KALLSYMS_ALL is not set 97# CONFIG_KALLSYMS_ALL is not set
95# CONFIG_KALLSYMS_EXTRA_PASS is not set 98# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -116,12 +119,14 @@ CONFIG_HAVE_OPROFILE=y
116# CONFIG_KPROBES is not set 119# CONFIG_KPROBES is not set
117CONFIG_HAVE_KPROBES=y 120CONFIG_HAVE_KPROBES=y
118CONFIG_HAVE_KRETPROBES=y 121CONFIG_HAVE_KRETPROBES=y
122# CONFIG_HAVE_DMA_ATTRS is not set
119CONFIG_PROC_PAGE_MONITOR=y 123CONFIG_PROC_PAGE_MONITOR=y
120CONFIG_SLABINFO=y 124CONFIG_SLABINFO=y
121CONFIG_RT_MUTEXES=y 125CONFIG_RT_MUTEXES=y
122# CONFIG_TINY_SHMEM is not set 126# CONFIG_TINY_SHMEM is not set
123CONFIG_BASE_SMALL=0 127CONFIG_BASE_SMALL=0
124CONFIG_MODULES=y 128CONFIG_MODULES=y
129# CONFIG_MODULE_FORCE_LOAD is not set
125CONFIG_MODULE_UNLOAD=y 130CONFIG_MODULE_UNLOAD=y
126# CONFIG_MODULE_FORCE_UNLOAD is not set 131# CONFIG_MODULE_FORCE_UNLOAD is not set
127# CONFIG_MODVERSIONS is not set 132# CONFIG_MODVERSIONS is not set
@@ -197,7 +202,6 @@ CONFIG_PREEMPT=y
197# CONFIG_PREEMPT_RCU is not set 202# CONFIG_PREEMPT_RCU is not set
198CONFIG_BINFMT_ELF=y 203CONFIG_BINFMT_ELF=y
199CONFIG_BINFMT_MISC=m 204CONFIG_BINFMT_MISC=m
200CONFIG_FORCE_MAX_ZONEORDER=11
201# CONFIG_IOMMU_HELPER is not set 205# CONFIG_IOMMU_HELPER is not set
202CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 206CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
203CONFIG_ARCH_HAS_WALK_MEMORY=y 207CONFIG_ARCH_HAS_WALK_MEMORY=y
@@ -213,11 +217,13 @@ CONFIG_FLATMEM=y
213CONFIG_FLAT_NODE_MEM_MAP=y 217CONFIG_FLAT_NODE_MEM_MAP=y
214# CONFIG_SPARSEMEM_STATIC is not set 218# CONFIG_SPARSEMEM_STATIC is not set
215# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 219# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
220CONFIG_PAGEFLAGS_EXTENDED=y
216CONFIG_SPLIT_PTLOCK_CPUS=4 221CONFIG_SPLIT_PTLOCK_CPUS=4
217# CONFIG_RESOURCES_64BIT is not set 222# CONFIG_RESOURCES_64BIT is not set
218CONFIG_ZONE_DMA_FLAG=1 223CONFIG_ZONE_DMA_FLAG=1
219CONFIG_BOUNCE=y 224CONFIG_BOUNCE=y
220CONFIG_VIRT_TO_BUS=y 225CONFIG_VIRT_TO_BUS=y
226CONFIG_FORCE_MAX_ZONEORDER=11
221# CONFIG_PROC_DEVICETREE is not set 227# CONFIG_PROC_DEVICETREE is not set
222# CONFIG_CMDLINE_BOOL is not set 228# CONFIG_CMDLINE_BOOL is not set
223# CONFIG_PM is not set 229# CONFIG_PM is not set
@@ -237,12 +243,14 @@ CONFIG_PCI_DOMAINS=y
237CONFIG_PCI_SYSCALL=y 243CONFIG_PCI_SYSCALL=y
238CONFIG_PCIEPORTBUS=y 244CONFIG_PCIEPORTBUS=y
239CONFIG_PCIEAER=y 245CONFIG_PCIEAER=y
246# CONFIG_PCIEASPM is not set
240CONFIG_ARCH_SUPPORTS_MSI=y 247CONFIG_ARCH_SUPPORTS_MSI=y
241# CONFIG_PCI_MSI is not set 248# CONFIG_PCI_MSI is not set
242CONFIG_PCI_LEGACY=y 249CONFIG_PCI_LEGACY=y
243# CONFIG_PCI_DEBUG is not set 250# CONFIG_PCI_DEBUG is not set
244# CONFIG_PCCARD is not set 251# CONFIG_PCCARD is not set
245# CONFIG_HOTPLUG_PCI is not set 252# CONFIG_HOTPLUG_PCI is not set
253# CONFIG_HAS_RAPIDIO is not set
246 254
247# 255#
248# Advanced setup 256# Advanced setup
@@ -252,11 +260,11 @@ CONFIG_PCI_LEGACY=y
252# 260#
253# Default settings for advanced configuration options are used 261# Default settings for advanced configuration options are used
254# 262#
255CONFIG_HIGHMEM_START=0xfe000000
256CONFIG_LOWMEM_SIZE=0x30000000 263CONFIG_LOWMEM_SIZE=0x30000000
264CONFIG_PAGE_OFFSET=0xc0000000
257CONFIG_KERNEL_START=0xc0000000 265CONFIG_KERNEL_START=0xc0000000
266CONFIG_PHYSICAL_START=0x00000000
258CONFIG_TASK_SIZE=0xc0000000 267CONFIG_TASK_SIZE=0xc0000000
259CONFIG_BOOT_LOAD=0x00800000
260 268
261# 269#
262# Networking 270# Networking
@@ -328,8 +336,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
328CONFIG_INET6_XFRM_MODE_BEET=m 336CONFIG_INET6_XFRM_MODE_BEET=m
329# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 337# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
330CONFIG_IPV6_SIT=m 338CONFIG_IPV6_SIT=m
339CONFIG_IPV6_NDISC_NODETYPE=y
331CONFIG_IPV6_TUNNEL=m 340CONFIG_IPV6_TUNNEL=m
332# CONFIG_IPV6_MULTIPLE_TABLES is not set 341# CONFIG_IPV6_MULTIPLE_TABLES is not set
342# CONFIG_IPV6_MROUTE is not set
333# CONFIG_NETLABEL is not set 343# CONFIG_NETLABEL is not set
334# CONFIG_NETWORK_SECMARK is not set 344# CONFIG_NETWORK_SECMARK is not set
335CONFIG_NETFILTER=y 345CONFIG_NETFILTER=y
@@ -534,6 +544,7 @@ CONFIG_MTD_PARTITIONS=y
534# CONFIG_MTD_REDBOOT_PARTS is not set 544# CONFIG_MTD_REDBOOT_PARTS is not set
535# CONFIG_MTD_CMDLINE_PARTS is not set 545# CONFIG_MTD_CMDLINE_PARTS is not set
536# CONFIG_MTD_OF_PARTS is not set 546# CONFIG_MTD_OF_PARTS is not set
547# CONFIG_MTD_AR7_PARTS is not set
537 548
538# 549#
539# User Modules And Translation Layers 550# User Modules And Translation Layers
@@ -610,6 +621,7 @@ CONFIG_MTD_PHYSMAP_OF=y
610# 621#
611# CONFIG_MTD_UBI is not set 622# CONFIG_MTD_UBI is not set
612CONFIG_OF_DEVICE=y 623CONFIG_OF_DEVICE=y
624CONFIG_OF_I2C=y
613# CONFIG_PARPORT is not set 625# CONFIG_PARPORT is not set
614CONFIG_BLK_DEV=y 626CONFIG_BLK_DEV=y
615# CONFIG_BLK_DEV_FD is not set 627# CONFIG_BLK_DEV_FD is not set
@@ -727,7 +739,6 @@ CONFIG_NETDEV_1000=y
727# CONFIG_SIS190 is not set 739# CONFIG_SIS190 is not set
728# CONFIG_SKGE is not set 740# CONFIG_SKGE is not set
729# CONFIG_SKY2 is not set 741# CONFIG_SKY2 is not set
730# CONFIG_SK98LIN is not set
731# CONFIG_VIA_VELOCITY is not set 742# CONFIG_VIA_VELOCITY is not set
732# CONFIG_TIGON3 is not set 743# CONFIG_TIGON3 is not set
733# CONFIG_BNX2 is not set 744# CONFIG_BNX2 is not set
@@ -743,6 +754,7 @@ CONFIG_GIANFAR=y
743# 754#
744# CONFIG_WLAN_PRE80211 is not set 755# CONFIG_WLAN_PRE80211 is not set
745# CONFIG_WLAN_80211 is not set 756# CONFIG_WLAN_80211 is not set
757# CONFIG_IWLWIFI_LEDS is not set
746# CONFIG_WAN is not set 758# CONFIG_WAN is not set
747CONFIG_ATM_DRIVERS=y 759CONFIG_ATM_DRIVERS=y
748# CONFIG_ATM_DUMMY is not set 760# CONFIG_ATM_DUMMY is not set
@@ -825,6 +837,7 @@ CONFIG_VT=y
825CONFIG_VT_CONSOLE=y 837CONFIG_VT_CONSOLE=y
826CONFIG_HW_CONSOLE=y 838CONFIG_HW_CONSOLE=y
827# CONFIG_VT_HW_CONSOLE_BINDING is not set 839# CONFIG_VT_HW_CONSOLE_BINDING is not set
840CONFIG_DEVKMEM=y
828# CONFIG_SERIAL_NONSTANDARD is not set 841# CONFIG_SERIAL_NONSTANDARD is not set
829# CONFIG_NOZOMI is not set 842# CONFIG_NOZOMI is not set
830 843
@@ -863,13 +876,6 @@ CONFIG_I2C_BOARDINFO=y
863CONFIG_I2C_CHARDEV=y 876CONFIG_I2C_CHARDEV=y
864 877
865# 878#
866# I2C Algorithms
867#
868# CONFIG_I2C_ALGOBIT is not set
869# CONFIG_I2C_ALGOPCF is not set
870# CONFIG_I2C_ALGOPCA is not set
871
872#
873# I2C Hardware Bus support 879# I2C Hardware Bus support
874# 880#
875# CONFIG_I2C_ALI1535 is not set 881# CONFIG_I2C_ALI1535 is not set
@@ -895,6 +901,7 @@ CONFIG_I2C_MPC=y
895# CONFIG_I2C_VIA is not set 901# CONFIG_I2C_VIA is not set
896# CONFIG_I2C_VIAPRO is not set 902# CONFIG_I2C_VIAPRO is not set
897# CONFIG_I2C_VOODOO3 is not set 903# CONFIG_I2C_VOODOO3 is not set
904# CONFIG_I2C_PCA_PLATFORM is not set
898 905
899# 906#
900# Miscellaneous I2C Chip support 907# Miscellaneous I2C Chip support
@@ -904,19 +911,13 @@ CONFIG_I2C_MPC=y
904# CONFIG_SENSORS_PCF8574 is not set 911# CONFIG_SENSORS_PCF8574 is not set
905# CONFIG_PCF8575 is not set 912# CONFIG_PCF8575 is not set
906# CONFIG_SENSORS_PCF8591 is not set 913# CONFIG_SENSORS_PCF8591 is not set
907# CONFIG_TPS65010 is not set
908# CONFIG_SENSORS_MAX6875 is not set 914# CONFIG_SENSORS_MAX6875 is not set
909# CONFIG_SENSORS_TSL2550 is not set 915# CONFIG_SENSORS_TSL2550 is not set
910# CONFIG_I2C_DEBUG_CORE is not set 916# CONFIG_I2C_DEBUG_CORE is not set
911# CONFIG_I2C_DEBUG_ALGO is not set 917# CONFIG_I2C_DEBUG_ALGO is not set
912# CONFIG_I2C_DEBUG_BUS is not set 918# CONFIG_I2C_DEBUG_BUS is not set
913# CONFIG_I2C_DEBUG_CHIP is not set 919# CONFIG_I2C_DEBUG_CHIP is not set
914
915#
916# SPI support
917#
918# CONFIG_SPI is not set 920# CONFIG_SPI is not set
919# CONFIG_SPI_MASTER is not set
920# CONFIG_W1 is not set 921# CONFIG_W1 is not set
921# CONFIG_POWER_SUPPLY is not set 922# CONFIG_POWER_SUPPLY is not set
922CONFIG_HWMON=y 923CONFIG_HWMON=y
@@ -998,12 +999,22 @@ CONFIG_SSB_POSSIBLE=y
998# Multifunction device drivers 999# Multifunction device drivers
999# 1000#
1000# CONFIG_MFD_SM501 is not set 1001# CONFIG_MFD_SM501 is not set
1002# CONFIG_HTC_PASIC3 is not set
1001 1003
1002# 1004#
1003# Multimedia devices 1005# Multimedia devices
1004# 1006#
1007
1008#
1009# Multimedia core support
1010#
1005# CONFIG_VIDEO_DEV is not set 1011# CONFIG_VIDEO_DEV is not set
1006# CONFIG_DVB_CORE is not set 1012# CONFIG_DVB_CORE is not set
1013# CONFIG_VIDEO_MEDIA is not set
1014
1015#
1016# Multimedia drivers
1017#
1007CONFIG_DAB=y 1018CONFIG_DAB=y
1008 1019
1009# 1020#
@@ -1041,6 +1052,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
1041CONFIG_USB_ARCH_HAS_OHCI=y 1052CONFIG_USB_ARCH_HAS_OHCI=y
1042CONFIG_USB_ARCH_HAS_EHCI=y 1053CONFIG_USB_ARCH_HAS_EHCI=y
1043# CONFIG_USB is not set 1054# CONFIG_USB is not set
1055# CONFIG_USB_OTG_WHITELIST is not set
1056# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1044 1057
1045# 1058#
1046# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1059# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1049,14 +1062,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
1049# CONFIG_MMC is not set 1062# CONFIG_MMC is not set
1050# CONFIG_MEMSTICK is not set 1063# CONFIG_MEMSTICK is not set
1051# CONFIG_NEW_LEDS is not set 1064# CONFIG_NEW_LEDS is not set
1065# CONFIG_ACCESSIBILITY is not set
1052# CONFIG_INFINIBAND is not set 1066# CONFIG_INFINIBAND is not set
1053# CONFIG_EDAC is not set 1067# CONFIG_EDAC is not set
1054# CONFIG_RTC_CLASS is not set 1068# CONFIG_RTC_CLASS is not set
1055# CONFIG_DMADEVICES is not set 1069# CONFIG_DMADEVICES is not set
1056
1057#
1058# Userspace I/O
1059#
1060# CONFIG_UIO is not set 1070# CONFIG_UIO is not set
1061 1071
1062# 1072#
@@ -1084,8 +1094,8 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
1084# CONFIG_JFS_FS is not set 1094# CONFIG_JFS_FS is not set
1085CONFIG_FS_POSIX_ACL=y 1095CONFIG_FS_POSIX_ACL=y
1086# CONFIG_XFS_FS is not set 1096# CONFIG_XFS_FS is not set
1087# CONFIG_GFS2_FS is not set
1088CONFIG_OCFS2_FS=m 1097CONFIG_OCFS2_FS=m
1098CONFIG_OCFS2_FS_O2CB=m
1089CONFIG_OCFS2_DEBUG_MASKLOG=y 1099CONFIG_OCFS2_DEBUG_MASKLOG=y
1090# CONFIG_OCFS2_DEBUG_FS is not set 1100# CONFIG_OCFS2_DEBUG_FS is not set
1091CONFIG_DNOTIFY=y 1101CONFIG_DNOTIFY=y
@@ -1145,7 +1155,6 @@ CONFIG_NFS_FS=y
1145CONFIG_NFS_V3=y 1155CONFIG_NFS_V3=y
1146# CONFIG_NFS_V3_ACL is not set 1156# CONFIG_NFS_V3_ACL is not set
1147CONFIG_NFS_V4=y 1157CONFIG_NFS_V4=y
1148CONFIG_NFS_DIRECTIO=y
1149# CONFIG_NFSD is not set 1158# CONFIG_NFSD is not set
1150CONFIG_ROOT_NFS=y 1159CONFIG_ROOT_NFS=y
1151CONFIG_LOCKD=y 1160CONFIG_LOCKD=y
@@ -1221,6 +1230,7 @@ CONFIG_NLS_UTF8=m
1221# Library routines 1230# Library routines
1222# 1231#
1223CONFIG_BITREVERSE=y 1232CONFIG_BITREVERSE=y
1233# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1224CONFIG_CRC_CCITT=m 1234CONFIG_CRC_CCITT=m
1225# CONFIG_CRC16 is not set 1235# CONFIG_CRC16 is not set
1226# CONFIG_CRC_ITU_T is not set 1236# CONFIG_CRC_ITU_T is not set
@@ -1241,6 +1251,7 @@ CONFIG_HAVE_LMB=y
1241# CONFIG_PRINTK_TIME is not set 1251# CONFIG_PRINTK_TIME is not set
1242CONFIG_ENABLE_WARN_DEPRECATED=y 1252CONFIG_ENABLE_WARN_DEPRECATED=y
1243CONFIG_ENABLE_MUST_CHECK=y 1253CONFIG_ENABLE_MUST_CHECK=y
1254CONFIG_FRAME_WARN=1024
1244CONFIG_MAGIC_SYSRQ=y 1255CONFIG_MAGIC_SYSRQ=y
1245# CONFIG_UNUSED_SYMBOLS is not set 1256# CONFIG_UNUSED_SYMBOLS is not set
1246CONFIG_DEBUG_FS=y 1257CONFIG_DEBUG_FS=y
@@ -1251,6 +1262,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1251CONFIG_SCHED_DEBUG=y 1262CONFIG_SCHED_DEBUG=y
1252# CONFIG_SCHEDSTATS is not set 1263# CONFIG_SCHEDSTATS is not set
1253# CONFIG_TIMER_STATS is not set 1264# CONFIG_TIMER_STATS is not set
1265# CONFIG_DEBUG_OBJECTS is not set
1254# CONFIG_DEBUG_SLAB is not set 1266# CONFIG_DEBUG_SLAB is not set
1255# CONFIG_DEBUG_RT_MUTEXES is not set 1267# CONFIG_DEBUG_RT_MUTEXES is not set
1256# CONFIG_RT_MUTEX_TESTER is not set 1268# CONFIG_RT_MUTEX_TESTER is not set
@@ -1262,6 +1274,7 @@ CONFIG_SCHED_DEBUG=y
1262# CONFIG_DEBUG_BUGVERBOSE is not set 1274# CONFIG_DEBUG_BUGVERBOSE is not set
1263CONFIG_DEBUG_INFO=y 1275CONFIG_DEBUG_INFO=y
1264# CONFIG_DEBUG_VM is not set 1276# CONFIG_DEBUG_VM is not set
1277# CONFIG_DEBUG_WRITECOUNT is not set
1265# CONFIG_DEBUG_LIST is not set 1278# CONFIG_DEBUG_LIST is not set
1266# CONFIG_DEBUG_SG is not set 1279# CONFIG_DEBUG_SG is not set
1267# CONFIG_BOOT_PRINTK_DELAY is not set 1280# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1274,6 +1287,7 @@ CONFIG_DEBUG_INFO=y
1274# CONFIG_DEBUG_PAGEALLOC is not set 1287# CONFIG_DEBUG_PAGEALLOC is not set
1275CONFIG_DEBUGGER=y 1288CONFIG_DEBUGGER=y
1276# CONFIG_XMON is not set 1289# CONFIG_XMON is not set
1290# CONFIG_IRQSTACKS is not set
1277# CONFIG_VIRQ_DEBUG is not set 1291# CONFIG_VIRQ_DEBUG is not set
1278# CONFIG_BDI_SWITCH is not set 1292# CONFIG_BDI_SWITCH is not set
1279# CONFIG_PPC_EARLY_DEBUG is not set 1293# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1289,54 +1303,84 @@ CONFIG_SECURITY_CAPABILITIES=y
1289# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1303# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1290CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 1304CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
1291CONFIG_CRYPTO=y 1305CONFIG_CRYPTO=y
1306
1307#
1308# Crypto core or helper
1309#
1292CONFIG_CRYPTO_ALGAPI=y 1310CONFIG_CRYPTO_ALGAPI=y
1293CONFIG_CRYPTO_AEAD=m 1311CONFIG_CRYPTO_AEAD=m
1294CONFIG_CRYPTO_BLKCIPHER=y 1312CONFIG_CRYPTO_BLKCIPHER=y
1295# CONFIG_CRYPTO_SEQIV is not set
1296CONFIG_CRYPTO_HASH=y 1313CONFIG_CRYPTO_HASH=y
1297CONFIG_CRYPTO_MANAGER=y 1314CONFIG_CRYPTO_MANAGER=y
1315# CONFIG_CRYPTO_GF128MUL is not set
1316CONFIG_CRYPTO_NULL=m
1317# CONFIG_CRYPTO_CRYPTD is not set
1318CONFIG_CRYPTO_AUTHENC=m
1319CONFIG_CRYPTO_TEST=m
1320
1321#
1322# Authenticated Encryption with Associated Data
1323#
1324# CONFIG_CRYPTO_CCM is not set
1325# CONFIG_CRYPTO_GCM is not set
1326# CONFIG_CRYPTO_SEQIV is not set
1327
1328#
1329# Block modes
1330#
1331CONFIG_CRYPTO_CBC=y
1332# CONFIG_CRYPTO_CTR is not set
1333# CONFIG_CRYPTO_CTS is not set
1334CONFIG_CRYPTO_ECB=m
1335# CONFIG_CRYPTO_LRW is not set
1336CONFIG_CRYPTO_PCBC=m
1337# CONFIG_CRYPTO_XTS is not set
1338
1339#
1340# Hash modes
1341#
1298CONFIG_CRYPTO_HMAC=y 1342CONFIG_CRYPTO_HMAC=y
1299# CONFIG_CRYPTO_XCBC is not set 1343# CONFIG_CRYPTO_XCBC is not set
1300CONFIG_CRYPTO_NULL=m 1344
1345#
1346# Digest
1347#
1348CONFIG_CRYPTO_CRC32C=m
1301CONFIG_CRYPTO_MD4=m 1349CONFIG_CRYPTO_MD4=m
1302CONFIG_CRYPTO_MD5=y 1350CONFIG_CRYPTO_MD5=y
1351CONFIG_CRYPTO_MICHAEL_MIC=m
1303CONFIG_CRYPTO_SHA1=m 1352CONFIG_CRYPTO_SHA1=m
1304CONFIG_CRYPTO_SHA256=m 1353CONFIG_CRYPTO_SHA256=m
1305CONFIG_CRYPTO_SHA512=m 1354CONFIG_CRYPTO_SHA512=m
1306CONFIG_CRYPTO_WP512=m
1307# CONFIG_CRYPTO_TGR192 is not set 1355# CONFIG_CRYPTO_TGR192 is not set
1308# CONFIG_CRYPTO_GF128MUL is not set 1356CONFIG_CRYPTO_WP512=m
1309CONFIG_CRYPTO_ECB=m 1357
1310CONFIG_CRYPTO_CBC=y 1358#
1311CONFIG_CRYPTO_PCBC=m 1359# Ciphers
1312# CONFIG_CRYPTO_LRW is not set 1360#
1313# CONFIG_CRYPTO_XTS is not set
1314# CONFIG_CRYPTO_CTR is not set
1315# CONFIG_CRYPTO_GCM is not set
1316# CONFIG_CRYPTO_CCM is not set
1317# CONFIG_CRYPTO_CRYPTD is not set
1318CONFIG_CRYPTO_DES=y
1319# CONFIG_CRYPTO_FCRYPT is not set
1320CONFIG_CRYPTO_BLOWFISH=m
1321CONFIG_CRYPTO_TWOFISH=m
1322CONFIG_CRYPTO_TWOFISH_COMMON=m
1323CONFIG_CRYPTO_SERPENT=m
1324CONFIG_CRYPTO_AES=m 1361CONFIG_CRYPTO_AES=m
1362CONFIG_CRYPTO_ANUBIS=m
1363CONFIG_CRYPTO_ARC4=m
1364CONFIG_CRYPTO_BLOWFISH=m
1365# CONFIG_CRYPTO_CAMELLIA is not set
1325CONFIG_CRYPTO_CAST5=m 1366CONFIG_CRYPTO_CAST5=m
1326CONFIG_CRYPTO_CAST6=m 1367CONFIG_CRYPTO_CAST6=m
1327CONFIG_CRYPTO_TEA=m 1368CONFIG_CRYPTO_DES=y
1328CONFIG_CRYPTO_ARC4=m 1369# CONFIG_CRYPTO_FCRYPT is not set
1329CONFIG_CRYPTO_KHAZAD=m 1370CONFIG_CRYPTO_KHAZAD=m
1330CONFIG_CRYPTO_ANUBIS=m
1331# CONFIG_CRYPTO_SEED is not set
1332# CONFIG_CRYPTO_SALSA20 is not set 1371# CONFIG_CRYPTO_SALSA20 is not set
1372# CONFIG_CRYPTO_SEED is not set
1373CONFIG_CRYPTO_SERPENT=m
1374CONFIG_CRYPTO_TEA=m
1375CONFIG_CRYPTO_TWOFISH=m
1376CONFIG_CRYPTO_TWOFISH_COMMON=m
1377
1378#
1379# Compression
1380#
1333CONFIG_CRYPTO_DEFLATE=m 1381CONFIG_CRYPTO_DEFLATE=m
1334CONFIG_CRYPTO_MICHAEL_MIC=m
1335CONFIG_CRYPTO_CRC32C=m
1336# CONFIG_CRYPTO_CAMELLIA is not set
1337CONFIG_CRYPTO_TEST=m
1338CONFIG_CRYPTO_AUTHENC=m
1339# CONFIG_CRYPTO_LZO is not set 1382# CONFIG_CRYPTO_LZO is not set
1340CONFIG_CRYPTO_HW=y 1383CONFIG_CRYPTO_HW=y
1341# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1384# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1342# CONFIG_PPC_CLOCK is not set 1385# CONFIG_PPC_CLOCK is not set
1386# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/storcenter_defconfig b/arch/powerpc/configs/storcenter_defconfig
index fdbfd39a3aca..88f6aa8273be 100644
--- a/arch/powerpc/configs/storcenter_defconfig
+++ b/arch/powerpc/configs/storcenter_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc7 3# Linux kernel version: 2.6.26-rc5
4# Mon Mar 31 11:37:19 2008 4# Mon Jun 9 08:52:20 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -85,6 +87,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
85CONFIG_SYSCTL=y 87CONFIG_SYSCTL=y
86CONFIG_EMBEDDED=y 88CONFIG_EMBEDDED=y
87CONFIG_SYSCTL_SYSCALL=y 89CONFIG_SYSCTL_SYSCALL=y
90CONFIG_SYSCTL_SYSCALL_CHECK=y
88# CONFIG_KALLSYMS is not set 91# CONFIG_KALLSYMS is not set
89CONFIG_HOTPLUG=y 92CONFIG_HOTPLUG=y
90CONFIG_PRINTK=y 93CONFIG_PRINTK=y
@@ -109,12 +112,14 @@ CONFIG_SLUB=y
109CONFIG_HAVE_OPROFILE=y 112CONFIG_HAVE_OPROFILE=y
110CONFIG_HAVE_KPROBES=y 113CONFIG_HAVE_KPROBES=y
111CONFIG_HAVE_KRETPROBES=y 114CONFIG_HAVE_KRETPROBES=y
115# CONFIG_HAVE_DMA_ATTRS is not set
112CONFIG_PROC_PAGE_MONITOR=y 116CONFIG_PROC_PAGE_MONITOR=y
113CONFIG_SLABINFO=y 117CONFIG_SLABINFO=y
114CONFIG_RT_MUTEXES=y 118CONFIG_RT_MUTEXES=y
115# CONFIG_TINY_SHMEM is not set 119# CONFIG_TINY_SHMEM is not set
116CONFIG_BASE_SMALL=0 120CONFIG_BASE_SMALL=0
117CONFIG_MODULES=y 121CONFIG_MODULES=y
122# CONFIG_MODULE_FORCE_LOAD is not set
118CONFIG_MODULE_UNLOAD=y 123CONFIG_MODULE_UNLOAD=y
119# CONFIG_MODULE_FORCE_UNLOAD is not set 124# CONFIG_MODULE_FORCE_UNLOAD is not set
120# CONFIG_MODVERSIONS is not set 125# CONFIG_MODVERSIONS is not set
@@ -214,11 +219,13 @@ CONFIG_FLATMEM=y
214CONFIG_FLAT_NODE_MEM_MAP=y 219CONFIG_FLAT_NODE_MEM_MAP=y
215# CONFIG_SPARSEMEM_STATIC is not set 220# CONFIG_SPARSEMEM_STATIC is not set
216# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 221# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
222CONFIG_PAGEFLAGS_EXTENDED=y
217CONFIG_SPLIT_PTLOCK_CPUS=4 223CONFIG_SPLIT_PTLOCK_CPUS=4
218# CONFIG_RESOURCES_64BIT is not set 224# CONFIG_RESOURCES_64BIT is not set
219CONFIG_ZONE_DMA_FLAG=1 225CONFIG_ZONE_DMA_FLAG=1
220CONFIG_BOUNCE=y 226CONFIG_BOUNCE=y
221CONFIG_VIRT_TO_BUS=y 227CONFIG_VIRT_TO_BUS=y
228CONFIG_FORCE_MAX_ZONEORDER=11
222CONFIG_PROC_DEVICETREE=y 229CONFIG_PROC_DEVICETREE=y
223CONFIG_CMDLINE_BOOL=y 230CONFIG_CMDLINE_BOOL=y
224CONFIG_CMDLINE="console=ttyS0,115200" 231CONFIG_CMDLINE="console=ttyS0,115200"
@@ -242,6 +249,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
242CONFIG_PCI_LEGACY=y 249CONFIG_PCI_LEGACY=y
243# CONFIG_PCCARD is not set 250# CONFIG_PCCARD is not set
244# CONFIG_HOTPLUG_PCI is not set 251# CONFIG_HOTPLUG_PCI is not set
252# CONFIG_HAS_RAPIDIO is not set
245 253
246# 254#
247# Advanced setup 255# Advanced setup
@@ -251,11 +259,11 @@ CONFIG_PCI_LEGACY=y
251# 259#
252# Default settings for advanced configuration options are used 260# Default settings for advanced configuration options are used
253# 261#
254CONFIG_HIGHMEM_START=0xfe000000
255CONFIG_LOWMEM_SIZE=0x30000000 262CONFIG_LOWMEM_SIZE=0x30000000
263CONFIG_PAGE_OFFSET=0xc0000000
256CONFIG_KERNEL_START=0xc0000000 264CONFIG_KERNEL_START=0xc0000000
265CONFIG_PHYSICAL_START=0x00000000
257CONFIG_TASK_SIZE=0xc0000000 266CONFIG_TASK_SIZE=0xc0000000
258CONFIG_BOOT_LOAD=0x00800000
259 267
260# 268#
261# Networking 269# Networking
@@ -298,8 +306,6 @@ CONFIG_TCP_CONG_CUBIC=y
298CONFIG_DEFAULT_TCP_CONG="cubic" 306CONFIG_DEFAULT_TCP_CONG="cubic"
299# CONFIG_TCP_MD5SIG is not set 307# CONFIG_TCP_MD5SIG is not set
300# CONFIG_IPV6 is not set 308# CONFIG_IPV6 is not set
301# CONFIG_INET6_XFRM_TUNNEL is not set
302# CONFIG_INET6_TUNNEL is not set
303# CONFIG_NETWORK_SECMARK is not set 309# CONFIG_NETWORK_SECMARK is not set
304# CONFIG_NETFILTER is not set 310# CONFIG_NETFILTER is not set
305# CONFIG_IP_DCCP is not set 311# CONFIG_IP_DCCP is not set
@@ -358,6 +364,7 @@ CONFIG_MTD_PARTITIONS=y
358# CONFIG_MTD_REDBOOT_PARTS is not set 364# CONFIG_MTD_REDBOOT_PARTS is not set
359# CONFIG_MTD_CMDLINE_PARTS is not set 365# CONFIG_MTD_CMDLINE_PARTS is not set
360# CONFIG_MTD_OF_PARTS is not set 366# CONFIG_MTD_OF_PARTS is not set
367# CONFIG_MTD_AR7_PARTS is not set
361 368
362# 369#
363# User Modules And Translation Layers 370# User Modules And Translation Layers
@@ -433,6 +440,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1
433# 440#
434# CONFIG_MTD_UBI is not set 441# CONFIG_MTD_UBI is not set
435CONFIG_OF_DEVICE=y 442CONFIG_OF_DEVICE=y
443CONFIG_OF_I2C=y
436# CONFIG_PARPORT is not set 444# CONFIG_PARPORT is not set
437CONFIG_BLK_DEV=y 445CONFIG_BLK_DEV=y
438# CONFIG_BLK_DEV_FD is not set 446# CONFIG_BLK_DEV_FD is not set
@@ -513,7 +521,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
513CONFIG_BLK_DEV_VIA82CXXX=y 521CONFIG_BLK_DEV_VIA82CXXX=y
514# CONFIG_BLK_DEV_TC86C001 is not set 522# CONFIG_BLK_DEV_TC86C001 is not set
515CONFIG_BLK_DEV_IDEDMA=y 523CONFIG_BLK_DEV_IDEDMA=y
516CONFIG_IDE_ARCH_OBSOLETE_INIT=y 524# CONFIG_BLK_DEV_HD_ONLY is not set
517# CONFIG_BLK_DEV_HD is not set 525# CONFIG_BLK_DEV_HD is not set
518 526
519# 527#
@@ -638,7 +646,6 @@ CONFIG_R8169=y
638# CONFIG_SIS190 is not set 646# CONFIG_SIS190 is not set
639# CONFIG_SKGE is not set 647# CONFIG_SKGE is not set
640# CONFIG_SKY2 is not set 648# CONFIG_SKY2 is not set
641# CONFIG_SK98LIN is not set
642# CONFIG_VIA_VELOCITY is not set 649# CONFIG_VIA_VELOCITY is not set
643# CONFIG_TIGON3 is not set 650# CONFIG_TIGON3 is not set
644# CONFIG_BNX2 is not set 651# CONFIG_BNX2 is not set
@@ -654,6 +661,7 @@ CONFIG_R8169=y
654# 661#
655# CONFIG_WLAN_PRE80211 is not set 662# CONFIG_WLAN_PRE80211 is not set
656# CONFIG_WLAN_80211 is not set 663# CONFIG_WLAN_80211 is not set
664# CONFIG_IWLWIFI_LEDS is not set
657 665
658# 666#
659# USB Network Adapters 667# USB Network Adapters
@@ -690,6 +698,7 @@ CONFIG_R8169=y
690# Character devices 698# Character devices
691# 699#
692# CONFIG_VT is not set 700# CONFIG_VT is not set
701CONFIG_DEVKMEM=y
693# CONFIG_SERIAL_NONSTANDARD is not set 702# CONFIG_SERIAL_NONSTANDARD is not set
694# CONFIG_NOZOMI is not set 703# CONFIG_NOZOMI is not set
695 704
@@ -717,7 +726,6 @@ CONFIG_LEGACY_PTY_COUNT=256
717# CONFIG_IPMI_HANDLER is not set 726# CONFIG_IPMI_HANDLER is not set
718CONFIG_HW_RANDOM=m 727CONFIG_HW_RANDOM=m
719CONFIG_NVRAM=y 728CONFIG_NVRAM=y
720# CONFIG_GEN_RTC is not set
721# CONFIG_R3964 is not set 729# CONFIG_R3964 is not set
722# CONFIG_APPLICOM is not set 730# CONFIG_APPLICOM is not set
723# CONFIG_RAW_DRIVER is not set 731# CONFIG_RAW_DRIVER is not set
@@ -728,13 +736,6 @@ CONFIG_I2C_BOARDINFO=y
728CONFIG_I2C_CHARDEV=y 736CONFIG_I2C_CHARDEV=y
729 737
730# 738#
731# I2C Algorithms
732#
733# CONFIG_I2C_ALGOBIT is not set
734# CONFIG_I2C_ALGOPCF is not set
735# CONFIG_I2C_ALGOPCA is not set
736
737#
738# I2C Hardware Bus support 739# I2C Hardware Bus support
739# 740#
740# CONFIG_I2C_ALI1535 is not set 741# CONFIG_I2C_ALI1535 is not set
@@ -761,6 +762,7 @@ CONFIG_I2C_MPC=y
761# CONFIG_I2C_VIA is not set 762# CONFIG_I2C_VIA is not set
762# CONFIG_I2C_VIAPRO is not set 763# CONFIG_I2C_VIAPRO is not set
763# CONFIG_I2C_VOODOO3 is not set 764# CONFIG_I2C_VOODOO3 is not set
765# CONFIG_I2C_PCA_PLATFORM is not set
764 766
765# 767#
766# Miscellaneous I2C Chip support 768# Miscellaneous I2C Chip support
@@ -770,19 +772,13 @@ CONFIG_I2C_MPC=y
770# CONFIG_SENSORS_PCF8574 is not set 772# CONFIG_SENSORS_PCF8574 is not set
771# CONFIG_PCF8575 is not set 773# CONFIG_PCF8575 is not set
772# CONFIG_SENSORS_PCF8591 is not set 774# CONFIG_SENSORS_PCF8591 is not set
773# CONFIG_TPS65010 is not set
774# CONFIG_SENSORS_MAX6875 is not set 775# CONFIG_SENSORS_MAX6875 is not set
775# CONFIG_SENSORS_TSL2550 is not set 776# CONFIG_SENSORS_TSL2550 is not set
776# CONFIG_I2C_DEBUG_CORE is not set 777# CONFIG_I2C_DEBUG_CORE is not set
777# CONFIG_I2C_DEBUG_ALGO is not set 778# CONFIG_I2C_DEBUG_ALGO is not set
778# CONFIG_I2C_DEBUG_BUS is not set 779# CONFIG_I2C_DEBUG_BUS is not set
779# CONFIG_I2C_DEBUG_CHIP is not set 780# CONFIG_I2C_DEBUG_CHIP is not set
780
781#
782# SPI support
783#
784# CONFIG_SPI is not set 781# CONFIG_SPI is not set
785# CONFIG_SPI_MASTER is not set
786# CONFIG_W1 is not set 782# CONFIG_W1 is not set
787# CONFIG_POWER_SUPPLY is not set 783# CONFIG_POWER_SUPPLY is not set
788# CONFIG_HWMON is not set 784# CONFIG_HWMON is not set
@@ -799,12 +795,22 @@ CONFIG_SSB_POSSIBLE=y
799# Multifunction device drivers 795# Multifunction device drivers
800# 796#
801# CONFIG_MFD_SM501 is not set 797# CONFIG_MFD_SM501 is not set
798# CONFIG_HTC_PASIC3 is not set
802 799
803# 800#
804# Multimedia devices 801# Multimedia devices
805# 802#
803
804#
805# Multimedia core support
806#
806# CONFIG_VIDEO_DEV is not set 807# CONFIG_VIDEO_DEV is not set
807# CONFIG_DVB_CORE is not set 808# CONFIG_DVB_CORE is not set
809# CONFIG_VIDEO_MEDIA is not set
810
811#
812# Multimedia drivers
813#
808# CONFIG_DAB is not set 814# CONFIG_DAB is not set
809 815
810# 816#
@@ -841,16 +847,20 @@ CONFIG_USB_DEVICEFS=y
841CONFIG_USB_DEVICE_CLASS=y 847CONFIG_USB_DEVICE_CLASS=y
842# CONFIG_USB_DYNAMIC_MINORS is not set 848# CONFIG_USB_DYNAMIC_MINORS is not set
843# CONFIG_USB_OTG is not set 849# CONFIG_USB_OTG is not set
850# CONFIG_USB_OTG_WHITELIST is not set
851# CONFIG_USB_OTG_BLACKLIST_HUB is not set
844 852
845# 853#
846# USB Host Controller Drivers 854# USB Host Controller Drivers
847# 855#
856# CONFIG_USB_C67X00_HCD is not set
848CONFIG_USB_EHCI_HCD=y 857CONFIG_USB_EHCI_HCD=y
849# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 858# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
850# CONFIG_USB_EHCI_TT_NEWSCHED is not set 859# CONFIG_USB_EHCI_TT_NEWSCHED is not set
851# CONFIG_USB_EHCI_FSL is not set 860# CONFIG_USB_EHCI_FSL is not set
852CONFIG_USB_EHCI_HCD_PPC_OF=y 861CONFIG_USB_EHCI_HCD_PPC_OF=y
853# CONFIG_USB_ISP116X_HCD is not set 862# CONFIG_USB_ISP116X_HCD is not set
863# CONFIG_USB_ISP1760_HCD is not set
854CONFIG_USB_OHCI_HCD=y 864CONFIG_USB_OHCI_HCD=y
855# CONFIG_USB_OHCI_HCD_PPC_OF is not set 865# CONFIG_USB_OHCI_HCD_PPC_OF is not set
856# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 866# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -865,6 +875,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
865# 875#
866# CONFIG_USB_ACM is not set 876# CONFIG_USB_ACM is not set
867# CONFIG_USB_PRINTER is not set 877# CONFIG_USB_PRINTER is not set
878# CONFIG_USB_WDM is not set
868 879
869# 880#
870# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 881# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -885,6 +896,7 @@ CONFIG_USB_STORAGE=y
885# CONFIG_USB_STORAGE_JUMPSHOT is not set 896# CONFIG_USB_STORAGE_JUMPSHOT is not set
886# CONFIG_USB_STORAGE_ALAUDA is not set 897# CONFIG_USB_STORAGE_ALAUDA is not set
887# CONFIG_USB_STORAGE_KARMA is not set 898# CONFIG_USB_STORAGE_KARMA is not set
899# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
888# CONFIG_USB_LIBUSUAL is not set 900# CONFIG_USB_LIBUSUAL is not set
889 901
890# 902#
@@ -922,10 +934,12 @@ CONFIG_USB_STORAGE=y
922# CONFIG_USB_TRANCEVIBRATOR is not set 934# CONFIG_USB_TRANCEVIBRATOR is not set
923# CONFIG_USB_IOWARRIOR is not set 935# CONFIG_USB_IOWARRIOR is not set
924# CONFIG_USB_TEST is not set 936# CONFIG_USB_TEST is not set
937# CONFIG_USB_ISIGHTFW is not set
925# CONFIG_USB_GADGET is not set 938# CONFIG_USB_GADGET is not set
926# CONFIG_MMC is not set 939# CONFIG_MMC is not set
927# CONFIG_MEMSTICK is not set 940# CONFIG_MEMSTICK is not set
928# CONFIG_NEW_LEDS is not set 941# CONFIG_NEW_LEDS is not set
942# CONFIG_ACCESSIBILITY is not set
929# CONFIG_INFINIBAND is not set 943# CONFIG_INFINIBAND is not set
930# CONFIG_EDAC is not set 944# CONFIG_EDAC is not set
931CONFIG_RTC_LIB=y 945CONFIG_RTC_LIB=y
@@ -977,11 +991,8 @@ CONFIG_RTC_DRV_DS1307=y
977# 991#
978# on-CPU RTC drivers 992# on-CPU RTC drivers
979# 993#
994# CONFIG_RTC_DRV_PPC is not set
980# CONFIG_DMADEVICES is not set 995# CONFIG_DMADEVICES is not set
981
982#
983# Userspace I/O
984#
985# CONFIG_UIO is not set 996# CONFIG_UIO is not set
986 997
987# 998#
@@ -1002,10 +1013,9 @@ CONFIG_FS_MBCACHE=y
1002# CONFIG_FS_POSIX_ACL is not set 1013# CONFIG_FS_POSIX_ACL is not set
1003CONFIG_XFS_FS=m 1014CONFIG_XFS_FS=m
1004# CONFIG_XFS_QUOTA is not set 1015# CONFIG_XFS_QUOTA is not set
1005# CONFIG_XFS_SECURITY is not set
1006# CONFIG_XFS_POSIX_ACL is not set 1016# CONFIG_XFS_POSIX_ACL is not set
1007# CONFIG_XFS_RT is not set 1017# CONFIG_XFS_RT is not set
1008# CONFIG_GFS2_FS is not set 1018# CONFIG_XFS_DEBUG is not set
1009# CONFIG_OCFS2_FS is not set 1019# CONFIG_OCFS2_FS is not set
1010CONFIG_DNOTIFY=y 1020CONFIG_DNOTIFY=y
1011CONFIG_INOTIFY=y 1021CONFIG_INOTIFY=y
@@ -1138,6 +1148,7 @@ CONFIG_NLS_UTF8=y
1138# Library routines 1148# Library routines
1139# 1149#
1140CONFIG_BITREVERSE=y 1150CONFIG_BITREVERSE=y
1151# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1141# CONFIG_CRC_CCITT is not set 1152# CONFIG_CRC_CCITT is not set
1142# CONFIG_CRC16 is not set 1153# CONFIG_CRC16 is not set
1143# CONFIG_CRC_ITU_T is not set 1154# CONFIG_CRC_ITU_T is not set
@@ -1150,6 +1161,7 @@ CONFIG_PLIST=y
1150CONFIG_HAS_IOMEM=y 1161CONFIG_HAS_IOMEM=y
1151CONFIG_HAS_IOPORT=y 1162CONFIG_HAS_IOPORT=y
1152CONFIG_HAS_DMA=y 1163CONFIG_HAS_DMA=y
1164CONFIG_HAVE_LMB=y
1153 1165
1154# 1166#
1155# Kernel hacking 1167# Kernel hacking
@@ -1157,6 +1169,7 @@ CONFIG_HAS_DMA=y
1157# CONFIG_PRINTK_TIME is not set 1169# CONFIG_PRINTK_TIME is not set
1158# CONFIG_ENABLE_WARN_DEPRECATED is not set 1170# CONFIG_ENABLE_WARN_DEPRECATED is not set
1159# CONFIG_ENABLE_MUST_CHECK is not set 1171# CONFIG_ENABLE_MUST_CHECK is not set
1172CONFIG_FRAME_WARN=1024
1160# CONFIG_MAGIC_SYSRQ is not set 1173# CONFIG_MAGIC_SYSRQ is not set
1161# CONFIG_UNUSED_SYMBOLS is not set 1174# CONFIG_UNUSED_SYMBOLS is not set
1162# CONFIG_DEBUG_FS is not set 1175# CONFIG_DEBUG_FS is not set
@@ -1166,6 +1179,7 @@ CONFIG_HAS_DMA=y
1166# CONFIG_SLUB_STATS is not set 1179# CONFIG_SLUB_STATS is not set
1167# CONFIG_DEBUG_BUGVERBOSE is not set 1180# CONFIG_DEBUG_BUGVERBOSE is not set
1168# CONFIG_SAMPLES is not set 1181# CONFIG_SAMPLES is not set
1182# CONFIG_IRQSTACKS is not set
1169# CONFIG_BOOTX_TEXT is not set 1183# CONFIG_BOOTX_TEXT is not set
1170# CONFIG_PPC_EARLY_DEBUG is not set 1184# CONFIG_PPC_EARLY_DEBUG is not set
1171 1185
@@ -1181,3 +1195,4 @@ CONFIG_ASYNC_MEMCPY=y
1181CONFIG_ASYNC_XOR=y 1195CONFIG_ASYNC_XOR=y
1182# CONFIG_CRYPTO is not set 1196# CONFIG_CRYPTO is not set
1183# CONFIG_PPC_CLOCK is not set 1197# CONFIG_PPC_CLOCK is not set
1198# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S
index c2b9dc4fce5d..22b5d2c459a3 100644
--- a/arch/powerpc/kernel/head_44x.S
+++ b/arch/powerpc/kernel/head_44x.S
@@ -368,7 +368,12 @@ interrupt_base:
368 368
369 rlwimi r11,r13,0,26,31 /* Insert static perms */ 369 rlwimi r11,r13,0,26,31 /* Insert static perms */
370 370
371 rlwinm r11,r11,0,20,15 /* Clear U0-U3 */ 371 /*
372 * Clear U0-U3 and WL1 IL1I IL1D IL2I IL2D bits which are added
373 * on newer 440 cores like the 440x6 used on AMCC 460EX/460GT (see
374 * include/asm-powerpc/pgtable-ppc32.h for details).
375 */
376 rlwinm r11,r11,0,20,10
372 377
373 /* find the TLB index that caused the fault. It has to be here. */ 378 /* find the TLB index that caused the fault. It has to be here. */
374 tlbsx r10, 0, r10 379 tlbsx r10, 0, r10
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 2f73f705d564..bcc249d90c4d 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -1073,7 +1073,7 @@ static const struct file_operations virq_debug_fops = {
1073static int __init irq_debugfs_init(void) 1073static int __init irq_debugfs_init(void)
1074{ 1074{
1075 if (debugfs_create_file("virq_mapping", S_IRUGO, powerpc_debugfs_root, 1075 if (debugfs_create_file("virq_mapping", S_IRUGO, powerpc_debugfs_root,
1076 NULL, &virq_debug_fops)) 1076 NULL, &virq_debug_fops) == NULL)
1077 return -ENOMEM; 1077 return -ENOMEM;
1078 1078
1079 return 0; 1079 return 0;
diff --git a/arch/powerpc/kernel/legacy_serial.c b/arch/powerpc/kernel/legacy_serial.c
index 61dd17449ddc..cf37f5ca4b71 100644
--- a/arch/powerpc/kernel/legacy_serial.c
+++ b/arch/powerpc/kernel/legacy_serial.c
@@ -136,6 +136,11 @@ static int __init add_legacy_soc_port(struct device_node *np,
136 if (of_get_property(np, "clock-frequency", NULL) == NULL) 136 if (of_get_property(np, "clock-frequency", NULL) == NULL)
137 return -1; 137 return -1;
138 138
139 /* if reg-shift or offset, don't try to use it */
140 if ((of_get_property(np, "reg-shift", NULL) != NULL) ||
141 (of_get_property(np, "reg-offset", NULL) != NULL))
142 return -1;
143
139 /* if rtas uses this device, don't try to use it as well */ 144 /* if rtas uses this device, don't try to use it as well */
140 if (of_get_property(np, "used-by-rtas", NULL) != NULL) 145 if (of_get_property(np, "used-by-rtas", NULL) != NULL)
141 return -1; 146 return -1;
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
index cf6b5a7d8b3f..d3ac631cbd26 100644
--- a/arch/powerpc/kernel/ppc_ksyms.c
+++ b/arch/powerpc/kernel/ppc_ksyms.c
@@ -8,7 +8,6 @@
8#include <linux/screen_info.h> 8#include <linux/screen_info.h>
9#include <linux/vt_kern.h> 9#include <linux/vt_kern.h>
10#include <linux/nvram.h> 10#include <linux/nvram.h>
11#include <linux/console.h>
12#include <linux/irq.h> 11#include <linux/irq.h>
13#include <linux/pci.h> 12#include <linux/pci.h>
14#include <linux/delay.h> 13#include <linux/delay.h>
@@ -160,7 +159,6 @@ EXPORT_SYMBOL(screen_info);
160EXPORT_SYMBOL(timer_interrupt); 159EXPORT_SYMBOL(timer_interrupt);
161EXPORT_SYMBOL(irq_desc); 160EXPORT_SYMBOL(irq_desc);
162EXPORT_SYMBOL(tb_ticks_per_jiffy); 161EXPORT_SYMBOL(tb_ticks_per_jiffy);
163EXPORT_SYMBOL(console_drivers);
164EXPORT_SYMBOL(cacheable_memcpy); 162EXPORT_SYMBOL(cacheable_memcpy);
165#endif 163#endif
166 164
diff --git a/arch/powerpc/kernel/prom_init_check.sh b/arch/powerpc/kernel/prom_init_check.sh
index 31729a9387df..2c7e8e87f770 100644
--- a/arch/powerpc/kernel/prom_init_check.sh
+++ b/arch/powerpc/kernel/prom_init_check.sh
@@ -48,6 +48,20 @@ do
48 fi 48 fi
49 done 49 done
50 50
51 # ignore register save/restore funcitons
52 if [ "${UNDEF:0:9}" = "_restgpr_" ]; then
53 OK=1
54 fi
55 if [ "${UNDEF:0:11}" = "_rest32gpr_" ]; then
56 OK=1
57 fi
58 if [ "${UNDEF:0:9}" = "_savegpr_" ]; then
59 OK=1
60 fi
61 if [ "${UNDEF:0:11}" = "_save32gpr_" ]; then
62 OK=1
63 fi
64
51 if [ $OK -eq 0 ]; then 65 if [ $OK -eq 0 ]; then
52 ERROR=1 66 ERROR=1
53 echo "Error: External symbol '$UNDEF' referenced" \ 67 echo "Error: External symbol '$UNDEF' referenced" \
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index c21a626af676..ce245a850db2 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -142,7 +142,7 @@ static void dump_one_vdso_page(struct page *pg, struct page *upg)
142 printk("kpg: %p (c:%d,f:%08lx)", __va(page_to_pfn(pg) << PAGE_SHIFT), 142 printk("kpg: %p (c:%d,f:%08lx)", __va(page_to_pfn(pg) << PAGE_SHIFT),
143 page_count(pg), 143 page_count(pg),
144 pg->flags); 144 pg->flags);
145 if (upg/* && pg != upg*/) { 145 if (upg && !IS_ERR(upg) /* && pg != upg*/) {
146 printk(" upg: %p (c:%d,f:%08lx)", __va(page_to_pfn(upg) 146 printk(" upg: %p (c:%d,f:%08lx)", __va(page_to_pfn(upg)
147 << PAGE_SHIFT), 147 << PAGE_SHIFT),
148 page_count(upg), 148 page_count(upg),
diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile
index c71d37dc6a88..e522b06cc42f 100644
--- a/arch/powerpc/lib/Makefile
+++ b/arch/powerpc/lib/Makefile
@@ -9,7 +9,7 @@ endif
9ifeq ($(CONFIG_PPC_MERGE),y) 9ifeq ($(CONFIG_PPC_MERGE),y)
10obj-y := string.o alloc.o \ 10obj-y := string.o alloc.o \
11 checksum_$(CONFIG_WORD_SIZE).o 11 checksum_$(CONFIG_WORD_SIZE).o
12obj-$(CONFIG_PPC32) += div64.o copy_32.o 12obj-$(CONFIG_PPC32) += div64.o copy_32.o crtsavres.o
13obj-$(CONFIG_HAS_IOMEM) += devres.o 13obj-$(CONFIG_HAS_IOMEM) += devres.o
14endif 14endif
15 15
diff --git a/arch/powerpc/lib/crtsavres.S b/arch/powerpc/lib/crtsavres.S
new file mode 100644
index 000000000000..70a9cd8a3008
--- /dev/null
+++ b/arch/powerpc/lib/crtsavres.S
@@ -0,0 +1,229 @@
1/*
2 * Special support for eabi and SVR4
3 *
4 * Copyright (C) 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc.
5 * Copyright 2008 Freescale Semiconductor, Inc.
6 * Written By Michael Meissner
7 *
8 * Based on gcc/config/rs6000/crtsavres.asm from gcc
9 *
10 * This file is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2, or (at your option) any
13 * later version.
14 *
15 * In addition to the permissions in the GNU General Public License, the
16 * Free Software Foundation gives you unlimited permission to link the
17 * compiled version of this file with other programs, and to distribute
18 * those programs without any restriction coming from the use of this
19 * file. (The General Public License restrictions do apply in other
20 * respects; for example, they cover modification of the file, and
21 * distribution when not linked into another program.)
22 *
23 * This file is distributed in the hope that it will be useful, but
24 * WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26 * General Public License for more details.
27 *
28 * You should have received a copy of the GNU General Public License
29 * along with this program; see the file COPYING. If not, write to
30 * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
31 * Boston, MA 02110-1301, USA.
32 *
33 * As a special exception, if you link this library with files
34 * compiled with GCC to produce an executable, this does not cause
35 * the resulting executable to be covered by the GNU General Public License.
36 * This exception does not however invalidate any other reasons why
37 * the executable file might be covered by the GNU General Public License.
38 */
39
40#include <asm/ppc_asm.h>
41
42 .file "crtsavres.S"
43 .section ".text"
44
45#ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
46
47/* Routines for saving integer registers, called by the compiler. */
48/* Called with r11 pointing to the stack header word of the caller of the */
49/* function, just beyond the end of the integer save area. */
50
51_GLOBAL(_savegpr_14)
52_GLOBAL(_save32gpr_14)
53 stw 14,-72(11) /* save gp registers */
54_GLOBAL(_savegpr_15)
55_GLOBAL(_save32gpr_15)
56 stw 15,-68(11)
57_GLOBAL(_savegpr_16)
58_GLOBAL(_save32gpr_16)
59 stw 16,-64(11)
60_GLOBAL(_savegpr_17)
61_GLOBAL(_save32gpr_17)
62 stw 17,-60(11)
63_GLOBAL(_savegpr_18)
64_GLOBAL(_save32gpr_18)
65 stw 18,-56(11)
66_GLOBAL(_savegpr_19)
67_GLOBAL(_save32gpr_19)
68 stw 19,-52(11)
69_GLOBAL(_savegpr_20)
70_GLOBAL(_save32gpr_20)
71 stw 20,-48(11)
72_GLOBAL(_savegpr_21)
73_GLOBAL(_save32gpr_21)
74 stw 21,-44(11)
75_GLOBAL(_savegpr_22)
76_GLOBAL(_save32gpr_22)
77 stw 22,-40(11)
78_GLOBAL(_savegpr_23)
79_GLOBAL(_save32gpr_23)
80 stw 23,-36(11)
81_GLOBAL(_savegpr_24)
82_GLOBAL(_save32gpr_24)
83 stw 24,-32(11)
84_GLOBAL(_savegpr_25)
85_GLOBAL(_save32gpr_25)
86 stw 25,-28(11)
87_GLOBAL(_savegpr_26)
88_GLOBAL(_save32gpr_26)
89 stw 26,-24(11)
90_GLOBAL(_savegpr_27)
91_GLOBAL(_save32gpr_27)
92 stw 27,-20(11)
93_GLOBAL(_savegpr_28)
94_GLOBAL(_save32gpr_28)
95 stw 28,-16(11)
96_GLOBAL(_savegpr_29)
97_GLOBAL(_save32gpr_29)
98 stw 29,-12(11)
99_GLOBAL(_savegpr_30)
100_GLOBAL(_save32gpr_30)
101 stw 30,-8(11)
102_GLOBAL(_savegpr_31)
103_GLOBAL(_save32gpr_31)
104 stw 31,-4(11)
105 blr
106
107/* Routines for restoring integer registers, called by the compiler. */
108/* Called with r11 pointing to the stack header word of the caller of the */
109/* function, just beyond the end of the integer restore area. */
110
111_GLOBAL(_restgpr_14)
112_GLOBAL(_rest32gpr_14)
113 lwz 14,-72(11) /* restore gp registers */
114_GLOBAL(_restgpr_15)
115_GLOBAL(_rest32gpr_15)
116 lwz 15,-68(11)
117_GLOBAL(_restgpr_16)
118_GLOBAL(_rest32gpr_16)
119 lwz 16,-64(11)
120_GLOBAL(_restgpr_17)
121_GLOBAL(_rest32gpr_17)
122 lwz 17,-60(11)
123_GLOBAL(_restgpr_18)
124_GLOBAL(_rest32gpr_18)
125 lwz 18,-56(11)
126_GLOBAL(_restgpr_19)
127_GLOBAL(_rest32gpr_19)
128 lwz 19,-52(11)
129_GLOBAL(_restgpr_20)
130_GLOBAL(_rest32gpr_20)
131 lwz 20,-48(11)
132_GLOBAL(_restgpr_21)
133_GLOBAL(_rest32gpr_21)
134 lwz 21,-44(11)
135_GLOBAL(_restgpr_22)
136_GLOBAL(_rest32gpr_22)
137 lwz 22,-40(11)
138_GLOBAL(_restgpr_23)
139_GLOBAL(_rest32gpr_23)
140 lwz 23,-36(11)
141_GLOBAL(_restgpr_24)
142_GLOBAL(_rest32gpr_24)
143 lwz 24,-32(11)
144_GLOBAL(_restgpr_25)
145_GLOBAL(_rest32gpr_25)
146 lwz 25,-28(11)
147_GLOBAL(_restgpr_26)
148_GLOBAL(_rest32gpr_26)
149 lwz 26,-24(11)
150_GLOBAL(_restgpr_27)
151_GLOBAL(_rest32gpr_27)
152 lwz 27,-20(11)
153_GLOBAL(_restgpr_28)
154_GLOBAL(_rest32gpr_28)
155 lwz 28,-16(11)
156_GLOBAL(_restgpr_29)
157_GLOBAL(_rest32gpr_29)
158 lwz 29,-12(11)
159_GLOBAL(_restgpr_30)
160_GLOBAL(_rest32gpr_30)
161 lwz 30,-8(11)
162_GLOBAL(_restgpr_31)
163_GLOBAL(_rest32gpr_31)
164 lwz 31,-4(11)
165 blr
166
167/* Routines for restoring integer registers, called by the compiler. */
168/* Called with r11 pointing to the stack header word of the caller of the */
169/* function, just beyond the end of the integer restore area. */
170
171_GLOBAL(_restgpr_14_x)
172_GLOBAL(_rest32gpr_14_x)
173 lwz 14,-72(11) /* restore gp registers */
174_GLOBAL(_restgpr_15_x)
175_GLOBAL(_rest32gpr_15_x)
176 lwz 15,-68(11)
177_GLOBAL(_restgpr_16_x)
178_GLOBAL(_rest32gpr_16_x)
179 lwz 16,-64(11)
180_GLOBAL(_restgpr_17_x)
181_GLOBAL(_rest32gpr_17_x)
182 lwz 17,-60(11)
183_GLOBAL(_restgpr_18_x)
184_GLOBAL(_rest32gpr_18_x)
185 lwz 18,-56(11)
186_GLOBAL(_restgpr_19_x)
187_GLOBAL(_rest32gpr_19_x)
188 lwz 19,-52(11)
189_GLOBAL(_restgpr_20_x)
190_GLOBAL(_rest32gpr_20_x)
191 lwz 20,-48(11)
192_GLOBAL(_restgpr_21_x)
193_GLOBAL(_rest32gpr_21_x)
194 lwz 21,-44(11)
195_GLOBAL(_restgpr_22_x)
196_GLOBAL(_rest32gpr_22_x)
197 lwz 22,-40(11)
198_GLOBAL(_restgpr_23_x)
199_GLOBAL(_rest32gpr_23_x)
200 lwz 23,-36(11)
201_GLOBAL(_restgpr_24_x)
202_GLOBAL(_rest32gpr_24_x)
203 lwz 24,-32(11)
204_GLOBAL(_restgpr_25_x)
205_GLOBAL(_rest32gpr_25_x)
206 lwz 25,-28(11)
207_GLOBAL(_restgpr_26_x)
208_GLOBAL(_rest32gpr_26_x)
209 lwz 26,-24(11)
210_GLOBAL(_restgpr_27_x)
211_GLOBAL(_rest32gpr_27_x)
212 lwz 27,-20(11)
213_GLOBAL(_restgpr_28_x)
214_GLOBAL(_rest32gpr_28_x)
215 lwz 28,-16(11)
216_GLOBAL(_restgpr_29_x)
217_GLOBAL(_rest32gpr_29_x)
218 lwz 29,-12(11)
219_GLOBAL(_restgpr_30_x)
220_GLOBAL(_rest32gpr_30_x)
221 lwz 30,-8(11)
222_GLOBAL(_restgpr_31_x)
223_GLOBAL(_rest32gpr_31_x)
224 lwz 0,4(11)
225 lwz 31,-4(11)
226 mtlr 0
227 mr 1,11
228 blr
229#endif
diff --git a/arch/powerpc/mm/hash_low_64.S b/arch/powerpc/mm/hash_low_64.S
index 21d248486479..70f4c833fa32 100644
--- a/arch/powerpc/mm/hash_low_64.S
+++ b/arch/powerpc/mm/hash_low_64.S
@@ -568,6 +568,10 @@ htab_inval_old_hpte:
568 ld r7,STK_PARM(r9)(r1) /* ssize */ 568 ld r7,STK_PARM(r9)(r1) /* ssize */
569 ld r8,STK_PARM(r8)(r1) /* local */ 569 ld r8,STK_PARM(r8)(r1) /* local */
570 bl .flush_hash_page 570 bl .flush_hash_page
571 /* Clear out _PAGE_HPTE_SUB bits in the new linux PTE */
572 lis r0,_PAGE_HPTE_SUB@h
573 ori r0,r0,_PAGE_HPTE_SUB@l
574 andc r30,r30,r0
571 b htab_insert_pte 575 b htab_insert_pte
572 576
573htab_bail_ok: 577htab_bail_ok:
diff --git a/arch/powerpc/platforms/52xx/lite5200_pm.c b/arch/powerpc/platforms/52xx/lite5200_pm.c
index 41c7fd91e99e..fe92e65103ed 100644
--- a/arch/powerpc/platforms/52xx/lite5200_pm.c
+++ b/arch/powerpc/platforms/52xx/lite5200_pm.c
@@ -14,6 +14,7 @@ static struct mpc52xx_sdma __iomem *bes;
14static struct mpc52xx_xlb __iomem *xlb; 14static struct mpc52xx_xlb __iomem *xlb;
15static struct mpc52xx_gpio __iomem *gps; 15static struct mpc52xx_gpio __iomem *gps;
16static struct mpc52xx_gpio_wkup __iomem *gpw; 16static struct mpc52xx_gpio_wkup __iomem *gpw;
17static void __iomem *pci;
17static void __iomem *sram; 18static void __iomem *sram;
18static const int sram_size = 0x4000; /* 16 kBytes */ 19static const int sram_size = 0x4000; /* 16 kBytes */
19static void __iomem *mbar; 20static void __iomem *mbar;
@@ -50,6 +51,8 @@ static int lite5200_pm_prepare(void)
50 { .type = "builtin", .compatible = "mpc5200", }, /* efika */ 51 { .type = "builtin", .compatible = "mpc5200", }, /* efika */
51 {} 52 {}
52 }; 53 };
54 u64 regaddr64 = 0;
55 const u32 *regaddr_p;
53 56
54 /* deep sleep? let mpc52xx code handle that */ 57 /* deep sleep? let mpc52xx code handle that */
55 if (lite5200_pm_target_state == PM_SUSPEND_STANDBY) 58 if (lite5200_pm_target_state == PM_SUSPEND_STANDBY)
@@ -60,8 +63,12 @@ static int lite5200_pm_prepare(void)
60 63
61 /* map registers */ 64 /* map registers */
62 np = of_find_matching_node(NULL, immr_ids); 65 np = of_find_matching_node(NULL, immr_ids);
63 mbar = of_iomap(np, 0); 66 regaddr_p = of_get_address(np, 0, NULL, NULL);
67 if (regaddr_p)
68 regaddr64 = of_translate_address(np, regaddr_p);
64 of_node_put(np); 69 of_node_put(np);
70
71 mbar = ioremap((u32) regaddr64, 0xC000);
65 if (!mbar) { 72 if (!mbar) {
66 printk(KERN_ERR "%s:%i Error mapping registers\n", __func__, __LINE__); 73 printk(KERN_ERR "%s:%i Error mapping registers\n", __func__, __LINE__);
67 return -ENOSYS; 74 return -ENOSYS;
@@ -71,6 +78,7 @@ static int lite5200_pm_prepare(void)
71 pic = mbar + 0x500; 78 pic = mbar + 0x500;
72 gps = mbar + 0xb00; 79 gps = mbar + 0xb00;
73 gpw = mbar + 0xc00; 80 gpw = mbar + 0xc00;
81 pci = mbar + 0xd00;
74 bes = mbar + 0x1200; 82 bes = mbar + 0x1200;
75 xlb = mbar + 0x1f00; 83 xlb = mbar + 0x1f00;
76 sram = mbar + 0x8000; 84 sram = mbar + 0x8000;
@@ -85,6 +93,7 @@ static struct mpc52xx_sdma sbes;
85static struct mpc52xx_xlb sxlb; 93static struct mpc52xx_xlb sxlb;
86static struct mpc52xx_gpio sgps; 94static struct mpc52xx_gpio sgps;
87static struct mpc52xx_gpio_wkup sgpw; 95static struct mpc52xx_gpio_wkup sgpw;
96static char spci[0x200];
88 97
89static void lite5200_save_regs(void) 98static void lite5200_save_regs(void)
90{ 99{
@@ -94,6 +103,7 @@ static void lite5200_save_regs(void)
94 _memcpy_fromio(&sxlb, xlb, sizeof(*xlb)); 103 _memcpy_fromio(&sxlb, xlb, sizeof(*xlb));
95 _memcpy_fromio(&sgps, gps, sizeof(*gps)); 104 _memcpy_fromio(&sgps, gps, sizeof(*gps));
96 _memcpy_fromio(&sgpw, gpw, sizeof(*gpw)); 105 _memcpy_fromio(&sgpw, gpw, sizeof(*gpw));
106 _memcpy_fromio(spci, pci, 0x200);
97 107
98 _memcpy_fromio(saved_sram, sram, sram_size); 108 _memcpy_fromio(saved_sram, sram, sram_size);
99} 109}
@@ -103,6 +113,8 @@ static void lite5200_restore_regs(void)
103 int i; 113 int i;
104 _memcpy_toio(sram, saved_sram, sram_size); 114 _memcpy_toio(sram, saved_sram, sram_size);
105 115
116 /* PCI Configuration */
117 _memcpy_toio(pci, spci, 0x200);
106 118
107 /* 119 /*
108 * GPIOs. Interrupt Master Enable has higher address then other 120 * GPIOs. Interrupt Master Enable has higher address then other
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig
index 7ff29d53dc2d..ecbe580c3f32 100644
--- a/arch/powerpc/platforms/85xx/Kconfig
+++ b/arch/powerpc/platforms/85xx/Kconfig
@@ -34,6 +34,7 @@ config MPC85xx_MDS
34 bool "Freescale MPC85xx MDS" 34 bool "Freescale MPC85xx MDS"
35 select DEFAULT_UIMAGE 35 select DEFAULT_UIMAGE
36 select QUICC_ENGINE 36 select QUICC_ENGINE
37 select PHYLIB
37 help 38 help
38 This option enables support for the MPC85xx MDS board 39 This option enables support for the MPC85xx MDS board
39 40
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index 70c660121ec4..78f905bc6a42 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -219,15 +219,25 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
219extern int hash_page(unsigned long ea, unsigned long access, unsigned long trap); //XXX 219extern int hash_page(unsigned long ea, unsigned long access, unsigned long trap); //XXX
220static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr) 220static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr)
221{ 221{
222 int ret;
223
222 pr_debug("%s, %lx, %lx\n", __func__, dsisr, ea); 224 pr_debug("%s, %lx, %lx\n", __func__, dsisr, ea);
223 225
224 /* Handle kernel space hash faults immediately. 226 /*
225 User hash faults need to be deferred to process context. */ 227 * Handle kernel space hash faults immediately. User hash
226 if ((dsisr & MFC_DSISR_PTE_NOT_FOUND) 228 * faults need to be deferred to process context.
227 && REGION_ID(ea) != USER_REGION_ID 229 */
228 && hash_page(ea, _PAGE_PRESENT, 0x300) == 0) { 230 if ((dsisr & MFC_DSISR_PTE_NOT_FOUND) &&
229 spu_restart_dma(spu); 231 (REGION_ID(ea) != USER_REGION_ID)) {
230 return 0; 232
233 spin_unlock(&spu->register_lock);
234 ret = hash_page(ea, _PAGE_PRESENT, 0x300);
235 spin_lock(&spu->register_lock);
236
237 if (!ret) {
238 spu_restart_dma(spu);
239 return 0;
240 }
231 } 241 }
232 242
233 spu->class_1_dar = ea; 243 spu->class_1_dar = ea;
@@ -324,17 +334,13 @@ spu_irq_class_0(int irq, void *data)
324 stat = spu_int_stat_get(spu, 0) & mask; 334 stat = spu_int_stat_get(spu, 0) & mask;
325 335
326 spu->class_0_pending |= stat; 336 spu->class_0_pending |= stat;
327 spu->class_0_dsisr = spu_mfc_dsisr_get(spu);
328 spu->class_0_dar = spu_mfc_dar_get(spu); 337 spu->class_0_dar = spu_mfc_dar_get(spu);
329 spin_unlock(&spu->register_lock);
330
331 spu->stop_callback(spu, 0); 338 spu->stop_callback(spu, 0);
332
333 spu->class_0_pending = 0; 339 spu->class_0_pending = 0;
334 spu->class_0_dsisr = 0;
335 spu->class_0_dar = 0; 340 spu->class_0_dar = 0;
336 341
337 spu_int_stat_clear(spu, 0, stat); 342 spu_int_stat_clear(spu, 0, stat);
343 spin_unlock(&spu->register_lock);
338 344
339 return IRQ_HANDLED; 345 return IRQ_HANDLED;
340} 346}
@@ -357,13 +363,12 @@ spu_irq_class_1(int irq, void *data)
357 spu_mfc_dsisr_set(spu, 0ul); 363 spu_mfc_dsisr_set(spu, 0ul);
358 spu_int_stat_clear(spu, 1, stat); 364 spu_int_stat_clear(spu, 1, stat);
359 365
360 if (stat & CLASS1_SEGMENT_FAULT_INTR)
361 __spu_trap_data_seg(spu, dar);
362
363 spin_unlock(&spu->register_lock);
364 pr_debug("%s: %lx %lx %lx %lx\n", __func__, mask, stat, 366 pr_debug("%s: %lx %lx %lx %lx\n", __func__, mask, stat,
365 dar, dsisr); 367 dar, dsisr);
366 368
369 if (stat & CLASS1_SEGMENT_FAULT_INTR)
370 __spu_trap_data_seg(spu, dar);
371
367 if (stat & CLASS1_STORAGE_FAULT_INTR) 372 if (stat & CLASS1_STORAGE_FAULT_INTR)
368 __spu_trap_data_map(spu, dar, dsisr); 373 __spu_trap_data_map(spu, dar, dsisr);
369 374
@@ -376,6 +381,8 @@ spu_irq_class_1(int irq, void *data)
376 spu->class_1_dsisr = 0; 381 spu->class_1_dsisr = 0;
377 spu->class_1_dar = 0; 382 spu->class_1_dar = 0;
378 383
384 spin_unlock(&spu->register_lock);
385
379 return stat ? IRQ_HANDLED : IRQ_NONE; 386 return stat ? IRQ_HANDLED : IRQ_NONE;
380} 387}
381 388
@@ -394,14 +401,12 @@ spu_irq_class_2(int irq, void *data)
394 mask = spu_int_mask_get(spu, 2); 401 mask = spu_int_mask_get(spu, 2);
395 /* ignore interrupts we're not waiting for */ 402 /* ignore interrupts we're not waiting for */
396 stat &= mask; 403 stat &= mask;
397
398 /* mailbox interrupts are level triggered. mask them now before 404 /* mailbox interrupts are level triggered. mask them now before
399 * acknowledging */ 405 * acknowledging */
400 if (stat & mailbox_intrs) 406 if (stat & mailbox_intrs)
401 spu_int_mask_and(spu, 2, ~(stat & mailbox_intrs)); 407 spu_int_mask_and(spu, 2, ~(stat & mailbox_intrs));
402 /* acknowledge all interrupts before the callbacks */ 408 /* acknowledge all interrupts before the callbacks */
403 spu_int_stat_clear(spu, 2, stat); 409 spu_int_stat_clear(spu, 2, stat);
404 spin_unlock(&spu->register_lock);
405 410
406 pr_debug("class 2 interrupt %d, %lx, %lx\n", irq, stat, mask); 411 pr_debug("class 2 interrupt %d, %lx, %lx\n", irq, stat, mask);
407 412
@@ -421,6 +426,9 @@ spu_irq_class_2(int irq, void *data)
421 spu->wbox_callback(spu); 426 spu->wbox_callback(spu);
422 427
423 spu->stats.class2_intr++; 428 spu->stats.class2_intr++;
429
430 spin_unlock(&spu->register_lock);
431
424 return stat ? IRQ_HANDLED : IRQ_NONE; 432 return stat ? IRQ_HANDLED : IRQ_NONE;
425} 433}
426 434
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c
index b7493b865812..f7edba6cb795 100644
--- a/arch/powerpc/platforms/cell/spufs/run.c
+++ b/arch/powerpc/platforms/cell/spufs/run.c
@@ -27,7 +27,6 @@ void spufs_stop_callback(struct spu *spu, int irq)
27 switch(irq) { 27 switch(irq) {
28 case 0 : 28 case 0 :
29 ctx->csa.class_0_pending = spu->class_0_pending; 29 ctx->csa.class_0_pending = spu->class_0_pending;
30 ctx->csa.class_0_dsisr = spu->class_0_dsisr;
31 ctx->csa.class_0_dar = spu->class_0_dar; 30 ctx->csa.class_0_dar = spu->class_0_dar;
32 break; 31 break;
33 case 1 : 32 case 1 :
@@ -51,18 +50,22 @@ int spu_stopped(struct spu_context *ctx, u32 *stat)
51 u64 dsisr; 50 u64 dsisr;
52 u32 stopped; 51 u32 stopped;
53 52
54 *stat = ctx->ops->status_read(ctx);
55
56 if (test_bit(SPU_SCHED_NOTIFY_ACTIVE, &ctx->sched_flags))
57 return 1;
58
59 stopped = SPU_STATUS_INVALID_INSTR | SPU_STATUS_SINGLE_STEP | 53 stopped = SPU_STATUS_INVALID_INSTR | SPU_STATUS_SINGLE_STEP |
60 SPU_STATUS_STOPPED_BY_HALT | SPU_STATUS_STOPPED_BY_STOP; 54 SPU_STATUS_STOPPED_BY_HALT | SPU_STATUS_STOPPED_BY_STOP;
61 if (!(*stat & SPU_STATUS_RUNNING) && (*stat & stopped)) 55
56top:
57 *stat = ctx->ops->status_read(ctx);
58 if (*stat & stopped) {
59 /*
60 * If the spu hasn't finished stopping, we need to
61 * re-read the register to get the stopped value.
62 */
63 if (*stat & SPU_STATUS_RUNNING)
64 goto top;
62 return 1; 65 return 1;
66 }
63 67
64 dsisr = ctx->csa.class_0_dsisr; 68 if (test_bit(SPU_SCHED_NOTIFY_ACTIVE, &ctx->sched_flags))
65 if (dsisr & (MFC_DSISR_PTE_NOT_FOUND | MFC_DSISR_ACCESS_DENIED))
66 return 1; 69 return 1;
67 70
68 dsisr = ctx->csa.class_1_dsisr; 71 dsisr = ctx->csa.class_1_dsisr;
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index 745dd51ec37f..e929e70a84e3 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -230,19 +230,23 @@ static void spu_bind_context(struct spu *spu, struct spu_context *ctx)
230 ctx->stats.slb_flt_base = spu->stats.slb_flt; 230 ctx->stats.slb_flt_base = spu->stats.slb_flt;
231 ctx->stats.class2_intr_base = spu->stats.class2_intr; 231 ctx->stats.class2_intr_base = spu->stats.class2_intr;
232 232
233 spu_associate_mm(spu, ctx->owner);
234
235 spin_lock_irq(&spu->register_lock);
233 spu->ctx = ctx; 236 spu->ctx = ctx;
234 spu->flags = 0; 237 spu->flags = 0;
235 ctx->spu = spu; 238 ctx->spu = spu;
236 ctx->ops = &spu_hw_ops; 239 ctx->ops = &spu_hw_ops;
237 spu->pid = current->pid; 240 spu->pid = current->pid;
238 spu->tgid = current->tgid; 241 spu->tgid = current->tgid;
239 spu_associate_mm(spu, ctx->owner);
240 spu->ibox_callback = spufs_ibox_callback; 242 spu->ibox_callback = spufs_ibox_callback;
241 spu->wbox_callback = spufs_wbox_callback; 243 spu->wbox_callback = spufs_wbox_callback;
242 spu->stop_callback = spufs_stop_callback; 244 spu->stop_callback = spufs_stop_callback;
243 spu->mfc_callback = spufs_mfc_callback; 245 spu->mfc_callback = spufs_mfc_callback;
244 mb(); 246 spin_unlock_irq(&spu->register_lock);
247
245 spu_unmap_mappings(ctx); 248 spu_unmap_mappings(ctx);
249
246 spu_switch_log_notify(spu, ctx, SWITCH_LOG_START, 0); 250 spu_switch_log_notify(spu, ctx, SWITCH_LOG_START, 0);
247 spu_restore(&ctx->csa, spu); 251 spu_restore(&ctx->csa, spu);
248 spu->timestamp = jiffies; 252 spu->timestamp = jiffies;
@@ -403,6 +407,8 @@ static int has_affinity(struct spu_context *ctx)
403 */ 407 */
404static void spu_unbind_context(struct spu *spu, struct spu_context *ctx) 408static void spu_unbind_context(struct spu *spu, struct spu_context *ctx)
405{ 409{
410 u32 status;
411
406 spu_context_trace(spu_unbind_context__enter, ctx, spu); 412 spu_context_trace(spu_unbind_context__enter, ctx, spu);
407 413
408 spuctx_switch_state(ctx, SPU_UTIL_SYSTEM); 414 spuctx_switch_state(ctx, SPU_UTIL_SYSTEM);
@@ -423,18 +429,22 @@ static void spu_unbind_context(struct spu *spu, struct spu_context *ctx)
423 spu_unmap_mappings(ctx); 429 spu_unmap_mappings(ctx);
424 spu_save(&ctx->csa, spu); 430 spu_save(&ctx->csa, spu);
425 spu_switch_log_notify(spu, ctx, SWITCH_LOG_STOP, 0); 431 spu_switch_log_notify(spu, ctx, SWITCH_LOG_STOP, 0);
432
433 spin_lock_irq(&spu->register_lock);
426 spu->timestamp = jiffies; 434 spu->timestamp = jiffies;
427 ctx->state = SPU_STATE_SAVED; 435 ctx->state = SPU_STATE_SAVED;
428 spu->ibox_callback = NULL; 436 spu->ibox_callback = NULL;
429 spu->wbox_callback = NULL; 437 spu->wbox_callback = NULL;
430 spu->stop_callback = NULL; 438 spu->stop_callback = NULL;
431 spu->mfc_callback = NULL; 439 spu->mfc_callback = NULL;
432 spu_associate_mm(spu, NULL);
433 spu->pid = 0; 440 spu->pid = 0;
434 spu->tgid = 0; 441 spu->tgid = 0;
435 ctx->ops = &spu_backing_ops; 442 ctx->ops = &spu_backing_ops;
436 spu->flags = 0; 443 spu->flags = 0;
437 spu->ctx = NULL; 444 spu->ctx = NULL;
445 spin_unlock_irq(&spu->register_lock);
446
447 spu_associate_mm(spu, NULL);
438 448
439 ctx->stats.slb_flt += 449 ctx->stats.slb_flt +=
440 (spu->stats.slb_flt - ctx->stats.slb_flt_base); 450 (spu->stats.slb_flt - ctx->stats.slb_flt_base);
@@ -444,6 +454,9 @@ static void spu_unbind_context(struct spu *spu, struct spu_context *ctx)
444 /* This maps the underlying spu state to idle */ 454 /* This maps the underlying spu state to idle */
445 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); 455 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED);
446 ctx->spu = NULL; 456 ctx->spu = NULL;
457
458 if (spu_stopped(ctx, &status))
459 wake_up_all(&ctx->stop_wq);
447} 460}
448 461
449/** 462/**
diff --git a/arch/powerpc/platforms/pseries/eeh_driver.c b/arch/powerpc/platforms/pseries/eeh_driver.c
index 68ea5eee39a8..8c1ca477c52c 100644
--- a/arch/powerpc/platforms/pseries/eeh_driver.c
+++ b/arch/powerpc/platforms/pseries/eeh_driver.c
@@ -42,17 +42,20 @@ static inline const char * pcid_name (struct pci_dev *pdev)
42} 42}
43 43
44#ifdef DEBUG 44#ifdef DEBUG
45static void print_device_node_tree (struct pci_dn *pdn, int dent) 45static void print_device_node_tree(struct pci_dn *pdn, int dent)
46{ 46{
47 int i; 47 int i;
48 if (!pdn) return; 48 struct device_node *pc;
49 for (i=0;i<dent; i++) 49
50 if (!pdn)
51 return;
52 for (i = 0; i < dent; i++)
50 printk(" "); 53 printk(" ");
51 printk("dn=%s mode=%x \tcfg_addr=%x pe_addr=%x \tfull=%s\n", 54 printk("dn=%s mode=%x \tcfg_addr=%x pe_addr=%x \tfull=%s\n",
52 pdn->node->name, pdn->eeh_mode, pdn->eeh_config_addr, 55 pdn->node->name, pdn->eeh_mode, pdn->eeh_config_addr,
53 pdn->eeh_pe_config_addr, pdn->node->full_name); 56 pdn->eeh_pe_config_addr, pdn->node->full_name);
54 dent += 3; 57 dent += 3;
55 struct device_node *pc = pdn->node->child; 58 pc = pdn->node->child;
56 while (pc) { 59 while (pc) {
57 print_device_node_tree(PCI_DN(pc), dent); 60 print_device_node_tree(PCI_DN(pc), dent);
58 pc = pc->sibling; 61 pc = pc->sibling;
diff --git a/arch/powerpc/platforms/pseries/nvram.c b/arch/powerpc/platforms/pseries/nvram.c
index f68903e15bd5..42f7e384e6c4 100644
--- a/arch/powerpc/platforms/pseries/nvram.c
+++ b/arch/powerpc/platforms/pseries/nvram.c
@@ -131,8 +131,10 @@ int __init pSeries_nvram_init(void)
131 return -ENODEV; 131 return -ENODEV;
132 132
133 nbytes_p = of_get_property(nvram, "#bytes", &proplen); 133 nbytes_p = of_get_property(nvram, "#bytes", &proplen);
134 if (nbytes_p == NULL || proplen != sizeof(unsigned int)) 134 if (nbytes_p == NULL || proplen != sizeof(unsigned int)) {
135 of_node_put(nvram);
135 return -EIO; 136 return -EIO;
137 }
136 138
137 nvram_size = *nbytes_p; 139 nvram_size = *nbytes_p;
138 140
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index 1702de9395ee..bfcf70ee8959 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -2844,7 +2844,6 @@ static void dump_spu_fields(struct spu *spu)
2844 DUMP_FIELD(spu, "0x%lx", flags); 2844 DUMP_FIELD(spu, "0x%lx", flags);
2845 DUMP_FIELD(spu, "%d", class_0_pending); 2845 DUMP_FIELD(spu, "%d", class_0_pending);
2846 DUMP_FIELD(spu, "0x%lx", class_0_dar); 2846 DUMP_FIELD(spu, "0x%lx", class_0_dar);
2847 DUMP_FIELD(spu, "0x%lx", class_0_dsisr);
2848 DUMP_FIELD(spu, "0x%lx", class_1_dar); 2847 DUMP_FIELD(spu, "0x%lx", class_1_dar);
2849 DUMP_FIELD(spu, "0x%lx", class_1_dsisr); 2848 DUMP_FIELD(spu, "0x%lx", class_1_dsisr);
2850 DUMP_FIELD(spu, "0x%lx", irqs[0]); 2849 DUMP_FIELD(spu, "0x%lx", irqs[0]);
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 52e18e6d2ba0..5d2858119930 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -251,7 +251,7 @@ config X86_ELAN
251 251
252config X86_VOYAGER 252config X86_VOYAGER
253 bool "Voyager (NCR)" 253 bool "Voyager (NCR)"
254 depends on X86_32 && (SMP || BROKEN) 254 depends on X86_32 && (SMP || BROKEN) && !PCI
255 help 255 help
256 Voyager is an MCA-based 32-way capable SMP architecture proprietary 256 Voyager is an MCA-based 32-way capable SMP architecture proprietary
257 to NCR Corp. Machine classes 345x/35xx/4100/51xx are Voyager-based. 257 to NCR Corp. Machine classes 345x/35xx/4100/51xx are Voyager-based.
@@ -263,7 +263,7 @@ config X86_VOYAGER
263 263
264config X86_NUMAQ 264config X86_NUMAQ
265 bool "NUMAQ (IBM/Sequent)" 265 bool "NUMAQ (IBM/Sequent)"
266 depends on SMP && X86_32 266 depends on SMP && X86_32 && PCI
267 select NUMA 267 select NUMA
268 help 268 help
269 This option is used for getting Linux to run on a (IBM/Sequent) NUMA 269 This option is used for getting Linux to run on a (IBM/Sequent) NUMA
@@ -293,7 +293,7 @@ config X86_BIGSMP
293 293
294config X86_VISWS 294config X86_VISWS
295 bool "SGI 320/540 (Visual Workstation)" 295 bool "SGI 320/540 (Visual Workstation)"
296 depends on X86_32 296 depends on X86_32 && !PCI
297 help 297 help
298 The SGI Visual Workstation series is an IA32-based workstation 298 The SGI Visual Workstation series is an IA32-based workstation
299 based on SGI systems chips with some legacy PC hardware attached. 299 based on SGI systems chips with some legacy PC hardware attached.
@@ -337,7 +337,7 @@ config X86_RDC321X
337config X86_VSMP 337config X86_VSMP
338 bool "Support for ScaleMP vSMP" 338 bool "Support for ScaleMP vSMP"
339 select PARAVIRT 339 select PARAVIRT
340 depends on X86_64 340 depends on X86_64 && !PCI
341 help 341 help
342 Support for ScaleMP vSMP systems. Say 'Y' here if this kernel is 342 Support for ScaleMP vSMP systems. Say 'Y' here if this kernel is
343 supposed to run on these EM64T-based machines. Only choose this option 343 supposed to run on these EM64T-based machines. Only choose this option
@@ -383,6 +383,7 @@ config VMI
383config KVM_CLOCK 383config KVM_CLOCK
384 bool "KVM paravirtualized clock" 384 bool "KVM paravirtualized clock"
385 select PARAVIRT 385 select PARAVIRT
386 select PARAVIRT_CLOCK
386 depends on !(X86_VISWS || X86_VOYAGER) 387 depends on !(X86_VISWS || X86_VOYAGER)
387 help 388 help
388 Turning on this option will allow you to run a paravirtualized clock 389 Turning on this option will allow you to run a paravirtualized clock
@@ -410,37 +411,25 @@ config PARAVIRT
410 over full virtualization. However, when run without a hypervisor 411 over full virtualization. However, when run without a hypervisor
411 the kernel is theoretically slower and slightly larger. 412 the kernel is theoretically slower and slightly larger.
412 413
414config PARAVIRT_CLOCK
415 bool
416 default n
417
413endif 418endif
414 419
415config MEMTEST_BOOTPARAM 420config MEMTEST
416 bool "Memtest boot parameter" 421 bool "Memtest"
417 depends on X86_64 422 depends on X86_64
418 default y 423 default y
419 help 424 help
420 This option adds a kernel parameter 'memtest', which allows memtest 425 This option adds a kernel parameter 'memtest', which allows memtest
421 to be disabled at boot. If this option is selected, memtest 426 to be set.
422 functionality can be disabled with memtest=0 on the kernel 427 memtest=0, mean disabled; -- default
423 command line. The purpose of this option is to allow a single 428 memtest=1, mean do 1 test pattern;
424 kernel image to be distributed with memtest built in, but not 429 ...
425 necessarily enabled. 430 memtest=4, mean do 4 test patterns.
426
427 If you are unsure how to answer this question, answer Y. 431 If you are unsure how to answer this question, answer Y.
428 432
429config MEMTEST_BOOTPARAM_VALUE
430 int "Memtest boot parameter default value (0-4)"
431 depends on MEMTEST_BOOTPARAM
432 range 0 4
433 default 0
434 help
435 This option sets the default value for the kernel parameter
436 'memtest', which allows memtest to be disabled at boot. If this
437 option is set to 0 (zero), the memtest kernel parameter will
438 default to 0, disabling memtest at bootup. If this option is
439 set to 4, the memtest kernel parameter will default to 4,
440 enabling memtest at bootup, and use that as pattern number.
441
442 If you are unsure how to answer this question, answer 0.
443
444config ACPI_SRAT 433config ACPI_SRAT
445 def_bool y 434 def_bool y
446 depends on X86_32 && ACPI && NUMA && (X86_SUMMIT || X86_GENERICARCH) 435 depends on X86_32 && ACPI && NUMA && (X86_SUMMIT || X86_GENERICARCH)
@@ -558,18 +547,18 @@ config IOMMU_HELPER
558 def_bool (CALGARY_IOMMU || GART_IOMMU || SWIOTLB) 547 def_bool (CALGARY_IOMMU || GART_IOMMU || SWIOTLB)
559 548
560config NR_CPUS 549config NR_CPUS
561 int "Maximum number of CPUs (2-255)" 550 int "Maximum number of CPUs (2-4096)"
562 range 2 255 551 range 2 4096
563 depends on SMP 552 depends on SMP
564 default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000 553 default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000
565 default "8" 554 default "8"
566 help 555 help
567 This allows you to specify the maximum number of CPUs which this 556 This allows you to specify the maximum number of CPUs which this
568 kernel will support. The maximum supported value is 255 and the 557 kernel will support. The maximum supported value is 4096 and the
569 minimum value which makes sense is 2. 558 minimum value which makes sense is 2.
570 559
571 This is purely to save memory - each supported CPU adds 560 This is purely to save memory - each supported CPU adds
572 approximately eight kilobytes to the kernel image. 561 approximately one kilobyte to the kernel image.
573 562
574config SCHED_SMT 563config SCHED_SMT
575 bool "SMT (Hyperthreading) scheduler support" 564 bool "SMT (Hyperthreading) scheduler support"
@@ -961,8 +950,8 @@ config NUMA_EMU
961 number of nodes. This is only useful for debugging. 950 number of nodes. This is only useful for debugging.
962 951
963config NODES_SHIFT 952config NODES_SHIFT
964 int "Max num nodes shift(1-15)" 953 int "Max num nodes shift(1-9)"
965 range 1 15 if X86_64 954 range 1 9 if X86_64
966 default "6" if X86_64 955 default "6" if X86_64
967 default "4" if X86_NUMAQ 956 default "4" if X86_NUMAQ
968 default "3" 957 default "3"
@@ -1470,8 +1459,7 @@ endmenu
1470menu "Bus options (PCI etc.)" 1459menu "Bus options (PCI etc.)"
1471 1460
1472config PCI 1461config PCI
1473 bool "PCI support" if !X86_VISWS && !X86_VSMP 1462 bool "PCI support"
1474 depends on !X86_VOYAGER
1475 default y 1463 default y
1476 select ARCH_SUPPORTS_MSI if (X86_LOCAL_APIC && X86_IO_APIC) 1464 select ARCH_SUPPORTS_MSI if (X86_LOCAL_APIC && X86_IO_APIC)
1477 help 1465 help
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
index 2ad6301849a1..3d22bb8175b4 100644
--- a/arch/x86/Kconfig.cpu
+++ b/arch/x86/Kconfig.cpu
@@ -399,6 +399,10 @@ config X86_TSC
399 def_bool y 399 def_bool y
400 depends on ((MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2) && !X86_NUMAQ) || X86_64 400 depends on ((MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2) && !X86_NUMAQ) || X86_64
401 401
402config X86_CMPXCHG64
403 def_bool y
404 depends on X86_PAE || X86_64
405
402# this should be set for all -march=.. options where the compiler 406# this should be set for all -march=.. options where the compiler
403# generates cmov. 407# generates cmov.
404config X86_CMOV 408config X86_CMOV
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 3cff3c894cf3..5df0d1e330b1 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -210,12 +210,12 @@ all: bzImage
210 210
211# KBUILD_IMAGE specify target image being built 211# KBUILD_IMAGE specify target image being built
212 KBUILD_IMAGE := $(boot)/bzImage 212 KBUILD_IMAGE := $(boot)/bzImage
213zImage zlilo zdisk: KBUILD_IMAGE := arch/x86/boot/zImage 213zImage zlilo zdisk: KBUILD_IMAGE := $(boot)/zImage
214 214
215zImage bzImage: vmlinux 215zImage bzImage: vmlinux
216 $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE) 216 $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE)
217 $(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot 217 $(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot
218 $(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/bzImage 218 $(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/$@
219 219
220compressed: zImage 220compressed: zImage
221 221
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index d8819efac81d..1d5dff4123e1 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -30,6 +30,7 @@
30#include <asm/page.h> 30#include <asm/page.h>
31#include <asm/boot.h> 31#include <asm/boot.h>
32#include <asm/msr.h> 32#include <asm/msr.h>
33#include <asm/processor-flags.h>
33#include <asm/asm-offsets.h> 34#include <asm/asm-offsets.h>
34 35
35.section ".text.head" 36.section ".text.head"
@@ -109,7 +110,7 @@ startup_32:
109 110
110 /* Enable PAE mode */ 111 /* Enable PAE mode */
111 xorl %eax, %eax 112 xorl %eax, %eax
112 orl $(1 << 5), %eax 113 orl $(X86_CR4_PAE), %eax
113 movl %eax, %cr4 114 movl %eax, %cr4
114 115
115 /* 116 /*
@@ -170,7 +171,7 @@ startup_32:
170 pushl %eax 171 pushl %eax
171 172
172 /* Enter paged protected Mode, activating Long Mode */ 173 /* Enter paged protected Mode, activating Long Mode */
173 movl $0x80000001, %eax /* Enable Paging and Protected mode */ 174 movl $(X86_CR0_PG | X86_CR0_PE), %eax /* Enable Paging and Protected mode */
174 movl %eax, %cr0 175 movl %eax, %cr0
175 176
176 /* Jump from 32bit compatibility mode into 64bit mode. */ 177 /* Jump from 32bit compatibility mode into 64bit mode. */
diff --git a/arch/x86/boot/video-vga.c b/arch/x86/boot/video-vga.c
index 40ecb8d7688c..b939cb476dec 100644
--- a/arch/x86/boot/video-vga.c
+++ b/arch/x86/boot/video-vga.c
@@ -259,8 +259,7 @@ static int vga_probe(void)
259 return mode_count[adapter]; 259 return mode_count[adapter];
260} 260}
261 261
262__videocard video_vga = 262__videocard video_vga = {
263{
264 .card_name = "VGA", 263 .card_name = "VGA",
265 .probe = vga_probe, 264 .probe = vga_probe,
266 .set_mode = vga_set_mode, 265 .set_mode = vga_set_mode,
diff --git a/arch/x86/configs/i386_defconfig b/arch/x86/configs/i386_defconfig
index ad7ddaaff588..9bc34e2033ec 100644
--- a/arch/x86/configs/i386_defconfig
+++ b/arch/x86/configs/i386_defconfig
@@ -1,54 +1,103 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22-git14 3# Linux kernel version: 2.6.26-rc1
4# Fri Jul 20 09:53:15 2007 4# Sun May 4 19:59:02 2008
5# 5#
6# CONFIG_64BIT is not set
6CONFIG_X86_32=y 7CONFIG_X86_32=y
8# CONFIG_X86_64 is not set
9CONFIG_X86=y
10CONFIG_DEFCONFIG_LIST="arch/x86/configs/i386_defconfig"
11# CONFIG_GENERIC_LOCKBREAK is not set
7CONFIG_GENERIC_TIME=y 12CONFIG_GENERIC_TIME=y
13CONFIG_GENERIC_CMOS_UPDATE=y
8CONFIG_CLOCKSOURCE_WATCHDOG=y 14CONFIG_CLOCKSOURCE_WATCHDOG=y
9CONFIG_GENERIC_CLOCKEVENTS=y 15CONFIG_GENERIC_CLOCKEVENTS=y
10CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y 16CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
11CONFIG_LOCKDEP_SUPPORT=y 17CONFIG_LOCKDEP_SUPPORT=y
12CONFIG_STACKTRACE_SUPPORT=y 18CONFIG_STACKTRACE_SUPPORT=y
13CONFIG_SEMAPHORE_SLEEPERS=y 19CONFIG_HAVE_LATENCYTOP_SUPPORT=y
14CONFIG_X86=y 20CONFIG_FAST_CMPXCHG_LOCAL=y
15CONFIG_MMU=y 21CONFIG_MMU=y
16CONFIG_ZONE_DMA=y 22CONFIG_ZONE_DMA=y
17CONFIG_QUICKLIST=y
18CONFIG_GENERIC_ISA_DMA=y 23CONFIG_GENERIC_ISA_DMA=y
19CONFIG_GENERIC_IOMAP=y 24CONFIG_GENERIC_IOMAP=y
20CONFIG_GENERIC_BUG=y 25CONFIG_GENERIC_BUG=y
21CONFIG_GENERIC_HWEIGHT=y 26CONFIG_GENERIC_HWEIGHT=y
27# CONFIG_GENERIC_GPIO is not set
22CONFIG_ARCH_MAY_HAVE_PC_FDC=y 28CONFIG_ARCH_MAY_HAVE_PC_FDC=y
23CONFIG_DMI=y 29# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 30CONFIG_RWSEM_XCHGADD_ALGORITHM=y
31# CONFIG_ARCH_HAS_ILOG2_U32 is not set
32# CONFIG_ARCH_HAS_ILOG2_U64 is not set
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_GENERIC_CALIBRATE_DELAY=y
35# CONFIG_GENERIC_TIME_VSYSCALL is not set
36CONFIG_ARCH_HAS_CPU_RELAX=y
37CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
38CONFIG_HAVE_SETUP_PER_CPU_AREA=y
39# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
40CONFIG_ARCH_HIBERNATION_POSSIBLE=y
41CONFIG_ARCH_SUSPEND_POSSIBLE=y
42# CONFIG_ZONE_DMA32 is not set
43CONFIG_ARCH_POPULATES_NODE_MAP=y
44# CONFIG_AUDIT_ARCH is not set
45CONFIG_ARCH_SUPPORTS_AOUT=y
46CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
47CONFIG_GENERIC_HARDIRQS=y
48CONFIG_GENERIC_IRQ_PROBE=y
49CONFIG_GENERIC_PENDING_IRQ=y
50CONFIG_X86_SMP=y
51CONFIG_X86_32_SMP=y
52CONFIG_X86_HT=y
53CONFIG_X86_BIOS_REBOOT=y
54CONFIG_X86_TRAMPOLINE=y
55CONFIG_KTIME_SCALAR=y
25 56
26# 57#
27# Code maturity level options 58# General setup
28# 59#
29CONFIG_EXPERIMENTAL=y 60CONFIG_EXPERIMENTAL=y
30CONFIG_LOCK_KERNEL=y 61CONFIG_LOCK_KERNEL=y
31CONFIG_INIT_ENV_ARG_LIMIT=32 62CONFIG_INIT_ENV_ARG_LIMIT=32
32
33#
34# General setup
35#
36CONFIG_LOCALVERSION="" 63CONFIG_LOCALVERSION=""
37CONFIG_LOCALVERSION_AUTO=y 64# CONFIG_LOCALVERSION_AUTO is not set
38CONFIG_SWAP=y 65CONFIG_SWAP=y
39CONFIG_SYSVIPC=y 66CONFIG_SYSVIPC=y
40CONFIG_SYSVIPC_SYSCTL=y 67CONFIG_SYSVIPC_SYSCTL=y
41CONFIG_POSIX_MQUEUE=y 68CONFIG_POSIX_MQUEUE=y
42# CONFIG_BSD_PROCESS_ACCT is not set 69CONFIG_BSD_PROCESS_ACCT=y
43# CONFIG_TASKSTATS is not set 70# CONFIG_BSD_PROCESS_ACCT_V3 is not set
44# CONFIG_USER_NS is not set 71CONFIG_TASKSTATS=y
45# CONFIG_AUDIT is not set 72CONFIG_TASK_DELAY_ACCT=y
46CONFIG_IKCONFIG=y 73CONFIG_TASK_XACCT=y
47CONFIG_IKCONFIG_PROC=y 74CONFIG_TASK_IO_ACCOUNTING=y
48CONFIG_LOG_BUF_SHIFT=18 75CONFIG_AUDIT=y
49# CONFIG_CPUSETS is not set 76CONFIG_AUDITSYSCALL=y
50CONFIG_SYSFS_DEPRECATED=y 77CONFIG_AUDIT_TREE=y
78# CONFIG_IKCONFIG is not set
79CONFIG_LOG_BUF_SHIFT=17
80CONFIG_CGROUPS=y
81# CONFIG_CGROUP_DEBUG is not set
82CONFIG_CGROUP_NS=y
83# CONFIG_CGROUP_DEVICE is not set
84CONFIG_CPUSETS=y
85CONFIG_GROUP_SCHED=y
86CONFIG_FAIR_GROUP_SCHED=y
87# CONFIG_RT_GROUP_SCHED is not set
88# CONFIG_USER_SCHED is not set
89CONFIG_CGROUP_SCHED=y
90CONFIG_CGROUP_CPUACCT=y
91CONFIG_RESOURCE_COUNTERS=y
92# CONFIG_CGROUP_MEM_RES_CTLR is not set
93# CONFIG_SYSFS_DEPRECATED_V2 is not set
94CONFIG_PROC_PID_CPUSET=y
51CONFIG_RELAY=y 95CONFIG_RELAY=y
96CONFIG_NAMESPACES=y
97CONFIG_UTS_NS=y
98CONFIG_IPC_NS=y
99CONFIG_USER_NS=y
100CONFIG_PID_NS=y
52CONFIG_BLK_DEV_INITRD=y 101CONFIG_BLK_DEV_INITRD=y
53CONFIG_INITRAMFS_SOURCE="" 102CONFIG_INITRAMFS_SOURCE=""
54CONFIG_CC_OPTIMIZE_FOR_SIZE=y 103CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -56,13 +105,15 @@ CONFIG_SYSCTL=y
56# CONFIG_EMBEDDED is not set 105# CONFIG_EMBEDDED is not set
57CONFIG_UID16=y 106CONFIG_UID16=y
58CONFIG_SYSCTL_SYSCALL=y 107CONFIG_SYSCTL_SYSCALL=y
108CONFIG_SYSCTL_SYSCALL_CHECK=y
59CONFIG_KALLSYMS=y 109CONFIG_KALLSYMS=y
60CONFIG_KALLSYMS_ALL=y 110CONFIG_KALLSYMS_ALL=y
61# CONFIG_KALLSYMS_EXTRA_PASS is not set 111CONFIG_KALLSYMS_EXTRA_PASS=y
62CONFIG_HOTPLUG=y 112CONFIG_HOTPLUG=y
63CONFIG_PRINTK=y 113CONFIG_PRINTK=y
64CONFIG_BUG=y 114CONFIG_BUG=y
65CONFIG_ELF_CORE=y 115CONFIG_ELF_CORE=y
116# CONFIG_COMPAT_BRK is not set
66CONFIG_BASE_FULL=y 117CONFIG_BASE_FULL=y
67CONFIG_FUTEX=y 118CONFIG_FUTEX=y
68CONFIG_ANON_INODES=y 119CONFIG_ANON_INODES=y
@@ -76,6 +127,17 @@ CONFIG_SLUB_DEBUG=y
76# CONFIG_SLAB is not set 127# CONFIG_SLAB is not set
77CONFIG_SLUB=y 128CONFIG_SLUB=y
78# CONFIG_SLOB is not set 129# CONFIG_SLOB is not set
130CONFIG_PROFILING=y
131CONFIG_MARKERS=y
132# CONFIG_OPROFILE is not set
133CONFIG_HAVE_OPROFILE=y
134CONFIG_KPROBES=y
135CONFIG_KRETPROBES=y
136CONFIG_HAVE_KPROBES=y
137CONFIG_HAVE_KRETPROBES=y
138# CONFIG_HAVE_DMA_ATTRS is not set
139CONFIG_PROC_PAGE_MONITOR=y
140CONFIG_SLABINFO=y
79CONFIG_RT_MUTEXES=y 141CONFIG_RT_MUTEXES=y
80# CONFIG_TINY_SHMEM is not set 142# CONFIG_TINY_SHMEM is not set
81CONFIG_BASE_SMALL=0 143CONFIG_BASE_SMALL=0
@@ -87,10 +149,10 @@ CONFIG_MODULE_FORCE_UNLOAD=y
87# CONFIG_KMOD is not set 149# CONFIG_KMOD is not set
88CONFIG_STOP_MACHINE=y 150CONFIG_STOP_MACHINE=y
89CONFIG_BLOCK=y 151CONFIG_BLOCK=y
90CONFIG_LBD=y 152# CONFIG_LBD is not set
91# CONFIG_BLK_DEV_IO_TRACE is not set 153CONFIG_BLK_DEV_IO_TRACE=y
92# CONFIG_LSF is not set 154# CONFIG_LSF is not set
93# CONFIG_BLK_DEV_BSG is not set 155CONFIG_BLK_DEV_BSG=y
94 156
95# 157#
96# IO Schedulers 158# IO Schedulers
@@ -103,7 +165,8 @@ CONFIG_IOSCHED_CFQ=y
103# CONFIG_DEFAULT_DEADLINE is not set 165# CONFIG_DEFAULT_DEADLINE is not set
104CONFIG_DEFAULT_CFQ=y 166CONFIG_DEFAULT_CFQ=y
105# CONFIG_DEFAULT_NOOP is not set 167# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="anticipatory" 168CONFIG_DEFAULT_IOSCHED="cfq"
169CONFIG_CLASSIC_RCU=y
107 170
108# 171#
109# Processor type and features 172# Processor type and features
@@ -111,18 +174,21 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
111CONFIG_TICK_ONESHOT=y 174CONFIG_TICK_ONESHOT=y
112CONFIG_NO_HZ=y 175CONFIG_NO_HZ=y
113CONFIG_HIGH_RES_TIMERS=y 176CONFIG_HIGH_RES_TIMERS=y
177CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
114CONFIG_SMP=y 178CONFIG_SMP=y
115# CONFIG_X86_PC is not set 179CONFIG_X86_PC=y
116# CONFIG_X86_ELAN is not set 180# CONFIG_X86_ELAN is not set
117# CONFIG_X86_VOYAGER is not set 181# CONFIG_X86_VOYAGER is not set
118# CONFIG_X86_NUMAQ is not set 182# CONFIG_X86_NUMAQ is not set
119# CONFIG_X86_SUMMIT is not set 183# CONFIG_X86_SUMMIT is not set
120# CONFIG_X86_BIGSMP is not set 184# CONFIG_X86_BIGSMP is not set
121# CONFIG_X86_VISWS is not set 185# CONFIG_X86_VISWS is not set
122CONFIG_X86_GENERICARCH=y 186# CONFIG_X86_GENERICARCH is not set
123# CONFIG_X86_ES7000 is not set 187# CONFIG_X86_ES7000 is not set
124# CONFIG_PARAVIRT is not set 188# CONFIG_X86_RDC321X is not set
125CONFIG_X86_CYCLONE_TIMER=y 189# CONFIG_X86_VSMP is not set
190CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
191# CONFIG_PARAVIRT_GUEST is not set
126# CONFIG_M386 is not set 192# CONFIG_M386 is not set
127# CONFIG_M486 is not set 193# CONFIG_M486 is not set
128# CONFIG_M586 is not set 194# CONFIG_M586 is not set
@@ -130,9 +196,8 @@ CONFIG_X86_CYCLONE_TIMER=y
130# CONFIG_M586MMX is not set 196# CONFIG_M586MMX is not set
131# CONFIG_M686 is not set 197# CONFIG_M686 is not set
132# CONFIG_MPENTIUMII is not set 198# CONFIG_MPENTIUMII is not set
133CONFIG_MPENTIUMIII=y 199# CONFIG_MPENTIUMIII is not set
134# CONFIG_MPENTIUMM is not set 200# CONFIG_MPENTIUMM is not set
135# CONFIG_MCORE2 is not set
136# CONFIG_MPENTIUM4 is not set 201# CONFIG_MPENTIUM4 is not set
137# CONFIG_MK6 is not set 202# CONFIG_MK6 is not set
138# CONFIG_MK7 is not set 203# CONFIG_MK7 is not set
@@ -147,14 +212,14 @@ CONFIG_MPENTIUMIII=y
147# CONFIG_MCYRIXIII is not set 212# CONFIG_MCYRIXIII is not set
148# CONFIG_MVIAC3_2 is not set 213# CONFIG_MVIAC3_2 is not set
149# CONFIG_MVIAC7 is not set 214# CONFIG_MVIAC7 is not set
150CONFIG_X86_GENERIC=y 215# CONFIG_MPSC is not set
216CONFIG_MCORE2=y
217# CONFIG_GENERIC_CPU is not set
218# CONFIG_X86_GENERIC is not set
219CONFIG_X86_CPU=y
151CONFIG_X86_CMPXCHG=y 220CONFIG_X86_CMPXCHG=y
152CONFIG_X86_L1_CACHE_SHIFT=7 221CONFIG_X86_L1_CACHE_SHIFT=6
153CONFIG_X86_XADD=y 222CONFIG_X86_XADD=y
154CONFIG_RWSEM_XCHGADD_ALGORITHM=y
155# CONFIG_ARCH_HAS_ILOG2_U32 is not set
156# CONFIG_ARCH_HAS_ILOG2_U64 is not set
157CONFIG_GENERIC_CALIBRATE_DELAY=y
158CONFIG_X86_WP_WORKS_OK=y 223CONFIG_X86_WP_WORKS_OK=y
159CONFIG_X86_INVLPG=y 224CONFIG_X86_INVLPG=y
160CONFIG_X86_BSWAP=y 225CONFIG_X86_BSWAP=y
@@ -162,106 +227,120 @@ CONFIG_X86_POPAD_OK=y
162CONFIG_X86_GOOD_APIC=y 227CONFIG_X86_GOOD_APIC=y
163CONFIG_X86_INTEL_USERCOPY=y 228CONFIG_X86_INTEL_USERCOPY=y
164CONFIG_X86_USE_PPRO_CHECKSUM=y 229CONFIG_X86_USE_PPRO_CHECKSUM=y
230CONFIG_X86_P6_NOP=y
165CONFIG_X86_TSC=y 231CONFIG_X86_TSC=y
166CONFIG_X86_CMOV=y 232CONFIG_X86_MINIMUM_CPU_FAMILY=6
167CONFIG_X86_MINIMUM_CPU_FAMILY=4 233CONFIG_X86_DEBUGCTLMSR=y
168CONFIG_HPET_TIMER=y 234CONFIG_HPET_TIMER=y
169CONFIG_HPET_EMULATE_RTC=y 235CONFIG_HPET_EMULATE_RTC=y
170CONFIG_NR_CPUS=32 236CONFIG_DMI=y
171CONFIG_SCHED_SMT=y 237# CONFIG_IOMMU_HELPER is not set
238CONFIG_NR_CPUS=4
239# CONFIG_SCHED_SMT is not set
172CONFIG_SCHED_MC=y 240CONFIG_SCHED_MC=y
173# CONFIG_PREEMPT_NONE is not set 241# CONFIG_PREEMPT_NONE is not set
174CONFIG_PREEMPT_VOLUNTARY=y 242CONFIG_PREEMPT_VOLUNTARY=y
175# CONFIG_PREEMPT is not set 243# CONFIG_PREEMPT is not set
176CONFIG_PREEMPT_BKL=y
177CONFIG_X86_LOCAL_APIC=y 244CONFIG_X86_LOCAL_APIC=y
178CONFIG_X86_IO_APIC=y 245CONFIG_X86_IO_APIC=y
179CONFIG_X86_MCE=y 246# CONFIG_X86_MCE is not set
180CONFIG_X86_MCE_NONFATAL=y
181CONFIG_X86_MCE_P4THERMAL=y
182CONFIG_VM86=y 247CONFIG_VM86=y
183# CONFIG_TOSHIBA is not set 248# CONFIG_TOSHIBA is not set
184# CONFIG_I8K is not set 249# CONFIG_I8K is not set
185# CONFIG_X86_REBOOTFIXUPS is not set 250# CONFIG_X86_REBOOTFIXUPS is not set
186CONFIG_MICROCODE=y 251# CONFIG_MICROCODE is not set
187CONFIG_MICROCODE_OLD_INTERFACE=y
188CONFIG_X86_MSR=y 252CONFIG_X86_MSR=y
189CONFIG_X86_CPUID=y 253CONFIG_X86_CPUID=y
190
191#
192# Firmware Drivers
193#
194# CONFIG_EDD is not set
195# CONFIG_DELL_RBU is not set
196# CONFIG_DCDBAS is not set
197CONFIG_DMIID=y
198# CONFIG_NOHIGHMEM is not set 254# CONFIG_NOHIGHMEM is not set
199CONFIG_HIGHMEM4G=y 255CONFIG_HIGHMEM4G=y
200# CONFIG_HIGHMEM64G is not set 256# CONFIG_HIGHMEM64G is not set
201CONFIG_PAGE_OFFSET=0xC0000000 257CONFIG_PAGE_OFFSET=0xC0000000
202CONFIG_HIGHMEM=y 258CONFIG_HIGHMEM=y
203CONFIG_ARCH_POPULATES_NODE_MAP=y 259CONFIG_NEED_NODE_MEMMAP_SIZE=y
260CONFIG_ARCH_FLATMEM_ENABLE=y
261CONFIG_ARCH_SPARSEMEM_ENABLE=y
262CONFIG_ARCH_SELECT_MEMORY_MODEL=y
204CONFIG_SELECT_MEMORY_MODEL=y 263CONFIG_SELECT_MEMORY_MODEL=y
205CONFIG_FLATMEM_MANUAL=y 264# CONFIG_FLATMEM_MANUAL is not set
206# CONFIG_DISCONTIGMEM_MANUAL is not set 265# CONFIG_DISCONTIGMEM_MANUAL is not set
207# CONFIG_SPARSEMEM_MANUAL is not set 266CONFIG_SPARSEMEM_MANUAL=y
208CONFIG_FLATMEM=y 267CONFIG_SPARSEMEM=y
209CONFIG_FLAT_NODE_MEM_MAP=y 268CONFIG_HAVE_MEMORY_PRESENT=y
210# CONFIG_SPARSEMEM_STATIC is not set 269CONFIG_SPARSEMEM_STATIC=y
270# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
271
272#
273# Memory hotplug is currently incompatible with Software Suspend
274#
275CONFIG_PAGEFLAGS_EXTENDED=y
211CONFIG_SPLIT_PTLOCK_CPUS=4 276CONFIG_SPLIT_PTLOCK_CPUS=4
212CONFIG_RESOURCES_64BIT=y 277CONFIG_RESOURCES_64BIT=y
213CONFIG_ZONE_DMA_FLAG=1 278CONFIG_ZONE_DMA_FLAG=1
214CONFIG_BOUNCE=y 279CONFIG_BOUNCE=y
215CONFIG_NR_QUICK=1
216CONFIG_VIRT_TO_BUS=y 280CONFIG_VIRT_TO_BUS=y
217# CONFIG_HIGHPTE is not set 281# CONFIG_HIGHPTE is not set
218# CONFIG_MATH_EMULATION is not set 282# CONFIG_MATH_EMULATION is not set
219CONFIG_MTRR=y 283CONFIG_MTRR=y
220# CONFIG_EFI is not set 284# CONFIG_X86_PAT is not set
285CONFIG_EFI=y
221# CONFIG_IRQBALANCE is not set 286# CONFIG_IRQBALANCE is not set
222CONFIG_SECCOMP=y 287CONFIG_SECCOMP=y
223# CONFIG_HZ_100 is not set 288# CONFIG_HZ_100 is not set
224CONFIG_HZ_250=y 289# CONFIG_HZ_250 is not set
225# CONFIG_HZ_300 is not set 290# CONFIG_HZ_300 is not set
226# CONFIG_HZ_1000 is not set 291CONFIG_HZ_1000=y
227CONFIG_HZ=250 292CONFIG_HZ=1000
228# CONFIG_KEXEC is not set 293CONFIG_SCHED_HRTICK=y
229# CONFIG_CRASH_DUMP is not set 294CONFIG_KEXEC=y
230CONFIG_PHYSICAL_START=0x100000 295CONFIG_CRASH_DUMP=y
231# CONFIG_RELOCATABLE is not set 296CONFIG_PHYSICAL_START=0x1000000
232CONFIG_PHYSICAL_ALIGN=0x100000 297CONFIG_RELOCATABLE=y
233# CONFIG_HOTPLUG_CPU is not set 298CONFIG_PHYSICAL_ALIGN=0x200000
234CONFIG_COMPAT_VDSO=y 299CONFIG_HOTPLUG_CPU=y
300# CONFIG_COMPAT_VDSO is not set
235CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 301CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
236 302
237# 303#
238# Power management options (ACPI, APM) 304# Power management options
239# 305#
240CONFIG_PM=y 306CONFIG_PM=y
241CONFIG_PM_LEGACY=y 307CONFIG_PM_DEBUG=y
242# CONFIG_PM_DEBUG is not set 308# CONFIG_PM_VERBOSE is not set
243 309CONFIG_CAN_PM_TRACE=y
244# 310CONFIG_PM_TRACE=y
245# ACPI (Advanced Configuration and Power Interface) Support 311CONFIG_PM_TRACE_RTC=y
246# 312CONFIG_PM_SLEEP_SMP=y
313CONFIG_PM_SLEEP=y
314CONFIG_SUSPEND=y
315CONFIG_SUSPEND_FREEZER=y
316CONFIG_HIBERNATION=y
317CONFIG_PM_STD_PARTITION=""
247CONFIG_ACPI=y 318CONFIG_ACPI=y
319CONFIG_ACPI_SLEEP=y
248CONFIG_ACPI_PROCFS=y 320CONFIG_ACPI_PROCFS=y
321CONFIG_ACPI_PROCFS_POWER=y
322CONFIG_ACPI_SYSFS_POWER=y
323CONFIG_ACPI_PROC_EVENT=y
249CONFIG_ACPI_AC=y 324CONFIG_ACPI_AC=y
250CONFIG_ACPI_BATTERY=y 325CONFIG_ACPI_BATTERY=y
251CONFIG_ACPI_BUTTON=y 326CONFIG_ACPI_BUTTON=y
252CONFIG_ACPI_FAN=y 327CONFIG_ACPI_FAN=y
253# CONFIG_ACPI_DOCK is not set 328CONFIG_ACPI_DOCK=y
329# CONFIG_ACPI_BAY is not set
254CONFIG_ACPI_PROCESSOR=y 330CONFIG_ACPI_PROCESSOR=y
331CONFIG_ACPI_HOTPLUG_CPU=y
255CONFIG_ACPI_THERMAL=y 332CONFIG_ACPI_THERMAL=y
333# CONFIG_ACPI_WMI is not set
256# CONFIG_ACPI_ASUS is not set 334# CONFIG_ACPI_ASUS is not set
257# CONFIG_ACPI_TOSHIBA is not set 335# CONFIG_ACPI_TOSHIBA is not set
258CONFIG_ACPI_BLACKLIST_YEAR=2001 336# CONFIG_ACPI_CUSTOM_DSDT is not set
259CONFIG_ACPI_DEBUG=y 337CONFIG_ACPI_BLACKLIST_YEAR=0
338# CONFIG_ACPI_DEBUG is not set
260CONFIG_ACPI_EC=y 339CONFIG_ACPI_EC=y
261CONFIG_ACPI_POWER=y 340CONFIG_ACPI_POWER=y
262CONFIG_ACPI_SYSTEM=y 341CONFIG_ACPI_SYSTEM=y
263CONFIG_X86_PM_TIMER=y 342CONFIG_X86_PM_TIMER=y
264# CONFIG_ACPI_CONTAINER is not set 343CONFIG_ACPI_CONTAINER=y
265# CONFIG_ACPI_SBS is not set 344# CONFIG_ACPI_SBS is not set
266# CONFIG_APM is not set 345# CONFIG_APM is not set
267 346
@@ -271,15 +350,17 @@ CONFIG_X86_PM_TIMER=y
271CONFIG_CPU_FREQ=y 350CONFIG_CPU_FREQ=y
272CONFIG_CPU_FREQ_TABLE=y 351CONFIG_CPU_FREQ_TABLE=y
273CONFIG_CPU_FREQ_DEBUG=y 352CONFIG_CPU_FREQ_DEBUG=y
274CONFIG_CPU_FREQ_STAT=y 353# CONFIG_CPU_FREQ_STAT is not set
275# CONFIG_CPU_FREQ_STAT_DETAILS is not set 354# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
276CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 355# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
277# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 356CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
357# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
358# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
278CONFIG_CPU_FREQ_GOV_PERFORMANCE=y 359CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
279# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set 360# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
280CONFIG_CPU_FREQ_GOV_USERSPACE=y 361CONFIG_CPU_FREQ_GOV_USERSPACE=y
281CONFIG_CPU_FREQ_GOV_ONDEMAND=y 362CONFIG_CPU_FREQ_GOV_ONDEMAND=y
282CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y 363# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
283 364
284# 365#
285# CPUFreq processor drivers 366# CPUFreq processor drivers
@@ -287,8 +368,7 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
287CONFIG_X86_ACPI_CPUFREQ=y 368CONFIG_X86_ACPI_CPUFREQ=y
288# CONFIG_X86_POWERNOW_K6 is not set 369# CONFIG_X86_POWERNOW_K6 is not set
289# CONFIG_X86_POWERNOW_K7 is not set 370# CONFIG_X86_POWERNOW_K7 is not set
290CONFIG_X86_POWERNOW_K8=y 371# CONFIG_X86_POWERNOW_K8 is not set
291CONFIG_X86_POWERNOW_K8_ACPI=y
292# CONFIG_X86_GX_SUSPMOD is not set 372# CONFIG_X86_GX_SUSPMOD is not set
293# CONFIG_X86_SPEEDSTEP_CENTRINO is not set 373# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
294# CONFIG_X86_SPEEDSTEP_ICH is not set 374# CONFIG_X86_SPEEDSTEP_ICH is not set
@@ -302,43 +382,72 @@ CONFIG_X86_POWERNOW_K8_ACPI=y
302# 382#
303# shared options 383# shared options
304# 384#
305CONFIG_X86_ACPI_CPUFREQ_PROC_INTF=y 385# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
306# CONFIG_X86_SPEEDSTEP_LIB is not set 386# CONFIG_X86_SPEEDSTEP_LIB is not set
387CONFIG_CPU_IDLE=y
388CONFIG_CPU_IDLE_GOV_LADDER=y
389CONFIG_CPU_IDLE_GOV_MENU=y
307 390
308# 391#
309# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 392# Bus options (PCI etc.)
310# 393#
311CONFIG_PCI=y 394CONFIG_PCI=y
312# CONFIG_PCI_GOBIOS is not set 395# CONFIG_PCI_GOBIOS is not set
313# CONFIG_PCI_GOMMCONFIG is not set 396# CONFIG_PCI_GOMMCONFIG is not set
314# CONFIG_PCI_GODIRECT is not set 397# CONFIG_PCI_GODIRECT is not set
315CONFIG_PCI_GOANY=y 398CONFIG_PCI_GOANY=y
399# CONFIG_PCI_GOOLPC is not set
316CONFIG_PCI_BIOS=y 400CONFIG_PCI_BIOS=y
317CONFIG_PCI_DIRECT=y 401CONFIG_PCI_DIRECT=y
318CONFIG_PCI_MMCONFIG=y 402CONFIG_PCI_MMCONFIG=y
319# CONFIG_PCIEPORTBUS is not set 403CONFIG_PCI_DOMAINS=y
404CONFIG_PCIEPORTBUS=y
405# CONFIG_HOTPLUG_PCI_PCIE is not set
406CONFIG_PCIEAER=y
407# CONFIG_PCIEASPM is not set
320CONFIG_ARCH_SUPPORTS_MSI=y 408CONFIG_ARCH_SUPPORTS_MSI=y
321CONFIG_PCI_MSI=y 409CONFIG_PCI_MSI=y
410# CONFIG_PCI_LEGACY is not set
322# CONFIG_PCI_DEBUG is not set 411# CONFIG_PCI_DEBUG is not set
323# CONFIG_HT_IRQ is not set 412CONFIG_HT_IRQ=y
324CONFIG_ISA_DMA_API=y 413CONFIG_ISA_DMA_API=y
325# CONFIG_ISA is not set 414# CONFIG_ISA is not set
326# CONFIG_MCA is not set 415# CONFIG_MCA is not set
327# CONFIG_SCx200 is not set 416# CONFIG_SCx200 is not set
417# CONFIG_OLPC is not set
328CONFIG_K8_NB=y 418CONFIG_K8_NB=y
329 419CONFIG_PCCARD=y
330# 420# CONFIG_PCMCIA_DEBUG is not set
331# PCCARD (PCMCIA/CardBus) support 421CONFIG_PCMCIA=y
332# 422CONFIG_PCMCIA_LOAD_CIS=y
333# CONFIG_PCCARD is not set 423CONFIG_PCMCIA_IOCTL=y
334# CONFIG_HOTPLUG_PCI is not set 424CONFIG_CARDBUS=y
335 425
336# 426#
337# Executable file formats 427# PC-card bridges
428#
429CONFIG_YENTA=y
430CONFIG_YENTA_O2=y
431CONFIG_YENTA_RICOH=y
432CONFIG_YENTA_TI=y
433CONFIG_YENTA_ENE_TUNE=y
434CONFIG_YENTA_TOSHIBA=y
435# CONFIG_PD6729 is not set
436# CONFIG_I82092 is not set
437CONFIG_PCCARD_NONSTATIC=y
438CONFIG_HOTPLUG_PCI=y
439# CONFIG_HOTPLUG_PCI_FAKE is not set
440# CONFIG_HOTPLUG_PCI_IBM is not set
441# CONFIG_HOTPLUG_PCI_ACPI is not set
442# CONFIG_HOTPLUG_PCI_CPCI is not set
443# CONFIG_HOTPLUG_PCI_SHPC is not set
444
445#
446# Executable file formats / Emulations
338# 447#
339CONFIG_BINFMT_ELF=y 448CONFIG_BINFMT_ELF=y
340# CONFIG_BINFMT_AOUT is not set 449# CONFIG_BINFMT_AOUT is not set
341# CONFIG_BINFMT_MISC is not set 450CONFIG_BINFMT_MISC=y
342 451
343# 452#
344# Networking 453# Networking
@@ -349,59 +458,142 @@ CONFIG_NET=y
349# Networking options 458# Networking options
350# 459#
351CONFIG_PACKET=y 460CONFIG_PACKET=y
352# CONFIG_PACKET_MMAP is not set 461CONFIG_PACKET_MMAP=y
353CONFIG_UNIX=y 462CONFIG_UNIX=y
354CONFIG_XFRM=y 463CONFIG_XFRM=y
355# CONFIG_XFRM_USER is not set 464CONFIG_XFRM_USER=y
356# CONFIG_XFRM_SUB_POLICY is not set 465# CONFIG_XFRM_SUB_POLICY is not set
357# CONFIG_XFRM_MIGRATE is not set 466# CONFIG_XFRM_MIGRATE is not set
467# CONFIG_XFRM_STATISTICS is not set
358# CONFIG_NET_KEY is not set 468# CONFIG_NET_KEY is not set
359CONFIG_INET=y 469CONFIG_INET=y
360CONFIG_IP_MULTICAST=y 470CONFIG_IP_MULTICAST=y
361# CONFIG_IP_ADVANCED_ROUTER is not set 471CONFIG_IP_ADVANCED_ROUTER=y
472CONFIG_ASK_IP_FIB_HASH=y
473# CONFIG_IP_FIB_TRIE is not set
362CONFIG_IP_FIB_HASH=y 474CONFIG_IP_FIB_HASH=y
363CONFIG_IP_PNP=y 475CONFIG_IP_MULTIPLE_TABLES=y
364CONFIG_IP_PNP_DHCP=y 476CONFIG_IP_ROUTE_MULTIPATH=y
365# CONFIG_IP_PNP_BOOTP is not set 477CONFIG_IP_ROUTE_VERBOSE=y
366# CONFIG_IP_PNP_RARP is not set 478# CONFIG_IP_PNP is not set
367# CONFIG_NET_IPIP is not set 479# CONFIG_NET_IPIP is not set
368# CONFIG_NET_IPGRE is not set 480# CONFIG_NET_IPGRE is not set
369# CONFIG_IP_MROUTE is not set 481CONFIG_IP_MROUTE=y
482CONFIG_IP_PIMSM_V1=y
483CONFIG_IP_PIMSM_V2=y
370# CONFIG_ARPD is not set 484# CONFIG_ARPD is not set
371# CONFIG_SYN_COOKIES is not set 485CONFIG_SYN_COOKIES=y
372# CONFIG_INET_AH is not set 486# CONFIG_INET_AH is not set
373# CONFIG_INET_ESP is not set 487# CONFIG_INET_ESP is not set
374# CONFIG_INET_IPCOMP is not set 488# CONFIG_INET_IPCOMP is not set
375# CONFIG_INET_XFRM_TUNNEL is not set 489# CONFIG_INET_XFRM_TUNNEL is not set
376CONFIG_INET_TUNNEL=y 490CONFIG_INET_TUNNEL=y
377CONFIG_INET_XFRM_MODE_TRANSPORT=y 491# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
378CONFIG_INET_XFRM_MODE_TUNNEL=y 492# CONFIG_INET_XFRM_MODE_TUNNEL is not set
379# CONFIG_INET_XFRM_MODE_BEET is not set 493# CONFIG_INET_XFRM_MODE_BEET is not set
380CONFIG_INET_DIAG=y 494CONFIG_INET_LRO=y
381CONFIG_INET_TCP_DIAG=y 495# CONFIG_INET_DIAG is not set
382# CONFIG_TCP_CONG_ADVANCED is not set 496CONFIG_TCP_CONG_ADVANCED=y
497# CONFIG_TCP_CONG_BIC is not set
383CONFIG_TCP_CONG_CUBIC=y 498CONFIG_TCP_CONG_CUBIC=y
499# CONFIG_TCP_CONG_WESTWOOD is not set
500# CONFIG_TCP_CONG_HTCP is not set
501# CONFIG_TCP_CONG_HSTCP is not set
502# CONFIG_TCP_CONG_HYBLA is not set
503# CONFIG_TCP_CONG_VEGAS is not set
504# CONFIG_TCP_CONG_SCALABLE is not set
505# CONFIG_TCP_CONG_LP is not set
506# CONFIG_TCP_CONG_VENO is not set
507# CONFIG_TCP_CONG_YEAH is not set
508# CONFIG_TCP_CONG_ILLINOIS is not set
509# CONFIG_DEFAULT_BIC is not set
510CONFIG_DEFAULT_CUBIC=y
511# CONFIG_DEFAULT_HTCP is not set
512# CONFIG_DEFAULT_VEGAS is not set
513# CONFIG_DEFAULT_WESTWOOD is not set
514# CONFIG_DEFAULT_RENO is not set
384CONFIG_DEFAULT_TCP_CONG="cubic" 515CONFIG_DEFAULT_TCP_CONG="cubic"
385# CONFIG_TCP_MD5SIG is not set 516CONFIG_TCP_MD5SIG=y
517# CONFIG_IP_VS is not set
386CONFIG_IPV6=y 518CONFIG_IPV6=y
387# CONFIG_IPV6_PRIVACY is not set 519# CONFIG_IPV6_PRIVACY is not set
388# CONFIG_IPV6_ROUTER_PREF is not set 520# CONFIG_IPV6_ROUTER_PREF is not set
389# CONFIG_IPV6_OPTIMISTIC_DAD is not set 521# CONFIG_IPV6_OPTIMISTIC_DAD is not set
390# CONFIG_INET6_AH is not set 522CONFIG_INET6_AH=y
391# CONFIG_INET6_ESP is not set 523CONFIG_INET6_ESP=y
392# CONFIG_INET6_IPCOMP is not set 524# CONFIG_INET6_IPCOMP is not set
393# CONFIG_IPV6_MIP6 is not set 525# CONFIG_IPV6_MIP6 is not set
394# CONFIG_INET6_XFRM_TUNNEL is not set 526# CONFIG_INET6_XFRM_TUNNEL is not set
395# CONFIG_INET6_TUNNEL is not set 527# CONFIG_INET6_TUNNEL is not set
396CONFIG_INET6_XFRM_MODE_TRANSPORT=y 528CONFIG_INET6_XFRM_MODE_TRANSPORT=y
397CONFIG_INET6_XFRM_MODE_TUNNEL=y 529CONFIG_INET6_XFRM_MODE_TUNNEL=y
398# CONFIG_INET6_XFRM_MODE_BEET is not set 530CONFIG_INET6_XFRM_MODE_BEET=y
399# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 531# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
400CONFIG_IPV6_SIT=y 532CONFIG_IPV6_SIT=y
533CONFIG_IPV6_NDISC_NODETYPE=y
401# CONFIG_IPV6_TUNNEL is not set 534# CONFIG_IPV6_TUNNEL is not set
402# CONFIG_IPV6_MULTIPLE_TABLES is not set 535# CONFIG_IPV6_MULTIPLE_TABLES is not set
403# CONFIG_NETWORK_SECMARK is not set 536# CONFIG_IPV6_MROUTE is not set
404# CONFIG_NETFILTER is not set 537CONFIG_NETLABEL=y
538CONFIG_NETWORK_SECMARK=y
539CONFIG_NETFILTER=y
540# CONFIG_NETFILTER_DEBUG is not set
541# CONFIG_NETFILTER_ADVANCED is not set
542
543#
544# Core Netfilter Configuration
545#
546CONFIG_NETFILTER_NETLINK=y
547CONFIG_NETFILTER_NETLINK_LOG=y
548CONFIG_NF_CONNTRACK=y
549CONFIG_NF_CONNTRACK_SECMARK=y
550CONFIG_NF_CONNTRACK_FTP=y
551CONFIG_NF_CONNTRACK_IRC=y
552CONFIG_NF_CONNTRACK_SIP=y
553CONFIG_NF_CT_NETLINK=y
554CONFIG_NETFILTER_XTABLES=y
555CONFIG_NETFILTER_XT_TARGET_MARK=y
556CONFIG_NETFILTER_XT_TARGET_NFLOG=y
557CONFIG_NETFILTER_XT_TARGET_SECMARK=y
558CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
559CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
560CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
561CONFIG_NETFILTER_XT_MATCH_MARK=y
562CONFIG_NETFILTER_XT_MATCH_POLICY=y
563CONFIG_NETFILTER_XT_MATCH_STATE=y
564
565#
566# IP: Netfilter Configuration
567#
568CONFIG_NF_CONNTRACK_IPV4=y
569CONFIG_NF_CONNTRACK_PROC_COMPAT=y
570CONFIG_IP_NF_IPTABLES=y
571CONFIG_IP_NF_FILTER=y
572CONFIG_IP_NF_TARGET_REJECT=y
573CONFIG_IP_NF_TARGET_LOG=y
574CONFIG_IP_NF_TARGET_ULOG=y
575CONFIG_NF_NAT=y
576CONFIG_NF_NAT_NEEDED=y
577CONFIG_IP_NF_TARGET_MASQUERADE=y
578CONFIG_NF_NAT_FTP=y
579CONFIG_NF_NAT_IRC=y
580# CONFIG_NF_NAT_TFTP is not set
581# CONFIG_NF_NAT_AMANDA is not set
582# CONFIG_NF_NAT_PPTP is not set
583# CONFIG_NF_NAT_H323 is not set
584CONFIG_NF_NAT_SIP=y
585CONFIG_IP_NF_MANGLE=y
586
587#
588# IPv6: Netfilter Configuration
589#
590CONFIG_NF_CONNTRACK_IPV6=y
591CONFIG_IP6_NF_IPTABLES=y
592CONFIG_IP6_NF_MATCH_IPV6HEADER=y
593CONFIG_IP6_NF_FILTER=y
594CONFIG_IP6_NF_TARGET_LOG=y
595CONFIG_IP6_NF_TARGET_REJECT=y
596CONFIG_IP6_NF_MANGLE=y
405# CONFIG_IP_DCCP is not set 597# CONFIG_IP_DCCP is not set
406# CONFIG_IP_SCTP is not set 598# CONFIG_IP_SCTP is not set
407# CONFIG_TIPC is not set 599# CONFIG_TIPC is not set
@@ -409,6 +601,7 @@ CONFIG_IPV6_SIT=y
409# CONFIG_BRIDGE is not set 601# CONFIG_BRIDGE is not set
410# CONFIG_VLAN_8021Q is not set 602# CONFIG_VLAN_8021Q is not set
411# CONFIG_DECNET is not set 603# CONFIG_DECNET is not set
604CONFIG_LLC=y
412# CONFIG_LLC2 is not set 605# CONFIG_LLC2 is not set
413# CONFIG_IPX is not set 606# CONFIG_IPX is not set
414# CONFIG_ATALK is not set 607# CONFIG_ATALK is not set
@@ -416,28 +609,99 @@ CONFIG_IPV6_SIT=y
416# CONFIG_LAPB is not set 609# CONFIG_LAPB is not set
417# CONFIG_ECONET is not set 610# CONFIG_ECONET is not set
418# CONFIG_WAN_ROUTER is not set 611# CONFIG_WAN_ROUTER is not set
419 612CONFIG_NET_SCHED=y
420# 613
421# QoS and/or fair queueing 614#
422# 615# Queueing/Scheduling
423# CONFIG_NET_SCHED is not set 616#
617# CONFIG_NET_SCH_CBQ is not set
618# CONFIG_NET_SCH_HTB is not set
619# CONFIG_NET_SCH_HFSC is not set
620# CONFIG_NET_SCH_PRIO is not set
621# CONFIG_NET_SCH_RR is not set
622# CONFIG_NET_SCH_RED is not set
623# CONFIG_NET_SCH_SFQ is not set
624# CONFIG_NET_SCH_TEQL is not set
625# CONFIG_NET_SCH_TBF is not set
626# CONFIG_NET_SCH_GRED is not set
627# CONFIG_NET_SCH_DSMARK is not set
628# CONFIG_NET_SCH_NETEM is not set
629# CONFIG_NET_SCH_INGRESS is not set
630
631#
632# Classification
633#
634CONFIG_NET_CLS=y
635# CONFIG_NET_CLS_BASIC is not set
636# CONFIG_NET_CLS_TCINDEX is not set
637# CONFIG_NET_CLS_ROUTE4 is not set
638# CONFIG_NET_CLS_FW is not set
639# CONFIG_NET_CLS_U32 is not set
640# CONFIG_NET_CLS_RSVP is not set
641# CONFIG_NET_CLS_RSVP6 is not set
642# CONFIG_NET_CLS_FLOW is not set
643CONFIG_NET_EMATCH=y
644CONFIG_NET_EMATCH_STACK=32
645# CONFIG_NET_EMATCH_CMP is not set
646# CONFIG_NET_EMATCH_NBYTE is not set
647# CONFIG_NET_EMATCH_U32 is not set
648# CONFIG_NET_EMATCH_META is not set
649# CONFIG_NET_EMATCH_TEXT is not set
650CONFIG_NET_CLS_ACT=y
651# CONFIG_NET_ACT_POLICE is not set
652# CONFIG_NET_ACT_GACT is not set
653# CONFIG_NET_ACT_MIRRED is not set
654# CONFIG_NET_ACT_IPT is not set
655# CONFIG_NET_ACT_NAT is not set
656# CONFIG_NET_ACT_PEDIT is not set
657# CONFIG_NET_ACT_SIMP is not set
658CONFIG_NET_SCH_FIFO=y
424 659
425# 660#
426# Network testing 661# Network testing
427# 662#
428# CONFIG_NET_PKTGEN is not set 663# CONFIG_NET_PKTGEN is not set
429# CONFIG_NET_TCPPROBE is not set 664# CONFIG_NET_TCPPROBE is not set
430# CONFIG_HAMRADIO is not set 665CONFIG_HAMRADIO=y
666
667#
668# Packet Radio protocols
669#
670# CONFIG_AX25 is not set
671# CONFIG_CAN is not set
431# CONFIG_IRDA is not set 672# CONFIG_IRDA is not set
432# CONFIG_BT is not set 673# CONFIG_BT is not set
433# CONFIG_AF_RXRPC is not set 674# CONFIG_AF_RXRPC is not set
675CONFIG_FIB_RULES=y
434 676
435# 677#
436# Wireless 678# Wireless
437# 679#
438# CONFIG_CFG80211 is not set 680CONFIG_CFG80211=y
439# CONFIG_WIRELESS_EXT is not set 681CONFIG_NL80211=y
440# CONFIG_MAC80211 is not set 682CONFIG_WIRELESS_EXT=y
683CONFIG_MAC80211=y
684
685#
686# Rate control algorithm selection
687#
688CONFIG_MAC80211_RC_DEFAULT_PID=y
689# CONFIG_MAC80211_RC_DEFAULT_NONE is not set
690
691#
692# Selecting 'y' for an algorithm will
693#
694
695#
696# build the algorithm into mac80211.
697#
698CONFIG_MAC80211_RC_DEFAULT="pid"
699CONFIG_MAC80211_RC_PID=y
700# CONFIG_MAC80211_MESH is not set
701CONFIG_MAC80211_LEDS=y
702# CONFIG_MAC80211_DEBUGFS is not set
703# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
704# CONFIG_MAC80211_DEBUG is not set
441# CONFIG_IEEE80211 is not set 705# CONFIG_IEEE80211 is not set
442# CONFIG_RFKILL is not set 706# CONFIG_RFKILL is not set
443# CONFIG_NET_9P is not set 707# CONFIG_NET_9P is not set
@@ -449,13 +713,15 @@ CONFIG_IPV6_SIT=y
449# 713#
450# Generic Driver Options 714# Generic Driver Options
451# 715#
716CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
452CONFIG_STANDALONE=y 717CONFIG_STANDALONE=y
453CONFIG_PREVENT_FIRMWARE_BUILD=y 718CONFIG_PREVENT_FIRMWARE_BUILD=y
454CONFIG_FW_LOADER=y 719CONFIG_FW_LOADER=y
455# CONFIG_DEBUG_DRIVER is not set 720# CONFIG_DEBUG_DRIVER is not set
456# CONFIG_DEBUG_DEVRES is not set 721CONFIG_DEBUG_DEVRES=y
457# CONFIG_SYS_HYPERVISOR is not set 722# CONFIG_SYS_HYPERVISOR is not set
458# CONFIG_CONNECTOR is not set 723CONFIG_CONNECTOR=y
724CONFIG_PROC_EVENTS=y
459# CONFIG_MTD is not set 725# CONFIG_MTD is not set
460# CONFIG_PARPORT is not set 726# CONFIG_PARPORT is not set
461CONFIG_PNP=y 727CONFIG_PNP=y
@@ -466,7 +732,7 @@ CONFIG_PNP=y
466# 732#
467CONFIG_PNPACPI=y 733CONFIG_PNPACPI=y
468CONFIG_BLK_DEV=y 734CONFIG_BLK_DEV=y
469CONFIG_BLK_DEV_FD=y 735# CONFIG_BLK_DEV_FD is not set
470# CONFIG_BLK_CPQ_DA is not set 736# CONFIG_BLK_CPQ_DA is not set
471# CONFIG_BLK_CPQ_CISS_DA is not set 737# CONFIG_BLK_CPQ_CISS_DA is not set
472# CONFIG_BLK_DEV_DAC960 is not set 738# CONFIG_BLK_DEV_DAC960 is not set
@@ -479,8 +745,8 @@ CONFIG_BLK_DEV_LOOP=y
479# CONFIG_BLK_DEV_UB is not set 745# CONFIG_BLK_DEV_UB is not set
480CONFIG_BLK_DEV_RAM=y 746CONFIG_BLK_DEV_RAM=y
481CONFIG_BLK_DEV_RAM_COUNT=16 747CONFIG_BLK_DEV_RAM_COUNT=16
482CONFIG_BLK_DEV_RAM_SIZE=4096 748CONFIG_BLK_DEV_RAM_SIZE=16384
483CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 749# CONFIG_BLK_DEV_XIP is not set
484# CONFIG_CDROM_PKTCDVD is not set 750# CONFIG_CDROM_PKTCDVD is not set
485# CONFIG_ATA_OVER_ETH is not set 751# CONFIG_ATA_OVER_ETH is not set
486CONFIG_MISC_DEVICES=y 752CONFIG_MISC_DEVICES=y
@@ -489,73 +755,17 @@ CONFIG_MISC_DEVICES=y
489# CONFIG_EEPROM_93CX6 is not set 755# CONFIG_EEPROM_93CX6 is not set
490# CONFIG_SGI_IOC4 is not set 756# CONFIG_SGI_IOC4 is not set
491# CONFIG_TIFM_CORE is not set 757# CONFIG_TIFM_CORE is not set
758# CONFIG_ACER_WMI is not set
759# CONFIG_ASUS_LAPTOP is not set
760# CONFIG_FUJITSU_LAPTOP is not set
761# CONFIG_TC1100_WMI is not set
762# CONFIG_MSI_LAPTOP is not set
492# CONFIG_SONY_LAPTOP is not set 763# CONFIG_SONY_LAPTOP is not set
493# CONFIG_THINKPAD_ACPI is not set 764# CONFIG_THINKPAD_ACPI is not set
494CONFIG_IDE=y 765# CONFIG_INTEL_MENLOW is not set
495CONFIG_BLK_DEV_IDE=y 766# CONFIG_ENCLOSURE_SERVICES is not set
496 767CONFIG_HAVE_IDE=y
497# 768# CONFIG_IDE is not set
498# Please see Documentation/ide.txt for help/info on IDE drives
499#
500# CONFIG_BLK_DEV_IDE_SATA is not set
501# CONFIG_BLK_DEV_HD_IDE is not set
502CONFIG_BLK_DEV_IDEDISK=y
503CONFIG_IDEDISK_MULTI_MODE=y
504CONFIG_BLK_DEV_IDECD=y
505# CONFIG_BLK_DEV_IDETAPE is not set
506# CONFIG_BLK_DEV_IDEFLOPPY is not set
507# CONFIG_BLK_DEV_IDESCSI is not set
508CONFIG_BLK_DEV_IDEACPI=y
509# CONFIG_IDE_TASK_IOCTL is not set
510CONFIG_IDE_PROC_FS=y
511
512#
513# IDE chipset support/bugfixes
514#
515CONFIG_IDE_GENERIC=y
516# CONFIG_BLK_DEV_CMD640 is not set
517# CONFIG_BLK_DEV_IDEPNP is not set
518CONFIG_BLK_DEV_IDEPCI=y
519# CONFIG_IDEPCI_SHARE_IRQ is not set
520CONFIG_IDEPCI_PCIBUS_ORDER=y
521# CONFIG_BLK_DEV_OFFBOARD is not set
522# CONFIG_BLK_DEV_GENERIC is not set
523# CONFIG_BLK_DEV_OPTI621 is not set
524# CONFIG_BLK_DEV_RZ1000 is not set
525CONFIG_BLK_DEV_IDEDMA_PCI=y
526# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
527# CONFIG_IDEDMA_ONLYDISK is not set
528# CONFIG_BLK_DEV_AEC62XX is not set
529# CONFIG_BLK_DEV_ALI15X3 is not set
530CONFIG_BLK_DEV_AMD74XX=y
531# CONFIG_BLK_DEV_ATIIXP is not set
532# CONFIG_BLK_DEV_CMD64X is not set
533# CONFIG_BLK_DEV_TRIFLEX is not set
534# CONFIG_BLK_DEV_CY82C693 is not set
535# CONFIG_BLK_DEV_CS5520 is not set
536# CONFIG_BLK_DEV_CS5530 is not set
537# CONFIG_BLK_DEV_CS5535 is not set
538# CONFIG_BLK_DEV_HPT34X is not set
539# CONFIG_BLK_DEV_HPT366 is not set
540# CONFIG_BLK_DEV_JMICRON is not set
541# CONFIG_BLK_DEV_SC1200 is not set
542CONFIG_BLK_DEV_PIIX=y
543# CONFIG_BLK_DEV_IT8213 is not set
544# CONFIG_BLK_DEV_IT821X is not set
545# CONFIG_BLK_DEV_NS87415 is not set
546# CONFIG_BLK_DEV_PDC202XX_OLD is not set
547# CONFIG_BLK_DEV_PDC202XX_NEW is not set
548# CONFIG_BLK_DEV_SVWKS is not set
549# CONFIG_BLK_DEV_SIIMAGE is not set
550# CONFIG_BLK_DEV_SIS5513 is not set
551# CONFIG_BLK_DEV_SLC90E66 is not set
552# CONFIG_BLK_DEV_TRM290 is not set
553# CONFIG_BLK_DEV_VIA82CXXX is not set
554# CONFIG_BLK_DEV_TC86C001 is not set
555# CONFIG_IDE_ARM is not set
556CONFIG_BLK_DEV_IDEDMA=y
557# CONFIG_IDEDMA_IVB is not set
558# CONFIG_BLK_DEV_HD is not set
559 769
560# 770#
561# SCSI device support 771# SCSI device support
@@ -564,8 +774,8 @@ CONFIG_BLK_DEV_IDEDMA=y
564CONFIG_SCSI=y 774CONFIG_SCSI=y
565CONFIG_SCSI_DMA=y 775CONFIG_SCSI_DMA=y
566# CONFIG_SCSI_TGT is not set 776# CONFIG_SCSI_TGT is not set
567CONFIG_SCSI_NETLINK=y 777# CONFIG_SCSI_NETLINK is not set
568# CONFIG_SCSI_PROC_FS is not set 778CONFIG_SCSI_PROC_FS=y
569 779
570# 780#
571# SCSI support type (disk, tape, CD-ROM) 781# SCSI support type (disk, tape, CD-ROM)
@@ -574,7 +784,7 @@ CONFIG_BLK_DEV_SD=y
574# CONFIG_CHR_DEV_ST is not set 784# CONFIG_CHR_DEV_ST is not set
575# CONFIG_CHR_DEV_OSST is not set 785# CONFIG_CHR_DEV_OSST is not set
576CONFIG_BLK_DEV_SR=y 786CONFIG_BLK_DEV_SR=y
577# CONFIG_BLK_DEV_SR_VENDOR is not set 787CONFIG_BLK_DEV_SR_VENDOR=y
578CONFIG_CHR_DEV_SG=y 788CONFIG_CHR_DEV_SG=y
579# CONFIG_CHR_DEV_SCH is not set 789# CONFIG_CHR_DEV_SCH is not set
580 790
@@ -582,7 +792,7 @@ CONFIG_CHR_DEV_SG=y
582# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 792# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
583# 793#
584# CONFIG_SCSI_MULTI_LUN is not set 794# CONFIG_SCSI_MULTI_LUN is not set
585# CONFIG_SCSI_CONSTANTS is not set 795CONFIG_SCSI_CONSTANTS=y
586# CONFIG_SCSI_LOGGING is not set 796# CONFIG_SCSI_LOGGING is not set
587# CONFIG_SCSI_SCAN_ASYNC is not set 797# CONFIG_SCSI_SCAN_ASYNC is not set
588CONFIG_SCSI_WAIT_SCAN=m 798CONFIG_SCSI_WAIT_SCAN=m
@@ -591,81 +801,37 @@ CONFIG_SCSI_WAIT_SCAN=m
591# SCSI Transports 801# SCSI Transports
592# 802#
593CONFIG_SCSI_SPI_ATTRS=y 803CONFIG_SCSI_SPI_ATTRS=y
594CONFIG_SCSI_FC_ATTRS=y 804# CONFIG_SCSI_FC_ATTRS is not set
595# CONFIG_SCSI_ISCSI_ATTRS is not set 805# CONFIG_SCSI_ISCSI_ATTRS is not set
596# CONFIG_SCSI_SAS_ATTRS is not set 806# CONFIG_SCSI_SAS_ATTRS is not set
597# CONFIG_SCSI_SAS_LIBSAS is not set 807# CONFIG_SCSI_SAS_LIBSAS is not set
598 808# CONFIG_SCSI_SRP_ATTRS is not set
599# 809# CONFIG_SCSI_LOWLEVEL is not set
600# SCSI low-level drivers 810# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
601#
602# CONFIG_ISCSI_TCP is not set
603CONFIG_BLK_DEV_3W_XXXX_RAID=y
604# CONFIG_SCSI_3W_9XXX is not set
605# CONFIG_SCSI_ACARD is not set
606# CONFIG_SCSI_AACRAID is not set
607CONFIG_SCSI_AIC7XXX=y
608CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
609CONFIG_AIC7XXX_RESET_DELAY_MS=5000
610CONFIG_AIC7XXX_DEBUG_ENABLE=y
611CONFIG_AIC7XXX_DEBUG_MASK=0
612CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
613# CONFIG_SCSI_AIC7XXX_OLD is not set
614CONFIG_SCSI_AIC79XX=y
615CONFIG_AIC79XX_CMDS_PER_DEVICE=32
616CONFIG_AIC79XX_RESET_DELAY_MS=4000
617# CONFIG_AIC79XX_DEBUG_ENABLE is not set
618CONFIG_AIC79XX_DEBUG_MASK=0
619# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
620# CONFIG_SCSI_AIC94XX is not set
621# CONFIG_SCSI_DPT_I2O is not set
622# CONFIG_SCSI_ADVANSYS is not set
623# CONFIG_SCSI_ARCMSR is not set
624# CONFIG_MEGARAID_NEWGEN is not set
625# CONFIG_MEGARAID_LEGACY is not set
626# CONFIG_MEGARAID_SAS is not set
627# CONFIG_SCSI_HPTIOP is not set
628# CONFIG_SCSI_BUSLOGIC is not set
629# CONFIG_SCSI_DMX3191D is not set
630# CONFIG_SCSI_EATA is not set
631# CONFIG_SCSI_FUTURE_DOMAIN is not set
632# CONFIG_SCSI_GDTH is not set
633# CONFIG_SCSI_IPS is not set
634# CONFIG_SCSI_INITIO is not set
635# CONFIG_SCSI_INIA100 is not set
636# CONFIG_SCSI_STEX is not set
637# CONFIG_SCSI_SYM53C8XX_2 is not set
638# CONFIG_SCSI_IPR is not set
639# CONFIG_SCSI_QLOGIC_1280 is not set
640# CONFIG_SCSI_QLA_FC is not set
641# CONFIG_SCSI_QLA_ISCSI is not set
642# CONFIG_SCSI_LPFC is not set
643# CONFIG_SCSI_DC395x is not set
644# CONFIG_SCSI_DC390T is not set
645# CONFIG_SCSI_NSP32 is not set
646# CONFIG_SCSI_DEBUG is not set
647# CONFIG_SCSI_SRP is not set
648CONFIG_ATA=y 811CONFIG_ATA=y
649# CONFIG_ATA_NONSTANDARD is not set 812# CONFIG_ATA_NONSTANDARD is not set
650CONFIG_ATA_ACPI=y 813CONFIG_ATA_ACPI=y
814CONFIG_SATA_PMP=y
651CONFIG_SATA_AHCI=y 815CONFIG_SATA_AHCI=y
652CONFIG_SATA_SVW=y 816# CONFIG_SATA_SIL24 is not set
817CONFIG_ATA_SFF=y
818# CONFIG_SATA_SVW is not set
653CONFIG_ATA_PIIX=y 819CONFIG_ATA_PIIX=y
654# CONFIG_SATA_MV is not set 820# CONFIG_SATA_MV is not set
655CONFIG_SATA_NV=y 821# CONFIG_SATA_NV is not set
656# CONFIG_PDC_ADMA is not set 822# CONFIG_PDC_ADMA is not set
657# CONFIG_SATA_QSTOR is not set 823# CONFIG_SATA_QSTOR is not set
658# CONFIG_SATA_PROMISE is not set 824# CONFIG_SATA_PROMISE is not set
659# CONFIG_SATA_SX4 is not set 825# CONFIG_SATA_SX4 is not set
660CONFIG_SATA_SIL=y 826# CONFIG_SATA_SIL is not set
661# CONFIG_SATA_SIL24 is not set
662# CONFIG_SATA_SIS is not set 827# CONFIG_SATA_SIS is not set
663# CONFIG_SATA_ULI is not set 828# CONFIG_SATA_ULI is not set
664CONFIG_SATA_VIA=y 829# CONFIG_SATA_VIA is not set
665# CONFIG_SATA_VITESSE is not set 830# CONFIG_SATA_VITESSE is not set
666# CONFIG_SATA_INIC162X is not set 831# CONFIG_SATA_INIC162X is not set
832# CONFIG_PATA_ACPI is not set
667# CONFIG_PATA_ALI is not set 833# CONFIG_PATA_ALI is not set
668# CONFIG_PATA_AMD is not set 834CONFIG_PATA_AMD=y
669# CONFIG_PATA_ARTOP is not set 835# CONFIG_PATA_ARTOP is not set
670# CONFIG_PATA_ATIIXP is not set 836# CONFIG_PATA_ATIIXP is not set
671# CONFIG_PATA_CMD640_PCI is not set 837# CONFIG_PATA_CMD640_PCI is not set
@@ -673,6 +839,7 @@ CONFIG_SATA_VIA=y
673# CONFIG_PATA_CS5520 is not set 839# CONFIG_PATA_CS5520 is not set
674# CONFIG_PATA_CS5530 is not set 840# CONFIG_PATA_CS5530 is not set
675# CONFIG_PATA_CS5535 is not set 841# CONFIG_PATA_CS5535 is not set
842# CONFIG_PATA_CS5536 is not set
676# CONFIG_PATA_CYPRESS is not set 843# CONFIG_PATA_CYPRESS is not set
677# CONFIG_PATA_EFAR is not set 844# CONFIG_PATA_EFAR is not set
678# CONFIG_ATA_GENERIC is not set 845# CONFIG_ATA_GENERIC is not set
@@ -686,11 +853,14 @@ CONFIG_SATA_VIA=y
686# CONFIG_PATA_TRIFLEX is not set 853# CONFIG_PATA_TRIFLEX is not set
687# CONFIG_PATA_MARVELL is not set 854# CONFIG_PATA_MARVELL is not set
688# CONFIG_PATA_MPIIX is not set 855# CONFIG_PATA_MPIIX is not set
689# CONFIG_PATA_OLDPIIX is not set 856CONFIG_PATA_OLDPIIX=y
690# CONFIG_PATA_NETCELL is not set 857# CONFIG_PATA_NETCELL is not set
858# CONFIG_PATA_NINJA32 is not set
691# CONFIG_PATA_NS87410 is not set 859# CONFIG_PATA_NS87410 is not set
860# CONFIG_PATA_NS87415 is not set
692# CONFIG_PATA_OPTI is not set 861# CONFIG_PATA_OPTI is not set
693# CONFIG_PATA_OPTIDMA is not set 862# CONFIG_PATA_OPTIDMA is not set
863# CONFIG_PATA_PCMCIA is not set
694# CONFIG_PATA_PDC_OLD is not set 864# CONFIG_PATA_PDC_OLD is not set
695# CONFIG_PATA_RADISYS is not set 865# CONFIG_PATA_RADISYS is not set
696# CONFIG_PATA_RZ1000 is not set 866# CONFIG_PATA_RZ1000 is not set
@@ -702,65 +872,42 @@ CONFIG_SATA_VIA=y
702# CONFIG_PATA_VIA is not set 872# CONFIG_PATA_VIA is not set
703# CONFIG_PATA_WINBOND is not set 873# CONFIG_PATA_WINBOND is not set
704CONFIG_MD=y 874CONFIG_MD=y
705# CONFIG_BLK_DEV_MD is not set 875CONFIG_BLK_DEV_MD=y
876# CONFIG_MD_LINEAR is not set
877# CONFIG_MD_RAID0 is not set
878# CONFIG_MD_RAID1 is not set
879# CONFIG_MD_RAID10 is not set
880# CONFIG_MD_RAID456 is not set
881# CONFIG_MD_MULTIPATH is not set
882# CONFIG_MD_FAULTY is not set
706CONFIG_BLK_DEV_DM=y 883CONFIG_BLK_DEV_DM=y
707# CONFIG_DM_DEBUG is not set 884# CONFIG_DM_DEBUG is not set
708# CONFIG_DM_CRYPT is not set 885# CONFIG_DM_CRYPT is not set
709# CONFIG_DM_SNAPSHOT is not set 886# CONFIG_DM_SNAPSHOT is not set
710# CONFIG_DM_MIRROR is not set 887CONFIG_DM_MIRROR=y
711# CONFIG_DM_ZERO is not set 888CONFIG_DM_ZERO=y
712# CONFIG_DM_MULTIPATH is not set 889# CONFIG_DM_MULTIPATH is not set
713# CONFIG_DM_DELAY is not set 890# CONFIG_DM_DELAY is not set
714 891# CONFIG_DM_UEVENT is not set
715# 892# CONFIG_FUSION is not set
716# Fusion MPT device support
717#
718CONFIG_FUSION=y
719CONFIG_FUSION_SPI=y
720# CONFIG_FUSION_FC is not set
721# CONFIG_FUSION_SAS is not set
722CONFIG_FUSION_MAX_SGE=128
723# CONFIG_FUSION_CTL is not set
724 893
725# 894#
726# IEEE 1394 (FireWire) support 895# IEEE 1394 (FireWire) support
727# 896#
728# CONFIG_FIREWIRE is not set 897# CONFIG_FIREWIRE is not set
729CONFIG_IEEE1394=y 898# CONFIG_IEEE1394 is not set
730
731#
732# Subsystem Options
733#
734# CONFIG_IEEE1394_VERBOSEDEBUG is not set
735
736#
737# Controllers
738#
739
740#
741# Texas Instruments PCILynx requires I2C
742#
743CONFIG_IEEE1394_OHCI1394=y
744
745#
746# Protocols
747#
748# CONFIG_IEEE1394_VIDEO1394 is not set
749# CONFIG_IEEE1394_SBP2 is not set
750# CONFIG_IEEE1394_ETH1394_ROM_ENTRY is not set
751# CONFIG_IEEE1394_ETH1394 is not set
752# CONFIG_IEEE1394_DV1394 is not set
753CONFIG_IEEE1394_RAWIO=y
754# CONFIG_I2O is not set 899# CONFIG_I2O is not set
755CONFIG_MACINTOSH_DRIVERS=y 900CONFIG_MACINTOSH_DRIVERS=y
756# CONFIG_MAC_EMUMOUSEBTN is not set 901CONFIG_MAC_EMUMOUSEBTN=y
757CONFIG_NETDEVICES=y 902CONFIG_NETDEVICES=y
758CONFIG_NETDEVICES_MULTIQUEUE=y 903# CONFIG_NETDEVICES_MULTIQUEUE is not set
904# CONFIG_IFB is not set
759# CONFIG_DUMMY is not set 905# CONFIG_DUMMY is not set
760# CONFIG_BONDING is not set 906# CONFIG_BONDING is not set
761# CONFIG_MACVLAN is not set 907# CONFIG_MACVLAN is not set
762# CONFIG_EQUALIZER is not set 908# CONFIG_EQUALIZER is not set
763# CONFIG_TUN is not set 909# CONFIG_TUN is not set
910# CONFIG_VETH is not set
764# CONFIG_NET_SB1000 is not set 911# CONFIG_NET_SB1000 is not set
765# CONFIG_ARCNET is not set 912# CONFIG_ARCNET is not set
766# CONFIG_PHYLIB is not set 913# CONFIG_PHYLIB is not set
@@ -770,38 +917,40 @@ CONFIG_MII=y
770# CONFIG_SUNGEM is not set 917# CONFIG_SUNGEM is not set
771# CONFIG_CASSINI is not set 918# CONFIG_CASSINI is not set
772CONFIG_NET_VENDOR_3COM=y 919CONFIG_NET_VENDOR_3COM=y
773CONFIG_VORTEX=y 920# CONFIG_VORTEX is not set
774# CONFIG_TYPHOON is not set 921# CONFIG_TYPHOON is not set
775CONFIG_NET_TULIP=y 922CONFIG_NET_TULIP=y
776# CONFIG_DE2104X is not set 923# CONFIG_DE2104X is not set
777CONFIG_TULIP=y 924# CONFIG_TULIP is not set
778# CONFIG_TULIP_MWI is not set
779# CONFIG_TULIP_MMIO is not set
780# CONFIG_TULIP_NAPI is not set
781# CONFIG_DE4X5 is not set 925# CONFIG_DE4X5 is not set
782# CONFIG_WINBOND_840 is not set 926# CONFIG_WINBOND_840 is not set
783# CONFIG_DM9102 is not set 927# CONFIG_DM9102 is not set
784# CONFIG_ULI526X is not set 928# CONFIG_ULI526X is not set
929# CONFIG_PCMCIA_XIRCOM is not set
785# CONFIG_HP100 is not set 930# CONFIG_HP100 is not set
931# CONFIG_IBM_NEW_EMAC_ZMII is not set
932# CONFIG_IBM_NEW_EMAC_RGMII is not set
933# CONFIG_IBM_NEW_EMAC_TAH is not set
934# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
786CONFIG_NET_PCI=y 935CONFIG_NET_PCI=y
787# CONFIG_PCNET32 is not set 936# CONFIG_PCNET32 is not set
788# CONFIG_AMD8111_ETH is not set 937# CONFIG_AMD8111_ETH is not set
789# CONFIG_ADAPTEC_STARFIRE is not set 938# CONFIG_ADAPTEC_STARFIRE is not set
790CONFIG_B44=y 939# CONFIG_B44 is not set
791CONFIG_FORCEDETH=y 940CONFIG_FORCEDETH=y
792# CONFIG_FORCEDETH_NAPI is not set 941# CONFIG_FORCEDETH_NAPI is not set
793# CONFIG_DGRS is not set
794# CONFIG_EEPRO100 is not set 942# CONFIG_EEPRO100 is not set
795CONFIG_E100=y 943CONFIG_E100=y
796# CONFIG_FEALNX is not set 944# CONFIG_FEALNX is not set
797# CONFIG_NATSEMI is not set 945# CONFIG_NATSEMI is not set
798# CONFIG_NE2K_PCI is not set 946# CONFIG_NE2K_PCI is not set
799CONFIG_8139CP=y 947# CONFIG_8139CP is not set
800CONFIG_8139TOO=y 948CONFIG_8139TOO=y
801# CONFIG_8139TOO_PIO is not set 949CONFIG_8139TOO_PIO=y
802# CONFIG_8139TOO_TUNE_TWISTER is not set 950# CONFIG_8139TOO_TUNE_TWISTER is not set
803# CONFIG_8139TOO_8129 is not set 951# CONFIG_8139TOO_8129 is not set
804# CONFIG_8139_OLD_RX_RESET is not set 952# CONFIG_8139_OLD_RX_RESET is not set
953# CONFIG_R6040 is not set
805# CONFIG_SIS900 is not set 954# CONFIG_SIS900 is not set
806# CONFIG_EPIC100 is not set 955# CONFIG_EPIC100 is not set
807# CONFIG_SUNDANCE is not set 956# CONFIG_SUNDANCE is not set
@@ -814,34 +963,75 @@ CONFIG_NETDEV_1000=y
814CONFIG_E1000=y 963CONFIG_E1000=y
815# CONFIG_E1000_NAPI is not set 964# CONFIG_E1000_NAPI is not set
816# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 965# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
966# CONFIG_E1000E is not set
967# CONFIG_E1000E_ENABLED is not set
968# CONFIG_IP1000 is not set
969# CONFIG_IGB is not set
817# CONFIG_NS83820 is not set 970# CONFIG_NS83820 is not set
818# CONFIG_HAMACHI is not set 971# CONFIG_HAMACHI is not set
819# CONFIG_YELLOWFIN is not set 972# CONFIG_YELLOWFIN is not set
820CONFIG_R8169=y 973# CONFIG_R8169 is not set
821# CONFIG_R8169_NAPI is not set
822# CONFIG_SIS190 is not set 974# CONFIG_SIS190 is not set
823# CONFIG_SKGE is not set 975# CONFIG_SKGE is not set
824CONFIG_SKY2=y 976CONFIG_SKY2=y
977# CONFIG_SKY2_DEBUG is not set
825# CONFIG_VIA_VELOCITY is not set 978# CONFIG_VIA_VELOCITY is not set
826CONFIG_TIGON3=y 979CONFIG_TIGON3=y
827CONFIG_BNX2=y 980# CONFIG_BNX2 is not set
828# CONFIG_QLA3XXX is not set 981# CONFIG_QLA3XXX is not set
829# CONFIG_ATL1 is not set 982# CONFIG_ATL1 is not set
830CONFIG_NETDEV_10000=y 983CONFIG_NETDEV_10000=y
831# CONFIG_CHELSIO_T1 is not set 984# CONFIG_CHELSIO_T1 is not set
832# CONFIG_CHELSIO_T3 is not set 985# CONFIG_CHELSIO_T3 is not set
986# CONFIG_IXGBE is not set
833# CONFIG_IXGB is not set 987# CONFIG_IXGB is not set
834# CONFIG_S2IO is not set 988# CONFIG_S2IO is not set
835# CONFIG_MYRI10GE is not set 989# CONFIG_MYRI10GE is not set
836# CONFIG_NETXEN_NIC is not set 990# CONFIG_NETXEN_NIC is not set
991# CONFIG_NIU is not set
837# CONFIG_MLX4_CORE is not set 992# CONFIG_MLX4_CORE is not set
838# CONFIG_TR is not set 993# CONFIG_TEHUTI is not set
994# CONFIG_BNX2X is not set
995# CONFIG_SFC is not set
996CONFIG_TR=y
997# CONFIG_IBMOL is not set
998# CONFIG_IBMLS is not set
999# CONFIG_3C359 is not set
1000# CONFIG_TMS380TR is not set
839 1001
840# 1002#
841# Wireless LAN 1003# Wireless LAN
842# 1004#
843# CONFIG_WLAN_PRE80211 is not set 1005# CONFIG_WLAN_PRE80211 is not set
844# CONFIG_WLAN_80211 is not set 1006CONFIG_WLAN_80211=y
1007# CONFIG_PCMCIA_RAYCS is not set
1008# CONFIG_IPW2100 is not set
1009# CONFIG_IPW2200 is not set
1010# CONFIG_LIBERTAS is not set
1011# CONFIG_AIRO is not set
1012# CONFIG_HERMES is not set
1013# CONFIG_ATMEL is not set
1014# CONFIG_AIRO_CS is not set
1015# CONFIG_PCMCIA_WL3501 is not set
1016# CONFIG_PRISM54 is not set
1017# CONFIG_USB_ZD1201 is not set
1018# CONFIG_USB_NET_RNDIS_WLAN is not set
1019# CONFIG_RTL8180 is not set
1020# CONFIG_RTL8187 is not set
1021# CONFIG_ADM8211 is not set
1022# CONFIG_P54_COMMON is not set
1023CONFIG_ATH5K=y
1024# CONFIG_ATH5K_DEBUG is not set
1025# CONFIG_IWLWIFI is not set
1026# CONFIG_IWLCORE is not set
1027# CONFIG_IWLWIFI_LEDS is not set
1028# CONFIG_IWL4965 is not set
1029# CONFIG_IWL3945 is not set
1030# CONFIG_HOSTAP is not set
1031# CONFIG_B43 is not set
1032# CONFIG_B43LEGACY is not set
1033# CONFIG_ZD1211RW is not set
1034# CONFIG_RT2X00 is not set
845 1035
846# 1036#
847# USB Network Adapters 1037# USB Network Adapters
@@ -850,16 +1040,27 @@ CONFIG_NETDEV_10000=y
850# CONFIG_USB_KAWETH is not set 1040# CONFIG_USB_KAWETH is not set
851# CONFIG_USB_PEGASUS is not set 1041# CONFIG_USB_PEGASUS is not set
852# CONFIG_USB_RTL8150 is not set 1042# CONFIG_USB_RTL8150 is not set
853# CONFIG_USB_USBNET_MII is not set
854# CONFIG_USB_USBNET is not set 1043# CONFIG_USB_USBNET is not set
1044CONFIG_NET_PCMCIA=y
1045# CONFIG_PCMCIA_3C589 is not set
1046# CONFIG_PCMCIA_3C574 is not set
1047# CONFIG_PCMCIA_FMVJ18X is not set
1048# CONFIG_PCMCIA_PCNET is not set
1049# CONFIG_PCMCIA_NMCLAN is not set
1050# CONFIG_PCMCIA_SMC91C92 is not set
1051# CONFIG_PCMCIA_XIRC2PS is not set
1052# CONFIG_PCMCIA_AXNET is not set
1053# CONFIG_PCMCIA_IBMTR is not set
855# CONFIG_WAN is not set 1054# CONFIG_WAN is not set
856# CONFIG_FDDI is not set 1055CONFIG_FDDI=y
1056# CONFIG_DEFXX is not set
1057# CONFIG_SKFP is not set
857# CONFIG_HIPPI is not set 1058# CONFIG_HIPPI is not set
858# CONFIG_PPP is not set 1059# CONFIG_PPP is not set
859# CONFIG_SLIP is not set 1060# CONFIG_SLIP is not set
860# CONFIG_NET_FC is not set 1061# CONFIG_NET_FC is not set
861# CONFIG_SHAPER is not set
862CONFIG_NETCONSOLE=y 1062CONFIG_NETCONSOLE=y
1063# CONFIG_NETCONSOLE_DYNAMIC is not set
863CONFIG_NETPOLL=y 1064CONFIG_NETPOLL=y
864# CONFIG_NETPOLL_TRAP is not set 1065# CONFIG_NETPOLL_TRAP is not set
865CONFIG_NET_POLL_CONTROLLER=y 1066CONFIG_NET_POLL_CONTROLLER=y
@@ -870,18 +1071,17 @@ CONFIG_NET_POLL_CONTROLLER=y
870# Input device support 1071# Input device support
871# 1072#
872CONFIG_INPUT=y 1073CONFIG_INPUT=y
873# CONFIG_INPUT_FF_MEMLESS is not set 1074CONFIG_INPUT_FF_MEMLESS=y
874# CONFIG_INPUT_POLLDEV is not set 1075CONFIG_INPUT_POLLDEV=y
875 1076
876# 1077#
877# Userland interfaces 1078# Userland interfaces
878# 1079#
879CONFIG_INPUT_MOUSEDEV=y 1080CONFIG_INPUT_MOUSEDEV=y
880CONFIG_INPUT_MOUSEDEV_PSAUX=y 1081# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
881CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 1082CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
882CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 1083CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
883# CONFIG_INPUT_JOYDEV is not set 1084# CONFIG_INPUT_JOYDEV is not set
884# CONFIG_INPUT_TSDEV is not set
885CONFIG_INPUT_EVDEV=y 1085CONFIG_INPUT_EVDEV=y
886# CONFIG_INPUT_EVBUG is not set 1086# CONFIG_INPUT_EVBUG is not set
887 1087
@@ -906,17 +1106,63 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y
906# CONFIG_MOUSE_SERIAL is not set 1106# CONFIG_MOUSE_SERIAL is not set
907# CONFIG_MOUSE_APPLETOUCH is not set 1107# CONFIG_MOUSE_APPLETOUCH is not set
908# CONFIG_MOUSE_VSXXXAA is not set 1108# CONFIG_MOUSE_VSXXXAA is not set
909# CONFIG_INPUT_JOYSTICK is not set 1109CONFIG_INPUT_JOYSTICK=y
910# CONFIG_INPUT_TABLET is not set 1110# CONFIG_JOYSTICK_ANALOG is not set
911# CONFIG_INPUT_TOUCHSCREEN is not set 1111# CONFIG_JOYSTICK_A3D is not set
912# CONFIG_INPUT_MISC is not set 1112# CONFIG_JOYSTICK_ADI is not set
1113# CONFIG_JOYSTICK_COBRA is not set
1114# CONFIG_JOYSTICK_GF2K is not set
1115# CONFIG_JOYSTICK_GRIP is not set
1116# CONFIG_JOYSTICK_GRIP_MP is not set
1117# CONFIG_JOYSTICK_GUILLEMOT is not set
1118# CONFIG_JOYSTICK_INTERACT is not set
1119# CONFIG_JOYSTICK_SIDEWINDER is not set
1120# CONFIG_JOYSTICK_TMDC is not set
1121# CONFIG_JOYSTICK_IFORCE is not set
1122# CONFIG_JOYSTICK_WARRIOR is not set
1123# CONFIG_JOYSTICK_MAGELLAN is not set
1124# CONFIG_JOYSTICK_SPACEORB is not set
1125# CONFIG_JOYSTICK_SPACEBALL is not set
1126# CONFIG_JOYSTICK_STINGER is not set
1127# CONFIG_JOYSTICK_TWIDJOY is not set
1128# CONFIG_JOYSTICK_ZHENHUA is not set
1129# CONFIG_JOYSTICK_JOYDUMP is not set
1130# CONFIG_JOYSTICK_XPAD is not set
1131CONFIG_INPUT_TABLET=y
1132# CONFIG_TABLET_USB_ACECAD is not set
1133# CONFIG_TABLET_USB_AIPTEK is not set
1134# CONFIG_TABLET_USB_GTCO is not set
1135# CONFIG_TABLET_USB_KBTAB is not set
1136# CONFIG_TABLET_USB_WACOM is not set
1137CONFIG_INPUT_TOUCHSCREEN=y
1138# CONFIG_TOUCHSCREEN_FUJITSU is not set
1139# CONFIG_TOUCHSCREEN_GUNZE is not set
1140# CONFIG_TOUCHSCREEN_ELO is not set
1141# CONFIG_TOUCHSCREEN_MTOUCH is not set
1142# CONFIG_TOUCHSCREEN_MK712 is not set
1143# CONFIG_TOUCHSCREEN_PENMOUNT is not set
1144# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
1145# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
1146# CONFIG_TOUCHSCREEN_UCB1400 is not set
1147# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
1148CONFIG_INPUT_MISC=y
1149# CONFIG_INPUT_PCSPKR is not set
1150# CONFIG_INPUT_APANEL is not set
1151# CONFIG_INPUT_WISTRON_BTNS is not set
1152# CONFIG_INPUT_ATLAS_BTNS is not set
1153# CONFIG_INPUT_ATI_REMOTE is not set
1154# CONFIG_INPUT_ATI_REMOTE2 is not set
1155# CONFIG_INPUT_KEYSPAN_REMOTE is not set
1156# CONFIG_INPUT_POWERMATE is not set
1157# CONFIG_INPUT_YEALINK is not set
1158# CONFIG_INPUT_UINPUT is not set
913 1159
914# 1160#
915# Hardware I/O ports 1161# Hardware I/O ports
916# 1162#
917CONFIG_SERIO=y 1163CONFIG_SERIO=y
918CONFIG_SERIO_I8042=y 1164CONFIG_SERIO_I8042=y
919# CONFIG_SERIO_SERPORT is not set 1165CONFIG_SERIO_SERPORT=y
920# CONFIG_SERIO_CT82C710 is not set 1166# CONFIG_SERIO_CT82C710 is not set
921# CONFIG_SERIO_PCIPS2 is not set 1167# CONFIG_SERIO_PCIPS2 is not set
922CONFIG_SERIO_LIBPS2=y 1168CONFIG_SERIO_LIBPS2=y
@@ -929,8 +1175,26 @@ CONFIG_SERIO_LIBPS2=y
929CONFIG_VT=y 1175CONFIG_VT=y
930CONFIG_VT_CONSOLE=y 1176CONFIG_VT_CONSOLE=y
931CONFIG_HW_CONSOLE=y 1177CONFIG_HW_CONSOLE=y
932# CONFIG_VT_HW_CONSOLE_BINDING is not set 1178CONFIG_VT_HW_CONSOLE_BINDING=y
933# CONFIG_SERIAL_NONSTANDARD is not set 1179CONFIG_DEVKMEM=y
1180CONFIG_SERIAL_NONSTANDARD=y
1181# CONFIG_COMPUTONE is not set
1182# CONFIG_ROCKETPORT is not set
1183# CONFIG_CYCLADES is not set
1184# CONFIG_DIGIEPCA is not set
1185# CONFIG_MOXA_INTELLIO is not set
1186# CONFIG_MOXA_SMARTIO is not set
1187# CONFIG_ISI is not set
1188# CONFIG_SYNCLINK is not set
1189# CONFIG_SYNCLINKMP is not set
1190# CONFIG_SYNCLINK_GT is not set
1191# CONFIG_N_HDLC is not set
1192# CONFIG_RISCOM8 is not set
1193# CONFIG_SPECIALIX is not set
1194# CONFIG_SX is not set
1195# CONFIG_RIO is not set
1196# CONFIG_STALDRV is not set
1197# CONFIG_NOZOMI is not set
934 1198
935# 1199#
936# Serial drivers 1200# Serial drivers
@@ -940,9 +1204,14 @@ CONFIG_SERIAL_8250_CONSOLE=y
940CONFIG_FIX_EARLYCON_MEM=y 1204CONFIG_FIX_EARLYCON_MEM=y
941CONFIG_SERIAL_8250_PCI=y 1205CONFIG_SERIAL_8250_PCI=y
942CONFIG_SERIAL_8250_PNP=y 1206CONFIG_SERIAL_8250_PNP=y
943CONFIG_SERIAL_8250_NR_UARTS=4 1207# CONFIG_SERIAL_8250_CS is not set
1208CONFIG_SERIAL_8250_NR_UARTS=32
944CONFIG_SERIAL_8250_RUNTIME_UARTS=4 1209CONFIG_SERIAL_8250_RUNTIME_UARTS=4
945# CONFIG_SERIAL_8250_EXTENDED is not set 1210CONFIG_SERIAL_8250_EXTENDED=y
1211CONFIG_SERIAL_8250_MANY_PORTS=y
1212CONFIG_SERIAL_8250_SHARE_IRQ=y
1213CONFIG_SERIAL_8250_DETECT_IRQ=y
1214CONFIG_SERIAL_8250_RSA=y
946 1215
947# 1216#
948# Non-8250 serial port support 1217# Non-8250 serial port support
@@ -951,89 +1220,275 @@ CONFIG_SERIAL_CORE=y
951CONFIG_SERIAL_CORE_CONSOLE=y 1220CONFIG_SERIAL_CORE_CONSOLE=y
952# CONFIG_SERIAL_JSM is not set 1221# CONFIG_SERIAL_JSM is not set
953CONFIG_UNIX98_PTYS=y 1222CONFIG_UNIX98_PTYS=y
954CONFIG_LEGACY_PTYS=y 1223# CONFIG_LEGACY_PTYS is not set
955CONFIG_LEGACY_PTY_COUNT=256
956# CONFIG_IPMI_HANDLER is not set 1224# CONFIG_IPMI_HANDLER is not set
957# CONFIG_WATCHDOG is not set
958CONFIG_HW_RANDOM=y 1225CONFIG_HW_RANDOM=y
959CONFIG_HW_RANDOM_INTEL=y 1226# CONFIG_HW_RANDOM_INTEL is not set
960CONFIG_HW_RANDOM_AMD=y 1227# CONFIG_HW_RANDOM_AMD is not set
961CONFIG_HW_RANDOM_GEODE=y 1228CONFIG_HW_RANDOM_GEODE=y
962CONFIG_HW_RANDOM_VIA=y 1229CONFIG_HW_RANDOM_VIA=y
963# CONFIG_NVRAM is not set 1230CONFIG_NVRAM=y
964CONFIG_RTC=y
965# CONFIG_R3964 is not set 1231# CONFIG_R3964 is not set
966# CONFIG_APPLICOM is not set 1232# CONFIG_APPLICOM is not set
967# CONFIG_SONYPI is not set 1233# CONFIG_SONYPI is not set
968CONFIG_AGP=y 1234
969# CONFIG_AGP_ALI is not set 1235#
970# CONFIG_AGP_ATI is not set 1236# PCMCIA character devices
971# CONFIG_AGP_AMD is not set 1237#
972CONFIG_AGP_AMD64=y 1238# CONFIG_SYNCLINK_CS is not set
973CONFIG_AGP_INTEL=y 1239# CONFIG_CARDMAN_4000 is not set
974# CONFIG_AGP_NVIDIA is not set 1240# CONFIG_CARDMAN_4040 is not set
975# CONFIG_AGP_SIS is not set 1241# CONFIG_IPWIRELESS is not set
976# CONFIG_AGP_SWORKS is not set
977# CONFIG_AGP_VIA is not set
978# CONFIG_AGP_EFFICEON is not set
979# CONFIG_DRM is not set
980# CONFIG_MWAVE is not set 1242# CONFIG_MWAVE is not set
981# CONFIG_PC8736x_GPIO is not set 1243# CONFIG_PC8736x_GPIO is not set
982# CONFIG_NSC_GPIO is not set 1244# CONFIG_NSC_GPIO is not set
983# CONFIG_CS5535_GPIO is not set 1245# CONFIG_CS5535_GPIO is not set
984CONFIG_RAW_DRIVER=y 1246# CONFIG_RAW_DRIVER is not set
985CONFIG_MAX_RAW_DEVS=256
986CONFIG_HPET=y 1247CONFIG_HPET=y
987# CONFIG_HPET_RTC_IRQ is not set 1248# CONFIG_HPET_RTC_IRQ is not set
988CONFIG_HPET_MMAP=y 1249# CONFIG_HPET_MMAP is not set
989# CONFIG_HANGCHECK_TIMER is not set 1250# CONFIG_HANGCHECK_TIMER is not set
990# CONFIG_TCG_TPM is not set 1251# CONFIG_TCG_TPM is not set
991# CONFIG_TELCLOCK is not set 1252# CONFIG_TELCLOCK is not set
992CONFIG_DEVPORT=y 1253CONFIG_DEVPORT=y
993# CONFIG_I2C is not set 1254CONFIG_I2C=y
994 1255CONFIG_I2C_BOARDINFO=y
995# 1256# CONFIG_I2C_CHARDEV is not set
996# SPI support 1257
997# 1258#
1259# I2C Hardware Bus support
1260#
1261# CONFIG_I2C_ALI1535 is not set
1262# CONFIG_I2C_ALI1563 is not set
1263# CONFIG_I2C_ALI15X3 is not set
1264# CONFIG_I2C_AMD756 is not set
1265# CONFIG_I2C_AMD8111 is not set
1266CONFIG_I2C_I801=y
1267# CONFIG_I2C_I810 is not set
1268# CONFIG_I2C_PIIX4 is not set
1269# CONFIG_I2C_NFORCE2 is not set
1270# CONFIG_I2C_OCORES is not set
1271# CONFIG_I2C_PARPORT_LIGHT is not set
1272# CONFIG_I2C_PROSAVAGE is not set
1273# CONFIG_I2C_SAVAGE4 is not set
1274# CONFIG_I2C_SIMTEC is not set
1275# CONFIG_SCx200_ACB is not set
1276# CONFIG_I2C_SIS5595 is not set
1277# CONFIG_I2C_SIS630 is not set
1278# CONFIG_I2C_SIS96X is not set
1279# CONFIG_I2C_TAOS_EVM is not set
1280# CONFIG_I2C_STUB is not set
1281# CONFIG_I2C_TINY_USB is not set
1282# CONFIG_I2C_VIA is not set
1283# CONFIG_I2C_VIAPRO is not set
1284# CONFIG_I2C_VOODOO3 is not set
1285# CONFIG_I2C_PCA_PLATFORM is not set
1286
1287#
1288# Miscellaneous I2C Chip support
1289#
1290# CONFIG_DS1682 is not set
1291# CONFIG_SENSORS_EEPROM is not set
1292# CONFIG_SENSORS_PCF8574 is not set
1293# CONFIG_PCF8575 is not set
1294# CONFIG_SENSORS_PCF8591 is not set
1295# CONFIG_SENSORS_MAX6875 is not set
1296# CONFIG_SENSORS_TSL2550 is not set
1297# CONFIG_I2C_DEBUG_CORE is not set
1298# CONFIG_I2C_DEBUG_ALGO is not set
1299# CONFIG_I2C_DEBUG_BUS is not set
1300# CONFIG_I2C_DEBUG_CHIP is not set
998# CONFIG_SPI is not set 1301# CONFIG_SPI is not set
999# CONFIG_SPI_MASTER is not set
1000# CONFIG_W1 is not set 1302# CONFIG_W1 is not set
1001# CONFIG_POWER_SUPPLY is not set 1303CONFIG_POWER_SUPPLY=y
1304# CONFIG_POWER_SUPPLY_DEBUG is not set
1305# CONFIG_PDA_POWER is not set
1306# CONFIG_BATTERY_DS2760 is not set
1002# CONFIG_HWMON is not set 1307# CONFIG_HWMON is not set
1308CONFIG_THERMAL=y
1309CONFIG_WATCHDOG=y
1310# CONFIG_WATCHDOG_NOWAYOUT is not set
1311
1312#
1313# Watchdog Device Drivers
1314#
1315# CONFIG_SOFT_WATCHDOG is not set
1316# CONFIG_ACQUIRE_WDT is not set
1317# CONFIG_ADVANTECH_WDT is not set
1318# CONFIG_ALIM1535_WDT is not set
1319# CONFIG_ALIM7101_WDT is not set
1320# CONFIG_SC520_WDT is not set
1321# CONFIG_EUROTECH_WDT is not set
1322# CONFIG_IB700_WDT is not set
1323# CONFIG_IBMASR is not set
1324# CONFIG_WAFER_WDT is not set
1325# CONFIG_I6300ESB_WDT is not set
1326# CONFIG_ITCO_WDT is not set
1327# CONFIG_IT8712F_WDT is not set
1328# CONFIG_HP_WATCHDOG is not set
1329# CONFIG_SC1200_WDT is not set
1330# CONFIG_PC87413_WDT is not set
1331# CONFIG_60XX_WDT is not set
1332# CONFIG_SBC8360_WDT is not set
1333# CONFIG_SBC7240_WDT is not set
1334# CONFIG_CPU5_WDT is not set
1335# CONFIG_SMSC37B787_WDT is not set
1336# CONFIG_W83627HF_WDT is not set
1337# CONFIG_W83697HF_WDT is not set
1338# CONFIG_W83877F_WDT is not set
1339# CONFIG_W83977F_WDT is not set
1340# CONFIG_MACHZ_WDT is not set
1341# CONFIG_SBC_EPX_C3_WATCHDOG is not set
1342
1343#
1344# PCI-based Watchdog Cards
1345#
1346# CONFIG_PCIPCWATCHDOG is not set
1347# CONFIG_WDTPCI is not set
1348
1349#
1350# USB-based Watchdog Cards
1351#
1352# CONFIG_USBPCWATCHDOG is not set
1353
1354#
1355# Sonics Silicon Backplane
1356#
1357CONFIG_SSB_POSSIBLE=y
1358# CONFIG_SSB is not set
1003 1359
1004# 1360#
1005# Multifunction device drivers 1361# Multifunction device drivers
1006# 1362#
1007# CONFIG_MFD_SM501 is not set 1363# CONFIG_MFD_SM501 is not set
1364# CONFIG_HTC_PASIC3 is not set
1008 1365
1009# 1366#
1010# Multimedia devices 1367# Multimedia devices
1011# 1368#
1369
1370#
1371# Multimedia core support
1372#
1012# CONFIG_VIDEO_DEV is not set 1373# CONFIG_VIDEO_DEV is not set
1013# CONFIG_DVB_CORE is not set 1374# CONFIG_DVB_CORE is not set
1375
1376#
1377# Multimedia drivers
1378#
1014CONFIG_DAB=y 1379CONFIG_DAB=y
1015# CONFIG_USB_DABUSB is not set 1380# CONFIG_USB_DABUSB is not set
1016 1381
1017# 1382#
1018# Graphics support 1383# Graphics support
1019# 1384#
1020# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1385CONFIG_AGP=y
1386# CONFIG_AGP_ALI is not set
1387# CONFIG_AGP_ATI is not set
1388# CONFIG_AGP_AMD is not set
1389CONFIG_AGP_AMD64=y
1390CONFIG_AGP_INTEL=y
1391# CONFIG_AGP_NVIDIA is not set
1392# CONFIG_AGP_SIS is not set
1393# CONFIG_AGP_SWORKS is not set
1394# CONFIG_AGP_VIA is not set
1395# CONFIG_AGP_EFFICEON is not set
1396CONFIG_DRM=y
1397# CONFIG_DRM_TDFX is not set
1398# CONFIG_DRM_R128 is not set
1399# CONFIG_DRM_RADEON is not set
1400# CONFIG_DRM_I810 is not set
1401# CONFIG_DRM_I830 is not set
1402CONFIG_DRM_I915=y
1403# CONFIG_DRM_MGA is not set
1404# CONFIG_DRM_SIS is not set
1405# CONFIG_DRM_VIA is not set
1406# CONFIG_DRM_SAVAGE is not set
1407# CONFIG_VGASTATE is not set
1408# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1409CONFIG_FB=y
1410# CONFIG_FIRMWARE_EDID is not set
1411# CONFIG_FB_DDC is not set
1412CONFIG_FB_CFB_FILLRECT=y
1413CONFIG_FB_CFB_COPYAREA=y
1414CONFIG_FB_CFB_IMAGEBLIT=y
1415# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1416# CONFIG_FB_SYS_FILLRECT is not set
1417# CONFIG_FB_SYS_COPYAREA is not set
1418# CONFIG_FB_SYS_IMAGEBLIT is not set
1419# CONFIG_FB_FOREIGN_ENDIAN is not set
1420# CONFIG_FB_SYS_FOPS is not set
1421CONFIG_FB_DEFERRED_IO=y
1422# CONFIG_FB_SVGALIB is not set
1423# CONFIG_FB_MACMODES is not set
1424# CONFIG_FB_BACKLIGHT is not set
1425CONFIG_FB_MODE_HELPERS=y
1426CONFIG_FB_TILEBLITTING=y
1427
1428#
1429# Frame buffer hardware drivers
1430#
1431# CONFIG_FB_CIRRUS is not set
1432# CONFIG_FB_PM2 is not set
1433# CONFIG_FB_CYBER2000 is not set
1434# CONFIG_FB_ARC is not set
1435# CONFIG_FB_ASILIANT is not set
1436# CONFIG_FB_IMSTT is not set
1437# CONFIG_FB_VGA16 is not set
1438# CONFIG_FB_UVESA is not set
1439# CONFIG_FB_VESA is not set
1440CONFIG_FB_EFI=y
1441# CONFIG_FB_IMAC is not set
1442# CONFIG_FB_N411 is not set
1443# CONFIG_FB_HGA is not set
1444# CONFIG_FB_S1D13XXX is not set
1445# CONFIG_FB_NVIDIA is not set
1446# CONFIG_FB_RIVA is not set
1447# CONFIG_FB_I810 is not set
1448# CONFIG_FB_LE80578 is not set
1449# CONFIG_FB_INTEL is not set
1450# CONFIG_FB_MATROX is not set
1451# CONFIG_FB_RADEON is not set
1452# CONFIG_FB_ATY128 is not set
1453# CONFIG_FB_ATY is not set
1454# CONFIG_FB_S3 is not set
1455# CONFIG_FB_SAVAGE is not set
1456# CONFIG_FB_SIS is not set
1457# CONFIG_FB_NEOMAGIC is not set
1458# CONFIG_FB_KYRO is not set
1459# CONFIG_FB_3DFX is not set
1460# CONFIG_FB_VOODOO1 is not set
1461# CONFIG_FB_VT8623 is not set
1462# CONFIG_FB_CYBLA is not set
1463# CONFIG_FB_TRIDENT is not set
1464# CONFIG_FB_ARK is not set
1465# CONFIG_FB_PM3 is not set
1466# CONFIG_FB_GEODE is not set
1467# CONFIG_FB_VIRTUAL is not set
1468CONFIG_BACKLIGHT_LCD_SUPPORT=y
1469# CONFIG_LCD_CLASS_DEVICE is not set
1470CONFIG_BACKLIGHT_CLASS_DEVICE=y
1471# CONFIG_BACKLIGHT_CORGI is not set
1472# CONFIG_BACKLIGHT_PROGEAR is not set
1021 1473
1022# 1474#
1023# Display device support 1475# Display device support
1024# 1476#
1025# CONFIG_DISPLAY_SUPPORT is not set 1477# CONFIG_DISPLAY_SUPPORT is not set
1026# CONFIG_VGASTATE is not set
1027# CONFIG_FB is not set
1028 1478
1029# 1479#
1030# Console display driver support 1480# Console display driver support
1031# 1481#
1032CONFIG_VGA_CONSOLE=y 1482CONFIG_VGA_CONSOLE=y
1033CONFIG_VGACON_SOFT_SCROLLBACK=y 1483CONFIG_VGACON_SOFT_SCROLLBACK=y
1034CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=128 1484CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
1035CONFIG_VIDEO_SELECT=y 1485CONFIG_VIDEO_SELECT=y
1036CONFIG_DUMMY_CONSOLE=y 1486CONFIG_DUMMY_CONSOLE=y
1487# CONFIG_FRAMEBUFFER_CONSOLE is not set
1488CONFIG_LOGO=y
1489# CONFIG_LOGO_LINUX_MONO is not set
1490# CONFIG_LOGO_LINUX_VGA16 is not set
1491CONFIG_LOGO_LINUX_CLUT224=y
1037 1492
1038# 1493#
1039# Sound 1494# Sound
@@ -1043,33 +1498,167 @@ CONFIG_SOUND=y
1043# 1498#
1044# Advanced Linux Sound Architecture 1499# Advanced Linux Sound Architecture
1045# 1500#
1046# CONFIG_SND is not set 1501CONFIG_SND=y
1502CONFIG_SND_TIMER=y
1503CONFIG_SND_PCM=y
1504CONFIG_SND_HWDEP=y
1505CONFIG_SND_SEQUENCER=y
1506CONFIG_SND_SEQ_DUMMY=y
1507CONFIG_SND_OSSEMUL=y
1508CONFIG_SND_MIXER_OSS=y
1509CONFIG_SND_PCM_OSS=y
1510CONFIG_SND_PCM_OSS_PLUGINS=y
1511CONFIG_SND_SEQUENCER_OSS=y
1512CONFIG_SND_DYNAMIC_MINORS=y
1513CONFIG_SND_SUPPORT_OLD_API=y
1514CONFIG_SND_VERBOSE_PROCFS=y
1515# CONFIG_SND_VERBOSE_PRINTK is not set
1516# CONFIG_SND_DEBUG is not set
1517CONFIG_SND_VMASTER=y
1518
1519#
1520# Generic devices
1521#
1522# CONFIG_SND_PCSP is not set
1523# CONFIG_SND_DUMMY is not set
1524# CONFIG_SND_VIRMIDI is not set
1525# CONFIG_SND_MTPAV is not set
1526# CONFIG_SND_SERIAL_U16550 is not set
1527# CONFIG_SND_MPU401 is not set
1528
1529#
1530# PCI devices
1531#
1532# CONFIG_SND_AD1889 is not set
1533# CONFIG_SND_ALS300 is not set
1534# CONFIG_SND_ALS4000 is not set
1535# CONFIG_SND_ALI5451 is not set
1536# CONFIG_SND_ATIIXP is not set
1537# CONFIG_SND_ATIIXP_MODEM is not set
1538# CONFIG_SND_AU8810 is not set
1539# CONFIG_SND_AU8820 is not set
1540# CONFIG_SND_AU8830 is not set
1541# CONFIG_SND_AW2 is not set
1542# CONFIG_SND_AZT3328 is not set
1543# CONFIG_SND_BT87X is not set
1544# CONFIG_SND_CA0106 is not set
1545# CONFIG_SND_CMIPCI is not set
1546# CONFIG_SND_OXYGEN is not set
1547# CONFIG_SND_CS4281 is not set
1548# CONFIG_SND_CS46XX is not set
1549# CONFIG_SND_CS5530 is not set
1550# CONFIG_SND_CS5535AUDIO is not set
1551# CONFIG_SND_DARLA20 is not set
1552# CONFIG_SND_GINA20 is not set
1553# CONFIG_SND_LAYLA20 is not set
1554# CONFIG_SND_DARLA24 is not set
1555# CONFIG_SND_GINA24 is not set
1556# CONFIG_SND_LAYLA24 is not set
1557# CONFIG_SND_MONA is not set
1558# CONFIG_SND_MIA is not set
1559# CONFIG_SND_ECHO3G is not set
1560# CONFIG_SND_INDIGO is not set
1561# CONFIG_SND_INDIGOIO is not set
1562# CONFIG_SND_INDIGODJ is not set
1563# CONFIG_SND_EMU10K1 is not set
1564# CONFIG_SND_EMU10K1X is not set
1565# CONFIG_SND_ENS1370 is not set
1566# CONFIG_SND_ENS1371 is not set
1567# CONFIG_SND_ES1938 is not set
1568# CONFIG_SND_ES1968 is not set
1569# CONFIG_SND_FM801 is not set
1570CONFIG_SND_HDA_INTEL=y
1571CONFIG_SND_HDA_HWDEP=y
1572CONFIG_SND_HDA_CODEC_REALTEK=y
1573CONFIG_SND_HDA_CODEC_ANALOG=y
1574CONFIG_SND_HDA_CODEC_SIGMATEL=y
1575CONFIG_SND_HDA_CODEC_VIA=y
1576CONFIG_SND_HDA_CODEC_ATIHDMI=y
1577CONFIG_SND_HDA_CODEC_CONEXANT=y
1578CONFIG_SND_HDA_CODEC_CMEDIA=y
1579CONFIG_SND_HDA_CODEC_SI3054=y
1580CONFIG_SND_HDA_GENERIC=y
1581# CONFIG_SND_HDA_POWER_SAVE is not set
1582# CONFIG_SND_HDSP is not set
1583# CONFIG_SND_HDSPM is not set
1584# CONFIG_SND_HIFIER is not set
1585# CONFIG_SND_ICE1712 is not set
1586# CONFIG_SND_ICE1724 is not set
1587# CONFIG_SND_INTEL8X0 is not set
1588# CONFIG_SND_INTEL8X0M is not set
1589# CONFIG_SND_KORG1212 is not set
1590# CONFIG_SND_MAESTRO3 is not set
1591# CONFIG_SND_MIXART is not set
1592# CONFIG_SND_NM256 is not set
1593# CONFIG_SND_PCXHR is not set
1594# CONFIG_SND_RIPTIDE is not set
1595# CONFIG_SND_RME32 is not set
1596# CONFIG_SND_RME96 is not set
1597# CONFIG_SND_RME9652 is not set
1598# CONFIG_SND_SIS7019 is not set
1599# CONFIG_SND_SONICVIBES is not set
1600# CONFIG_SND_TRIDENT is not set
1601# CONFIG_SND_VIA82XX is not set
1602# CONFIG_SND_VIA82XX_MODEM is not set
1603# CONFIG_SND_VIRTUOSO is not set
1604# CONFIG_SND_VX222 is not set
1605# CONFIG_SND_YMFPCI is not set
1606
1607#
1608# USB devices
1609#
1610# CONFIG_SND_USB_AUDIO is not set
1611# CONFIG_SND_USB_USX2Y is not set
1612# CONFIG_SND_USB_CAIAQ is not set
1613
1614#
1615# PCMCIA devices
1616#
1617# CONFIG_SND_VXPOCKET is not set
1618# CONFIG_SND_PDAUDIOCF is not set
1619
1620#
1621# System on Chip audio support
1622#
1623# CONFIG_SND_SOC is not set
1624
1625#
1626# ALSA SoC audio for Freescale SOCs
1627#
1628
1629#
1630# SoC Audio for the Texas Instruments OMAP
1631#
1047 1632
1048# 1633#
1049# Open Sound System 1634# Open Sound System
1050# 1635#
1051CONFIG_SOUND_PRIME=y 1636# CONFIG_SOUND_PRIME is not set
1052# CONFIG_SOUND_TRIDENT is not set
1053# CONFIG_SOUND_MSNDCLAS is not set
1054# CONFIG_SOUND_MSNDPIN is not set
1055# CONFIG_SOUND_OSS is not set
1056CONFIG_HID_SUPPORT=y 1637CONFIG_HID_SUPPORT=y
1057CONFIG_HID=y 1638CONFIG_HID=y
1058# CONFIG_HID_DEBUG is not set 1639CONFIG_HID_DEBUG=y
1640CONFIG_HIDRAW=y
1059 1641
1060# 1642#
1061# USB Input Devices 1643# USB Input Devices
1062# 1644#
1063CONFIG_USB_HID=y 1645CONFIG_USB_HID=y
1064# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1646CONFIG_USB_HIDINPUT_POWERBOOK=y
1065# CONFIG_HID_FF is not set 1647CONFIG_HID_FF=y
1066# CONFIG_USB_HIDDEV is not set 1648CONFIG_HID_PID=y
1649CONFIG_LOGITECH_FF=y
1650# CONFIG_LOGIRUMBLEPAD2_FF is not set
1651CONFIG_PANTHERLORD_FF=y
1652CONFIG_THRUSTMASTER_FF=y
1653CONFIG_ZEROPLUS_FF=y
1654CONFIG_USB_HIDDEV=y
1067CONFIG_USB_SUPPORT=y 1655CONFIG_USB_SUPPORT=y
1068CONFIG_USB_ARCH_HAS_HCD=y 1656CONFIG_USB_ARCH_HAS_HCD=y
1069CONFIG_USB_ARCH_HAS_OHCI=y 1657CONFIG_USB_ARCH_HAS_OHCI=y
1070CONFIG_USB_ARCH_HAS_EHCI=y 1658CONFIG_USB_ARCH_HAS_EHCI=y
1071CONFIG_USB=y 1659CONFIG_USB=y
1072# CONFIG_USB_DEBUG is not set 1660CONFIG_USB_DEBUG=y
1661CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
1073 1662
1074# 1663#
1075# Miscellaneous USB options 1664# Miscellaneous USB options
@@ -1077,18 +1666,18 @@ CONFIG_USB=y
1077CONFIG_USB_DEVICEFS=y 1666CONFIG_USB_DEVICEFS=y
1078# CONFIG_USB_DEVICE_CLASS is not set 1667# CONFIG_USB_DEVICE_CLASS is not set
1079# CONFIG_USB_DYNAMIC_MINORS is not set 1668# CONFIG_USB_DYNAMIC_MINORS is not set
1080# CONFIG_USB_SUSPEND is not set 1669CONFIG_USB_SUSPEND=y
1081# CONFIG_USB_PERSIST is not set
1082# CONFIG_USB_OTG is not set 1670# CONFIG_USB_OTG is not set
1083 1671
1084# 1672#
1085# USB Host Controller Drivers 1673# USB Host Controller Drivers
1086# 1674#
1675# CONFIG_USB_C67X00_HCD is not set
1087CONFIG_USB_EHCI_HCD=y 1676CONFIG_USB_EHCI_HCD=y
1088# CONFIG_USB_EHCI_SPLIT_ISO is not set
1089# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1677# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1090# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1678# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1091# CONFIG_USB_ISP116X_HCD is not set 1679# CONFIG_USB_ISP116X_HCD is not set
1680# CONFIG_USB_ISP1760_HCD is not set
1092CONFIG_USB_OHCI_HCD=y 1681CONFIG_USB_OHCI_HCD=y
1093# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1682# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1094# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 1683# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -1121,8 +1710,10 @@ CONFIG_USB_STORAGE=y
1121# CONFIG_USB_STORAGE_SDDR55 is not set 1710# CONFIG_USB_STORAGE_SDDR55 is not set
1122# CONFIG_USB_STORAGE_JUMPSHOT is not set 1711# CONFIG_USB_STORAGE_JUMPSHOT is not set
1123# CONFIG_USB_STORAGE_ALAUDA is not set 1712# CONFIG_USB_STORAGE_ALAUDA is not set
1713# CONFIG_USB_STORAGE_ONETOUCH is not set
1124# CONFIG_USB_STORAGE_KARMA is not set 1714# CONFIG_USB_STORAGE_KARMA is not set
1125# CONFIG_USB_LIBUSUAL is not set 1715# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1716CONFIG_USB_LIBUSUAL=y
1126 1717
1127# 1718#
1128# USB Imaging devices 1719# USB Imaging devices
@@ -1134,10 +1725,6 @@ CONFIG_USB_MON=y
1134# 1725#
1135# USB port drivers 1726# USB port drivers
1136# 1727#
1137
1138#
1139# USB Serial Converter support
1140#
1141# CONFIG_USB_SERIAL is not set 1728# CONFIG_USB_SERIAL is not set
1142 1729
1143# 1730#
@@ -1163,90 +1750,125 @@ CONFIG_USB_MON=y
1163# CONFIG_USB_TRANCEVIBRATOR is not set 1750# CONFIG_USB_TRANCEVIBRATOR is not set
1164# CONFIG_USB_IOWARRIOR is not set 1751# CONFIG_USB_IOWARRIOR is not set
1165# CONFIG_USB_TEST is not set 1752# CONFIG_USB_TEST is not set
1753# CONFIG_USB_GADGET is not set
1754# CONFIG_MMC is not set
1755# CONFIG_MEMSTICK is not set
1756CONFIG_NEW_LEDS=y
1757CONFIG_LEDS_CLASS=y
1166 1758
1167# 1759#
1168# USB DSL modem support 1760# LED drivers
1169# 1761#
1762# CONFIG_LEDS_CLEVO_MAIL is not set
1170 1763
1171# 1764#
1172# USB Gadget Support 1765# LED Triggers
1173# 1766#
1174# CONFIG_USB_GADGET is not set 1767CONFIG_LEDS_TRIGGERS=y
1175# CONFIG_MMC is not set 1768# CONFIG_LEDS_TRIGGER_TIMER is not set
1769# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
1770# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
1771# CONFIG_ACCESSIBILITY is not set
1772# CONFIG_INFINIBAND is not set
1773CONFIG_EDAC=y
1176 1774
1177# 1775#
1178# LED devices 1776# Reporting subsystems
1179# 1777#
1180# CONFIG_NEW_LEDS is not set 1778# CONFIG_EDAC_DEBUG is not set
1779# CONFIG_EDAC_MM_EDAC is not set
1780CONFIG_RTC_LIB=y
1781CONFIG_RTC_CLASS=y
1782# CONFIG_RTC_HCTOSYS is not set
1783# CONFIG_RTC_DEBUG is not set
1181 1784
1182# 1785#
1183# LED drivers 1786# RTC interfaces
1184# 1787#
1788CONFIG_RTC_INTF_SYSFS=y
1789CONFIG_RTC_INTF_PROC=y
1790CONFIG_RTC_INTF_DEV=y
1791# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1792# CONFIG_RTC_DRV_TEST is not set
1185 1793
1186# 1794#
1187# LED Triggers 1795# I2C RTC drivers
1188# 1796#
1189# CONFIG_INFINIBAND is not set 1797# CONFIG_RTC_DRV_DS1307 is not set
1190# CONFIG_EDAC is not set 1798# CONFIG_RTC_DRV_DS1374 is not set
1799# CONFIG_RTC_DRV_DS1672 is not set
1800# CONFIG_RTC_DRV_MAX6900 is not set
1801# CONFIG_RTC_DRV_RS5C372 is not set
1802# CONFIG_RTC_DRV_ISL1208 is not set
1803# CONFIG_RTC_DRV_X1205 is not set
1804# CONFIG_RTC_DRV_PCF8563 is not set
1805# CONFIG_RTC_DRV_PCF8583 is not set
1806# CONFIG_RTC_DRV_M41T80 is not set
1807# CONFIG_RTC_DRV_S35390A is not set
1191 1808
1192# 1809#
1193# Real Time Clock 1810# SPI RTC drivers
1194# 1811#
1195# CONFIG_RTC_CLASS is not set
1196 1812
1197# 1813#
1198# DMA Engine support 1814# Platform RTC drivers
1199# 1815#
1200# CONFIG_DMA_ENGINE is not set 1816CONFIG_RTC_DRV_CMOS=y
1817# CONFIG_RTC_DRV_DS1511 is not set
1818# CONFIG_RTC_DRV_DS1553 is not set
1819# CONFIG_RTC_DRV_DS1742 is not set
1820# CONFIG_RTC_DRV_STK17TA8 is not set
1821# CONFIG_RTC_DRV_M48T86 is not set
1822# CONFIG_RTC_DRV_M48T59 is not set
1823# CONFIG_RTC_DRV_V3020 is not set
1201 1824
1202# 1825#
1203# DMA Clients 1826# on-CPU RTC drivers
1204# 1827#
1828CONFIG_DMADEVICES=y
1205 1829
1206# 1830#
1207# DMA Devices 1831# DMA Devices
1208# 1832#
1209CONFIG_VIRTUALIZATION=y 1833# CONFIG_INTEL_IOATDMA is not set
1210# CONFIG_KVM is not set 1834# CONFIG_UIO is not set
1211 1835
1212# 1836#
1213# Userspace I/O 1837# Firmware Drivers
1214# 1838#
1215# CONFIG_UIO is not set 1839# CONFIG_EDD is not set
1840CONFIG_EFI_VARS=y
1841# CONFIG_DELL_RBU is not set
1842# CONFIG_DCDBAS is not set
1843CONFIG_DMIID=y
1844# CONFIG_ISCSI_IBFT_FIND is not set
1216 1845
1217# 1846#
1218# File systems 1847# File systems
1219# 1848#
1220CONFIG_EXT2_FS=y 1849# CONFIG_EXT2_FS is not set
1221CONFIG_EXT2_FS_XATTR=y
1222CONFIG_EXT2_FS_POSIX_ACL=y
1223# CONFIG_EXT2_FS_SECURITY is not set
1224# CONFIG_EXT2_FS_XIP is not set
1225CONFIG_EXT3_FS=y 1850CONFIG_EXT3_FS=y
1226CONFIG_EXT3_FS_XATTR=y 1851CONFIG_EXT3_FS_XATTR=y
1227CONFIG_EXT3_FS_POSIX_ACL=y 1852CONFIG_EXT3_FS_POSIX_ACL=y
1228# CONFIG_EXT3_FS_SECURITY is not set 1853CONFIG_EXT3_FS_SECURITY=y
1229# CONFIG_EXT4DEV_FS is not set 1854# CONFIG_EXT4DEV_FS is not set
1230CONFIG_JBD=y 1855CONFIG_JBD=y
1231# CONFIG_JBD_DEBUG is not set 1856# CONFIG_JBD_DEBUG is not set
1232CONFIG_FS_MBCACHE=y 1857CONFIG_FS_MBCACHE=y
1233CONFIG_REISERFS_FS=y 1858# CONFIG_REISERFS_FS is not set
1234# CONFIG_REISERFS_CHECK is not set
1235# CONFIG_REISERFS_PROC_INFO is not set
1236CONFIG_REISERFS_FS_XATTR=y
1237CONFIG_REISERFS_FS_POSIX_ACL=y
1238# CONFIG_REISERFS_FS_SECURITY is not set
1239# CONFIG_JFS_FS is not set 1859# CONFIG_JFS_FS is not set
1240CONFIG_FS_POSIX_ACL=y 1860CONFIG_FS_POSIX_ACL=y
1241# CONFIG_XFS_FS is not set 1861# CONFIG_XFS_FS is not set
1242# CONFIG_GFS2_FS is not set
1243# CONFIG_OCFS2_FS is not set 1862# CONFIG_OCFS2_FS is not set
1244# CONFIG_MINIX_FS is not set 1863CONFIG_DNOTIFY=y
1245# CONFIG_ROMFS_FS is not set
1246CONFIG_INOTIFY=y 1864CONFIG_INOTIFY=y
1247CONFIG_INOTIFY_USER=y 1865CONFIG_INOTIFY_USER=y
1248# CONFIG_QUOTA is not set 1866CONFIG_QUOTA=y
1249CONFIG_DNOTIFY=y 1867CONFIG_QUOTA_NETLINK_INTERFACE=y
1868# CONFIG_PRINT_QUOTA_WARNING is not set
1869# CONFIG_QFMT_V1 is not set
1870CONFIG_QFMT_V2=y
1871CONFIG_QUOTACTL=y
1250# CONFIG_AUTOFS_FS is not set 1872# CONFIG_AUTOFS_FS is not set
1251CONFIG_AUTOFS4_FS=y 1873CONFIG_AUTOFS4_FS=y
1252# CONFIG_FUSE_FS is not set 1874# CONFIG_FUSE_FS is not set
@@ -1256,8 +1878,8 @@ CONFIG_GENERIC_ACL=y
1256# CD-ROM/DVD Filesystems 1878# CD-ROM/DVD Filesystems
1257# 1879#
1258CONFIG_ISO9660_FS=y 1880CONFIG_ISO9660_FS=y
1259# CONFIG_JOLIET is not set 1881CONFIG_JOLIET=y
1260# CONFIG_ZISOFS is not set 1882CONFIG_ZISOFS=y
1261# CONFIG_UDF_FS is not set 1883# CONFIG_UDF_FS is not set
1262 1884
1263# 1885#
@@ -1275,13 +1897,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1275# 1897#
1276CONFIG_PROC_FS=y 1898CONFIG_PROC_FS=y
1277CONFIG_PROC_KCORE=y 1899CONFIG_PROC_KCORE=y
1900CONFIG_PROC_VMCORE=y
1278CONFIG_PROC_SYSCTL=y 1901CONFIG_PROC_SYSCTL=y
1279CONFIG_SYSFS=y 1902CONFIG_SYSFS=y
1280CONFIG_TMPFS=y 1903CONFIG_TMPFS=y
1281CONFIG_TMPFS_POSIX_ACL=y 1904CONFIG_TMPFS_POSIX_ACL=y
1282CONFIG_HUGETLBFS=y 1905CONFIG_HUGETLBFS=y
1283CONFIG_HUGETLB_PAGE=y 1906CONFIG_HUGETLB_PAGE=y
1284CONFIG_RAMFS=y
1285# CONFIG_CONFIGFS_FS is not set 1907# CONFIG_CONFIGFS_FS is not set
1286 1908
1287# 1909#
@@ -1289,6 +1911,7 @@ CONFIG_RAMFS=y
1289# 1911#
1290# CONFIG_ADFS_FS is not set 1912# CONFIG_ADFS_FS is not set
1291# CONFIG_AFFS_FS is not set 1913# CONFIG_AFFS_FS is not set
1914# CONFIG_ECRYPT_FS is not set
1292# CONFIG_HFS_FS is not set 1915# CONFIG_HFS_FS is not set
1293# CONFIG_HFSPLUS_FS is not set 1916# CONFIG_HFSPLUS_FS is not set
1294# CONFIG_BEFS_FS is not set 1917# CONFIG_BEFS_FS is not set
@@ -1296,33 +1919,15 @@ CONFIG_RAMFS=y
1296# CONFIG_EFS_FS is not set 1919# CONFIG_EFS_FS is not set
1297# CONFIG_CRAMFS is not set 1920# CONFIG_CRAMFS is not set
1298# CONFIG_VXFS_FS is not set 1921# CONFIG_VXFS_FS is not set
1922# CONFIG_MINIX_FS is not set
1299# CONFIG_HPFS_FS is not set 1923# CONFIG_HPFS_FS is not set
1300# CONFIG_QNX4FS_FS is not set 1924# CONFIG_QNX4FS_FS is not set
1925# CONFIG_ROMFS_FS is not set
1301# CONFIG_SYSV_FS is not set 1926# CONFIG_SYSV_FS is not set
1302# CONFIG_UFS_FS is not set 1927# CONFIG_UFS_FS is not set
1303 1928CONFIG_NETWORK_FILESYSTEMS=y
1304# 1929# CONFIG_NFS_FS is not set
1305# Network File Systems 1930# CONFIG_NFSD is not set
1306#
1307CONFIG_NFS_FS=y
1308CONFIG_NFS_V3=y
1309# CONFIG_NFS_V3_ACL is not set
1310# CONFIG_NFS_V4 is not set
1311# CONFIG_NFS_DIRECTIO is not set
1312CONFIG_NFSD=y
1313CONFIG_NFSD_V3=y
1314# CONFIG_NFSD_V3_ACL is not set
1315# CONFIG_NFSD_V4 is not set
1316CONFIG_NFSD_TCP=y
1317CONFIG_ROOT_NFS=y
1318CONFIG_LOCKD=y
1319CONFIG_LOCKD_V4=y
1320CONFIG_EXPORTFS=y
1321CONFIG_NFS_COMMON=y
1322CONFIG_SUNRPC=y
1323# CONFIG_SUNRPC_BIND34 is not set
1324# CONFIG_RPCSEC_GSS_KRB5 is not set
1325# CONFIG_RPCSEC_GSS_SPKM3 is not set
1326# CONFIG_SMB_FS is not set 1931# CONFIG_SMB_FS is not set
1327# CONFIG_CIFS is not set 1932# CONFIG_CIFS is not set
1328# CONFIG_NCP_FS is not set 1933# CONFIG_NCP_FS is not set
@@ -1332,14 +1937,26 @@ CONFIG_SUNRPC=y
1332# 1937#
1333# Partition Types 1938# Partition Types
1334# 1939#
1335# CONFIG_PARTITION_ADVANCED is not set 1940CONFIG_PARTITION_ADVANCED=y
1941# CONFIG_ACORN_PARTITION is not set
1942CONFIG_OSF_PARTITION=y
1943CONFIG_AMIGA_PARTITION=y
1944# CONFIG_ATARI_PARTITION is not set
1945CONFIG_MAC_PARTITION=y
1336CONFIG_MSDOS_PARTITION=y 1946CONFIG_MSDOS_PARTITION=y
1337 1947CONFIG_BSD_DISKLABEL=y
1338# 1948CONFIG_MINIX_SUBPARTITION=y
1339# Native Language Support 1949CONFIG_SOLARIS_X86_PARTITION=y
1340# 1950CONFIG_UNIXWARE_DISKLABEL=y
1951# CONFIG_LDM_PARTITION is not set
1952CONFIG_SGI_PARTITION=y
1953# CONFIG_ULTRIX_PARTITION is not set
1954CONFIG_SUN_PARTITION=y
1955CONFIG_KARMA_PARTITION=y
1956CONFIG_EFI_PARTITION=y
1957# CONFIG_SYSV68_PARTITION is not set
1341CONFIG_NLS=y 1958CONFIG_NLS=y
1342CONFIG_NLS_DEFAULT="iso8859-1" 1959CONFIG_NLS_DEFAULT="utf8"
1343CONFIG_NLS_CODEPAGE_437=y 1960CONFIG_NLS_CODEPAGE_437=y
1344# CONFIG_NLS_CODEPAGE_737 is not set 1961# CONFIG_NLS_CODEPAGE_737 is not set
1345# CONFIG_NLS_CODEPAGE_775 is not set 1962# CONFIG_NLS_CODEPAGE_775 is not set
@@ -1374,37 +1991,33 @@ CONFIG_NLS_ISO8859_1=y
1374# CONFIG_NLS_ISO8859_9 is not set 1991# CONFIG_NLS_ISO8859_9 is not set
1375# CONFIG_NLS_ISO8859_13 is not set 1992# CONFIG_NLS_ISO8859_13 is not set
1376# CONFIG_NLS_ISO8859_14 is not set 1993# CONFIG_NLS_ISO8859_14 is not set
1377CONFIG_NLS_ISO8859_15=y 1994# CONFIG_NLS_ISO8859_15 is not set
1378# CONFIG_NLS_KOI8_R is not set 1995# CONFIG_NLS_KOI8_R is not set
1379# CONFIG_NLS_KOI8_U is not set 1996# CONFIG_NLS_KOI8_U is not set
1380CONFIG_NLS_UTF8=y 1997CONFIG_NLS_UTF8=y
1381
1382#
1383# Distributed Lock Manager
1384#
1385# CONFIG_DLM is not set 1998# CONFIG_DLM is not set
1386CONFIG_INSTRUMENTATION=y
1387CONFIG_PROFILING=y
1388CONFIG_OPROFILE=y
1389CONFIG_KPROBES=y
1390 1999
1391# 2000#
1392# Kernel hacking 2001# Kernel hacking
1393# 2002#
1394CONFIG_TRACE_IRQFLAGS_SUPPORT=y 2003CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1395# CONFIG_PRINTK_TIME is not set 2004# CONFIG_PRINTK_TIME is not set
2005# CONFIG_ENABLE_WARN_DEPRECATED is not set
1396# CONFIG_ENABLE_MUST_CHECK is not set 2006# CONFIG_ENABLE_MUST_CHECK is not set
2007CONFIG_FRAME_WARN=2048
1397CONFIG_MAGIC_SYSRQ=y 2008CONFIG_MAGIC_SYSRQ=y
1398CONFIG_UNUSED_SYMBOLS=y 2009# CONFIG_UNUSED_SYMBOLS is not set
1399# CONFIG_DEBUG_FS is not set 2010CONFIG_DEBUG_FS=y
1400# CONFIG_HEADERS_CHECK is not set 2011# CONFIG_HEADERS_CHECK is not set
1401CONFIG_DEBUG_KERNEL=y 2012CONFIG_DEBUG_KERNEL=y
1402# CONFIG_DEBUG_SHIRQ is not set 2013# CONFIG_DEBUG_SHIRQ is not set
1403CONFIG_DETECT_SOFTLOCKUP=y 2014# CONFIG_DETECT_SOFTLOCKUP is not set
1404# CONFIG_SCHED_DEBUG is not set 2015# CONFIG_SCHED_DEBUG is not set
1405# CONFIG_SCHEDSTATS is not set 2016CONFIG_SCHEDSTATS=y
1406CONFIG_TIMER_STATS=y 2017CONFIG_TIMER_STATS=y
2018# CONFIG_DEBUG_OBJECTS is not set
1407# CONFIG_SLUB_DEBUG_ON is not set 2019# CONFIG_SLUB_DEBUG_ON is not set
2020# CONFIG_SLUB_STATS is not set
1408# CONFIG_DEBUG_RT_MUTEXES is not set 2021# CONFIG_DEBUG_RT_MUTEXES is not set
1409# CONFIG_RT_MUTEX_TESTER is not set 2022# CONFIG_RT_MUTEX_TESTER is not set
1410# CONFIG_DEBUG_SPINLOCK is not set 2023# CONFIG_DEBUG_SPINLOCK is not set
@@ -1419,48 +2032,174 @@ CONFIG_TIMER_STATS=y
1419CONFIG_DEBUG_BUGVERBOSE=y 2032CONFIG_DEBUG_BUGVERBOSE=y
1420# CONFIG_DEBUG_INFO is not set 2033# CONFIG_DEBUG_INFO is not set
1421# CONFIG_DEBUG_VM is not set 2034# CONFIG_DEBUG_VM is not set
2035# CONFIG_DEBUG_WRITECOUNT is not set
1422# CONFIG_DEBUG_LIST is not set 2036# CONFIG_DEBUG_LIST is not set
1423# CONFIG_FRAME_POINTER is not set 2037# CONFIG_DEBUG_SG is not set
1424CONFIG_OPTIMIZE_INLINING=y 2038CONFIG_FRAME_POINTER=y
2039# CONFIG_BOOT_PRINTK_DELAY is not set
1425# CONFIG_RCU_TORTURE_TEST is not set 2040# CONFIG_RCU_TORTURE_TEST is not set
2041# CONFIG_KPROBES_SANITY_TEST is not set
2042# CONFIG_BACKTRACE_SELF_TEST is not set
1426# CONFIG_LKDTM is not set 2043# CONFIG_LKDTM is not set
1427# CONFIG_FAULT_INJECTION is not set 2044# CONFIG_FAULT_INJECTION is not set
2045# CONFIG_LATENCYTOP is not set
2046CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
2047# CONFIG_SAMPLES is not set
2048# CONFIG_KGDB is not set
2049CONFIG_HAVE_ARCH_KGDB=y
2050# CONFIG_NONPROMISC_DEVMEM is not set
1428CONFIG_EARLY_PRINTK=y 2051CONFIG_EARLY_PRINTK=y
1429CONFIG_DEBUG_STACKOVERFLOW=y 2052CONFIG_DEBUG_STACKOVERFLOW=y
1430# CONFIG_DEBUG_STACK_USAGE is not set 2053CONFIG_DEBUG_STACK_USAGE=y
1431# CONFIG_DEBUG_RODATA is not set 2054# CONFIG_DEBUG_PAGEALLOC is not set
2055# CONFIG_X86_PTDUMP is not set
2056CONFIG_DEBUG_RODATA=y
2057# CONFIG_DEBUG_RODATA_TEST is not set
2058CONFIG_DEBUG_NX_TEST=m
1432# CONFIG_4KSTACKS is not set 2059# CONFIG_4KSTACKS is not set
1433CONFIG_X86_FIND_SMP_CONFIG=y 2060CONFIG_X86_FIND_SMP_CONFIG=y
1434CONFIG_X86_MPPARSE=y 2061CONFIG_X86_MPPARSE=y
1435CONFIG_DOUBLEFAULT=y 2062CONFIG_DOUBLEFAULT=y
2063CONFIG_IO_DELAY_TYPE_0X80=0
2064CONFIG_IO_DELAY_TYPE_0XED=1
2065CONFIG_IO_DELAY_TYPE_UDELAY=2
2066CONFIG_IO_DELAY_TYPE_NONE=3
2067CONFIG_IO_DELAY_0X80=y
2068# CONFIG_IO_DELAY_0XED is not set
2069# CONFIG_IO_DELAY_UDELAY is not set
2070# CONFIG_IO_DELAY_NONE is not set
2071CONFIG_DEFAULT_IO_DELAY_TYPE=0
2072CONFIG_DEBUG_BOOT_PARAMS=y
2073# CONFIG_CPA_DEBUG is not set
1436 2074
1437# 2075#
1438# Security options 2076# Security options
1439# 2077#
1440# CONFIG_KEYS is not set 2078CONFIG_KEYS=y
1441# CONFIG_SECURITY is not set 2079CONFIG_KEYS_DEBUG_PROC_KEYS=y
1442# CONFIG_CRYPTO is not set 2080CONFIG_SECURITY=y
2081CONFIG_SECURITY_NETWORK=y
2082# CONFIG_SECURITY_NETWORK_XFRM is not set
2083CONFIG_SECURITY_CAPABILITIES=y
2084CONFIG_SECURITY_FILE_CAPABILITIES=y
2085# CONFIG_SECURITY_ROOTPLUG is not set
2086CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536
2087CONFIG_SECURITY_SELINUX=y
2088CONFIG_SECURITY_SELINUX_BOOTPARAM=y
2089CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
2090CONFIG_SECURITY_SELINUX_DISABLE=y
2091CONFIG_SECURITY_SELINUX_DEVELOP=y
2092CONFIG_SECURITY_SELINUX_AVC_STATS=y
2093CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
2094# CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set
2095# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
2096# CONFIG_SECURITY_SMACK is not set
2097CONFIG_CRYPTO=y
2098
2099#
2100# Crypto core or helper
2101#
2102CONFIG_CRYPTO_ALGAPI=y
2103CONFIG_CRYPTO_AEAD=y
2104CONFIG_CRYPTO_BLKCIPHER=y
2105CONFIG_CRYPTO_HASH=y
2106CONFIG_CRYPTO_MANAGER=y
2107# CONFIG_CRYPTO_GF128MUL is not set
2108# CONFIG_CRYPTO_NULL is not set
2109# CONFIG_CRYPTO_CRYPTD is not set
2110CONFIG_CRYPTO_AUTHENC=y
2111# CONFIG_CRYPTO_TEST is not set
2112
2113#
2114# Authenticated Encryption with Associated Data
2115#
2116# CONFIG_CRYPTO_CCM is not set
2117# CONFIG_CRYPTO_GCM is not set
2118# CONFIG_CRYPTO_SEQIV is not set
2119
2120#
2121# Block modes
2122#
2123CONFIG_CRYPTO_CBC=y
2124# CONFIG_CRYPTO_CTR is not set
2125# CONFIG_CRYPTO_CTS is not set
2126CONFIG_CRYPTO_ECB=y
2127# CONFIG_CRYPTO_LRW is not set
2128# CONFIG_CRYPTO_PCBC is not set
2129# CONFIG_CRYPTO_XTS is not set
2130
2131#
2132# Hash modes
2133#
2134CONFIG_CRYPTO_HMAC=y
2135# CONFIG_CRYPTO_XCBC is not set
2136
2137#
2138# Digest
2139#
2140# CONFIG_CRYPTO_CRC32C is not set
2141# CONFIG_CRYPTO_MD4 is not set
2142CONFIG_CRYPTO_MD5=y
2143# CONFIG_CRYPTO_MICHAEL_MIC is not set
2144CONFIG_CRYPTO_SHA1=y
2145# CONFIG_CRYPTO_SHA256 is not set
2146# CONFIG_CRYPTO_SHA512 is not set
2147# CONFIG_CRYPTO_TGR192 is not set
2148# CONFIG_CRYPTO_WP512 is not set
2149
2150#
2151# Ciphers
2152#
2153CONFIG_CRYPTO_AES=y
2154# CONFIG_CRYPTO_AES_586 is not set
2155# CONFIG_CRYPTO_ANUBIS is not set
2156CONFIG_CRYPTO_ARC4=y
2157# CONFIG_CRYPTO_BLOWFISH is not set
2158# CONFIG_CRYPTO_CAMELLIA is not set
2159# CONFIG_CRYPTO_CAST5 is not set
2160# CONFIG_CRYPTO_CAST6 is not set
2161CONFIG_CRYPTO_DES=y
2162# CONFIG_CRYPTO_FCRYPT is not set
2163# CONFIG_CRYPTO_KHAZAD is not set
2164# CONFIG_CRYPTO_SALSA20 is not set
2165# CONFIG_CRYPTO_SALSA20_586 is not set
2166# CONFIG_CRYPTO_SEED is not set
2167# CONFIG_CRYPTO_SERPENT is not set
2168# CONFIG_CRYPTO_TEA is not set
2169# CONFIG_CRYPTO_TWOFISH is not set
2170# CONFIG_CRYPTO_TWOFISH_586 is not set
2171
2172#
2173# Compression
2174#
2175# CONFIG_CRYPTO_DEFLATE is not set
2176# CONFIG_CRYPTO_LZO is not set
2177CONFIG_CRYPTO_HW=y
2178# CONFIG_CRYPTO_DEV_PADLOCK is not set
2179# CONFIG_CRYPTO_DEV_GEODE is not set
2180# CONFIG_CRYPTO_DEV_HIFN_795X is not set
2181CONFIG_HAVE_KVM=y
2182CONFIG_VIRTUALIZATION=y
2183# CONFIG_KVM is not set
2184# CONFIG_LGUEST is not set
2185# CONFIG_VIRTIO_PCI is not set
2186# CONFIG_VIRTIO_BALLOON is not set
1443 2187
1444# 2188#
1445# Library routines 2189# Library routines
1446# 2190#
1447CONFIG_BITREVERSE=y 2191CONFIG_BITREVERSE=y
2192CONFIG_GENERIC_FIND_FIRST_BIT=y
2193CONFIG_GENERIC_FIND_NEXT_BIT=y
1448# CONFIG_CRC_CCITT is not set 2194# CONFIG_CRC_CCITT is not set
1449# CONFIG_CRC16 is not set 2195# CONFIG_CRC16 is not set
1450# CONFIG_CRC_ITU_T is not set 2196# CONFIG_CRC_ITU_T is not set
1451CONFIG_CRC32=y 2197CONFIG_CRC32=y
1452# CONFIG_CRC7 is not set 2198# CONFIG_CRC7 is not set
1453# CONFIG_LIBCRC32C is not set 2199# CONFIG_LIBCRC32C is not set
2200CONFIG_AUDIT_GENERIC=y
1454CONFIG_ZLIB_INFLATE=y 2201CONFIG_ZLIB_INFLATE=y
1455CONFIG_PLIST=y 2202CONFIG_PLIST=y
1456CONFIG_HAS_IOMEM=y 2203CONFIG_HAS_IOMEM=y
1457CONFIG_HAS_IOPORT=y 2204CONFIG_HAS_IOPORT=y
1458CONFIG_HAS_DMA=y 2205CONFIG_HAS_DMA=y
1459CONFIG_GENERIC_HARDIRQS=y
1460CONFIG_GENERIC_IRQ_PROBE=y
1461CONFIG_GENERIC_PENDING_IRQ=y
1462CONFIG_X86_SMP=y
1463CONFIG_X86_HT=y
1464CONFIG_X86_BIOS_REBOOT=y
1465CONFIG_X86_TRAMPOLINE=y
1466CONFIG_KTIME_SCALAR=y
diff --git a/arch/x86/configs/x86_64_defconfig b/arch/x86/configs/x86_64_defconfig
index 2d6f5b2809d2..ae5124e064d4 100644
--- a/arch/x86/configs/x86_64_defconfig
+++ b/arch/x86/configs/x86_64_defconfig
@@ -1,64 +1,103 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22-git14 3# Linux kernel version: 2.6.26-rc1
4# Fri Jul 20 09:53:15 2007 4# Sun May 4 19:59:57 2008
5# 5#
6CONFIG_X86_64=y
7CONFIG_64BIT=y 6CONFIG_64BIT=y
7# CONFIG_X86_32 is not set
8CONFIG_X86_64=y
8CONFIG_X86=y 9CONFIG_X86=y
10CONFIG_DEFCONFIG_LIST="arch/x86/configs/x86_64_defconfig"
11# CONFIG_GENERIC_LOCKBREAK is not set
9CONFIG_GENERIC_TIME=y 12CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_TIME_VSYSCALL=y
11CONFIG_GENERIC_CMOS_UPDATE=y 13CONFIG_GENERIC_CMOS_UPDATE=y
12CONFIG_ZONE_DMA32=y 14CONFIG_CLOCKSOURCE_WATCHDOG=y
15CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
13CONFIG_LOCKDEP_SUPPORT=y 17CONFIG_LOCKDEP_SUPPORT=y
14CONFIG_STACKTRACE_SUPPORT=y 18CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_SEMAPHORE_SLEEPERS=y 19CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20CONFIG_FAST_CMPXCHG_LOCAL=y
16CONFIG_MMU=y 21CONFIG_MMU=y
17CONFIG_ZONE_DMA=y 22CONFIG_ZONE_DMA=y
18CONFIG_QUICKLIST=y
19CONFIG_NR_QUICK=2
20CONFIG_RWSEM_GENERIC_SPINLOCK=y
21CONFIG_GENERIC_HWEIGHT=y
22CONFIG_GENERIC_CALIBRATE_DELAY=y
23CONFIG_X86_CMPXCHG=y
24CONFIG_EARLY_PRINTK=y
25CONFIG_GENERIC_ISA_DMA=y 23CONFIG_GENERIC_ISA_DMA=y
26CONFIG_GENERIC_IOMAP=y 24CONFIG_GENERIC_IOMAP=y
27CONFIG_ARCH_MAY_HAVE_PC_FDC=y
28CONFIG_ARCH_POPULATES_NODE_MAP=y
29CONFIG_DMI=y
30CONFIG_AUDIT_ARCH=y
31CONFIG_GENERIC_BUG=y 25CONFIG_GENERIC_BUG=y
26CONFIG_GENERIC_HWEIGHT=y
27# CONFIG_GENERIC_GPIO is not set
28CONFIG_ARCH_MAY_HAVE_PC_FDC=y
29CONFIG_RWSEM_GENERIC_SPINLOCK=y
30# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
32# CONFIG_ARCH_HAS_ILOG2_U32 is not set 31# CONFIG_ARCH_HAS_ILOG2_U32 is not set
33# CONFIG_ARCH_HAS_ILOG2_U64 is not set 32# CONFIG_ARCH_HAS_ILOG2_U64 is not set
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_GENERIC_CALIBRATE_DELAY=y
35CONFIG_GENERIC_TIME_VSYSCALL=y
36CONFIG_ARCH_HAS_CPU_RELAX=y
37CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
38CONFIG_HAVE_SETUP_PER_CPU_AREA=y
39CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
40CONFIG_ARCH_HIBERNATION_POSSIBLE=y
41CONFIG_ARCH_SUSPEND_POSSIBLE=y
42CONFIG_ZONE_DMA32=y
43CONFIG_ARCH_POPULATES_NODE_MAP=y
44CONFIG_AUDIT_ARCH=y
45CONFIG_ARCH_SUPPORTS_AOUT=y
46CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
47CONFIG_GENERIC_HARDIRQS=y
48CONFIG_GENERIC_IRQ_PROBE=y
49CONFIG_GENERIC_PENDING_IRQ=y
50CONFIG_X86_SMP=y
51CONFIG_X86_64_SMP=y
52CONFIG_X86_HT=y
53CONFIG_X86_BIOS_REBOOT=y
54CONFIG_X86_TRAMPOLINE=y
55# CONFIG_KTIME_SCALAR is not set
35 56
36# 57#
37# Code maturity level options 58# General setup
38# 59#
39CONFIG_EXPERIMENTAL=y 60CONFIG_EXPERIMENTAL=y
40CONFIG_LOCK_KERNEL=y 61CONFIG_LOCK_KERNEL=y
41CONFIG_INIT_ENV_ARG_LIMIT=32 62CONFIG_INIT_ENV_ARG_LIMIT=32
42
43#
44# General setup
45#
46CONFIG_LOCALVERSION="" 63CONFIG_LOCALVERSION=""
47CONFIG_LOCALVERSION_AUTO=y 64# CONFIG_LOCALVERSION_AUTO is not set
48CONFIG_SWAP=y 65CONFIG_SWAP=y
49CONFIG_SYSVIPC=y 66CONFIG_SYSVIPC=y
50CONFIG_SYSVIPC_SYSCTL=y 67CONFIG_SYSVIPC_SYSCTL=y
51CONFIG_POSIX_MQUEUE=y 68CONFIG_POSIX_MQUEUE=y
52# CONFIG_BSD_PROCESS_ACCT is not set 69CONFIG_BSD_PROCESS_ACCT=y
53# CONFIG_TASKSTATS is not set 70# CONFIG_BSD_PROCESS_ACCT_V3 is not set
54# CONFIG_USER_NS is not set 71CONFIG_TASKSTATS=y
55# CONFIG_AUDIT is not set 72CONFIG_TASK_DELAY_ACCT=y
56CONFIG_IKCONFIG=y 73CONFIG_TASK_XACCT=y
57CONFIG_IKCONFIG_PROC=y 74CONFIG_TASK_IO_ACCOUNTING=y
58CONFIG_LOG_BUF_SHIFT=18 75CONFIG_AUDIT=y
59# CONFIG_CPUSETS is not set 76CONFIG_AUDITSYSCALL=y
60CONFIG_SYSFS_DEPRECATED=y 77CONFIG_AUDIT_TREE=y
78# CONFIG_IKCONFIG is not set
79CONFIG_LOG_BUF_SHIFT=17
80CONFIG_CGROUPS=y
81# CONFIG_CGROUP_DEBUG is not set
82CONFIG_CGROUP_NS=y
83# CONFIG_CGROUP_DEVICE is not set
84CONFIG_CPUSETS=y
85CONFIG_GROUP_SCHED=y
86CONFIG_FAIR_GROUP_SCHED=y
87# CONFIG_RT_GROUP_SCHED is not set
88# CONFIG_USER_SCHED is not set
89CONFIG_CGROUP_SCHED=y
90CONFIG_CGROUP_CPUACCT=y
91CONFIG_RESOURCE_COUNTERS=y
92# CONFIG_CGROUP_MEM_RES_CTLR is not set
93# CONFIG_SYSFS_DEPRECATED_V2 is not set
94CONFIG_PROC_PID_CPUSET=y
61CONFIG_RELAY=y 95CONFIG_RELAY=y
96CONFIG_NAMESPACES=y
97CONFIG_UTS_NS=y
98CONFIG_IPC_NS=y
99CONFIG_USER_NS=y
100CONFIG_PID_NS=y
62CONFIG_BLK_DEV_INITRD=y 101CONFIG_BLK_DEV_INITRD=y
63CONFIG_INITRAMFS_SOURCE="" 102CONFIG_INITRAMFS_SOURCE=""
64CONFIG_CC_OPTIMIZE_FOR_SIZE=y 103CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -66,13 +105,15 @@ CONFIG_SYSCTL=y
66# CONFIG_EMBEDDED is not set 105# CONFIG_EMBEDDED is not set
67CONFIG_UID16=y 106CONFIG_UID16=y
68CONFIG_SYSCTL_SYSCALL=y 107CONFIG_SYSCTL_SYSCALL=y
108CONFIG_SYSCTL_SYSCALL_CHECK=y
69CONFIG_KALLSYMS=y 109CONFIG_KALLSYMS=y
70CONFIG_KALLSYMS_ALL=y 110CONFIG_KALLSYMS_ALL=y
71# CONFIG_KALLSYMS_EXTRA_PASS is not set 111CONFIG_KALLSYMS_EXTRA_PASS=y
72CONFIG_HOTPLUG=y 112CONFIG_HOTPLUG=y
73CONFIG_PRINTK=y 113CONFIG_PRINTK=y
74CONFIG_BUG=y 114CONFIG_BUG=y
75CONFIG_ELF_CORE=y 115CONFIG_ELF_CORE=y
116# CONFIG_COMPAT_BRK is not set
76CONFIG_BASE_FULL=y 117CONFIG_BASE_FULL=y
77CONFIG_FUTEX=y 118CONFIG_FUTEX=y
78CONFIG_ANON_INODES=y 119CONFIG_ANON_INODES=y
@@ -82,9 +123,21 @@ CONFIG_TIMERFD=y
82CONFIG_EVENTFD=y 123CONFIG_EVENTFD=y
83CONFIG_SHMEM=y 124CONFIG_SHMEM=y
84CONFIG_VM_EVENT_COUNTERS=y 125CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_SLAB=y 126CONFIG_SLUB_DEBUG=y
86# CONFIG_SLUB is not set 127# CONFIG_SLAB is not set
128CONFIG_SLUB=y
87# CONFIG_SLOB is not set 129# CONFIG_SLOB is not set
130CONFIG_PROFILING=y
131CONFIG_MARKERS=y
132# CONFIG_OPROFILE is not set
133CONFIG_HAVE_OPROFILE=y
134CONFIG_KPROBES=y
135CONFIG_KRETPROBES=y
136CONFIG_HAVE_KPROBES=y
137CONFIG_HAVE_KRETPROBES=y
138# CONFIG_HAVE_DMA_ATTRS is not set
139CONFIG_PROC_PAGE_MONITOR=y
140CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 141CONFIG_RT_MUTEXES=y
89# CONFIG_TINY_SHMEM is not set 142# CONFIG_TINY_SHMEM is not set
90CONFIG_BASE_SMALL=0 143CONFIG_BASE_SMALL=0
@@ -96,14 +149,15 @@ CONFIG_MODULE_FORCE_UNLOAD=y
96# CONFIG_KMOD is not set 149# CONFIG_KMOD is not set
97CONFIG_STOP_MACHINE=y 150CONFIG_STOP_MACHINE=y
98CONFIG_BLOCK=y 151CONFIG_BLOCK=y
99# CONFIG_BLK_DEV_IO_TRACE is not set 152CONFIG_BLK_DEV_IO_TRACE=y
100# CONFIG_BLK_DEV_BSG is not set 153CONFIG_BLK_DEV_BSG=y
154CONFIG_BLOCK_COMPAT=y
101 155
102# 156#
103# IO Schedulers 157# IO Schedulers
104# 158#
105CONFIG_IOSCHED_NOOP=y 159CONFIG_IOSCHED_NOOP=y
106# CONFIG_IOSCHED_AS is not set 160CONFIG_IOSCHED_AS=y
107CONFIG_IOSCHED_DEADLINE=y 161CONFIG_IOSCHED_DEADLINE=y
108CONFIG_IOSCHED_CFQ=y 162CONFIG_IOSCHED_CFQ=y
109# CONFIG_DEFAULT_AS is not set 163# CONFIG_DEFAULT_AS is not set
@@ -111,107 +165,177 @@ CONFIG_IOSCHED_CFQ=y
111CONFIG_DEFAULT_CFQ=y 165CONFIG_DEFAULT_CFQ=y
112# CONFIG_DEFAULT_NOOP is not set 166# CONFIG_DEFAULT_NOOP is not set
113CONFIG_DEFAULT_IOSCHED="cfq" 167CONFIG_DEFAULT_IOSCHED="cfq"
168CONFIG_CLASSIC_RCU=y
114 169
115# 170#
116# Processor type and features 171# Processor type and features
117# 172#
173CONFIG_TICK_ONESHOT=y
174CONFIG_NO_HZ=y
175CONFIG_HIGH_RES_TIMERS=y
176CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
177CONFIG_SMP=y
118CONFIG_X86_PC=y 178CONFIG_X86_PC=y
179# CONFIG_X86_ELAN is not set
180# CONFIG_X86_VOYAGER is not set
181# CONFIG_X86_NUMAQ is not set
182# CONFIG_X86_SUMMIT is not set
183# CONFIG_X86_BIGSMP is not set
184# CONFIG_X86_VISWS is not set
185# CONFIG_X86_GENERICARCH is not set
186# CONFIG_X86_ES7000 is not set
187# CONFIG_X86_RDC321X is not set
119# CONFIG_X86_VSMP is not set 188# CONFIG_X86_VSMP is not set
189# CONFIG_PARAVIRT_GUEST is not set
190CONFIG_MEMTEST_BOOTPARAM=y
191CONFIG_MEMTEST_BOOTPARAM_VALUE=0
192# CONFIG_M386 is not set
193# CONFIG_M486 is not set
194# CONFIG_M586 is not set
195# CONFIG_M586TSC is not set
196# CONFIG_M586MMX is not set
197# CONFIG_M686 is not set
198# CONFIG_MPENTIUMII is not set
199# CONFIG_MPENTIUMIII is not set
200# CONFIG_MPENTIUMM is not set
201# CONFIG_MPENTIUM4 is not set
202# CONFIG_MK6 is not set
203# CONFIG_MK7 is not set
120# CONFIG_MK8 is not set 204# CONFIG_MK8 is not set
205# CONFIG_MCRUSOE is not set
206# CONFIG_MEFFICEON is not set
207# CONFIG_MWINCHIPC6 is not set
208# CONFIG_MWINCHIP2 is not set
209# CONFIG_MWINCHIP3D is not set
210# CONFIG_MGEODEGX1 is not set
211# CONFIG_MGEODE_LX is not set
212# CONFIG_MCYRIXIII is not set
213# CONFIG_MVIAC3_2 is not set
214# CONFIG_MVIAC7 is not set
121# CONFIG_MPSC is not set 215# CONFIG_MPSC is not set
122# CONFIG_MCORE2 is not set 216CONFIG_MCORE2=y
123CONFIG_GENERIC_CPU=y 217# CONFIG_GENERIC_CPU is not set
124CONFIG_X86_L1_CACHE_BYTES=128 218CONFIG_X86_CPU=y
125CONFIG_X86_L1_CACHE_SHIFT=7 219CONFIG_X86_L1_CACHE_BYTES=64
126CONFIG_X86_INTERNODE_CACHE_BYTES=128 220CONFIG_X86_INTERNODE_CACHE_BYTES=64
127CONFIG_X86_TSC=y 221CONFIG_X86_CMPXCHG=y
222CONFIG_X86_L1_CACHE_SHIFT=6
128CONFIG_X86_GOOD_APIC=y 223CONFIG_X86_GOOD_APIC=y
129# CONFIG_MICROCODE is not set 224CONFIG_X86_INTEL_USERCOPY=y
130CONFIG_X86_MSR=y 225CONFIG_X86_USE_PPRO_CHECKSUM=y
131CONFIG_X86_CPUID=y 226CONFIG_X86_P6_NOP=y
132CONFIG_X86_HT=y 227CONFIG_X86_TSC=y
133CONFIG_X86_IO_APIC=y 228CONFIG_X86_CMOV=y
134CONFIG_X86_LOCAL_APIC=y 229CONFIG_X86_MINIMUM_CPU_FAMILY=64
135CONFIG_MTRR=y 230CONFIG_X86_DEBUGCTLMSR=y
136CONFIG_SMP=y 231CONFIG_HPET_TIMER=y
137CONFIG_SCHED_SMT=y 232CONFIG_HPET_EMULATE_RTC=y
233CONFIG_DMI=y
234CONFIG_GART_IOMMU=y
235CONFIG_CALGARY_IOMMU=y
236CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
237CONFIG_SWIOTLB=y
238CONFIG_IOMMU_HELPER=y
239CONFIG_NR_CPUS=4
240# CONFIG_SCHED_SMT is not set
138CONFIG_SCHED_MC=y 241CONFIG_SCHED_MC=y
139# CONFIG_PREEMPT_NONE is not set 242# CONFIG_PREEMPT_NONE is not set
140CONFIG_PREEMPT_VOLUNTARY=y 243CONFIG_PREEMPT_VOLUNTARY=y
141# CONFIG_PREEMPT is not set 244# CONFIG_PREEMPT is not set
142CONFIG_PREEMPT_BKL=y 245CONFIG_X86_LOCAL_APIC=y
246CONFIG_X86_IO_APIC=y
247# CONFIG_X86_MCE is not set
248# CONFIG_I8K is not set
249# CONFIG_MICROCODE is not set
250CONFIG_X86_MSR=y
251CONFIG_X86_CPUID=y
143CONFIG_NUMA=y 252CONFIG_NUMA=y
144CONFIG_K8_NUMA=y 253CONFIG_K8_NUMA=y
145CONFIG_NODES_SHIFT=6
146CONFIG_X86_64_ACPI_NUMA=y 254CONFIG_X86_64_ACPI_NUMA=y
147CONFIG_NUMA_EMU=y 255CONFIG_NODES_SPAN_OTHER_NODES=y
256# CONFIG_NUMA_EMU is not set
257CONFIG_NODES_SHIFT=6
258CONFIG_ARCH_SPARSEMEM_DEFAULT=y
259CONFIG_ARCH_SPARSEMEM_ENABLE=y
260CONFIG_ARCH_SELECT_MEMORY_MODEL=y
261CONFIG_SELECT_MEMORY_MODEL=y
262# CONFIG_FLATMEM_MANUAL is not set
263# CONFIG_DISCONTIGMEM_MANUAL is not set
264CONFIG_SPARSEMEM_MANUAL=y
265CONFIG_SPARSEMEM=y
148CONFIG_NEED_MULTIPLE_NODES=y 266CONFIG_NEED_MULTIPLE_NODES=y
267CONFIG_HAVE_MEMORY_PRESENT=y
149# CONFIG_SPARSEMEM_STATIC is not set 268# CONFIG_SPARSEMEM_STATIC is not set
269CONFIG_SPARSEMEM_EXTREME=y
270CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
271CONFIG_SPARSEMEM_VMEMMAP=y
272
273#
274# Memory hotplug is currently incompatible with Software Suspend
275#
276CONFIG_PAGEFLAGS_EXTENDED=y
150CONFIG_SPLIT_PTLOCK_CPUS=4 277CONFIG_SPLIT_PTLOCK_CPUS=4
151CONFIG_MIGRATION=y 278CONFIG_MIGRATION=y
152CONFIG_RESOURCES_64BIT=y 279CONFIG_RESOURCES_64BIT=y
153CONFIG_ZONE_DMA_FLAG=1 280CONFIG_ZONE_DMA_FLAG=1
154CONFIG_BOUNCE=y 281CONFIG_BOUNCE=y
155CONFIG_VIRT_TO_BUS=y 282CONFIG_VIRT_TO_BUS=y
156CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y 283CONFIG_MTRR=y
157CONFIG_OUT_OF_LINE_PFN_TO_PAGE=y 284# CONFIG_X86_PAT is not set
158CONFIG_NR_CPUS=32 285CONFIG_EFI=y
159CONFIG_PHYSICAL_ALIGN=0x200000
160CONFIG_HOTPLUG_CPU=y
161CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
162CONFIG_HPET_TIMER=y
163CONFIG_HPET_EMULATE_RTC=y
164CONFIG_GART_IOMMU=y
165# CONFIG_CALGARY_IOMMU is not set
166CONFIG_SWIOTLB=y
167CONFIG_X86_MCE=y
168CONFIG_X86_MCE_INTEL=y
169CONFIG_X86_MCE_AMD=y
170# CONFIG_KEXEC is not set
171# CONFIG_CRASH_DUMP is not set
172# CONFIG_RELOCATABLE is not set
173CONFIG_PHYSICAL_START=0x200000
174CONFIG_SECCOMP=y 286CONFIG_SECCOMP=y
175# CONFIG_CC_STACKPROTECTOR is not set
176# CONFIG_HZ_100 is not set 287# CONFIG_HZ_100 is not set
177CONFIG_HZ_250=y 288# CONFIG_HZ_250 is not set
178# CONFIG_HZ_300 is not set 289# CONFIG_HZ_300 is not set
179# CONFIG_HZ_1000 is not set 290CONFIG_HZ_1000=y
180CONFIG_HZ=250 291CONFIG_HZ=1000
181CONFIG_K8_NB=y 292CONFIG_SCHED_HRTICK=y
182CONFIG_GENERIC_HARDIRQS=y 293CONFIG_KEXEC=y
183CONFIG_GENERIC_IRQ_PROBE=y 294CONFIG_CRASH_DUMP=y
184CONFIG_ISA_DMA_API=y 295CONFIG_PHYSICAL_START=0x1000000
185CONFIG_GENERIC_PENDING_IRQ=y 296CONFIG_RELOCATABLE=y
297CONFIG_PHYSICAL_ALIGN=0x200000
298CONFIG_HOTPLUG_CPU=y
299# CONFIG_COMPAT_VDSO is not set
300CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
301CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
186 302
187# 303#
188# Power management options 304# Power management options
189# 305#
306CONFIG_ARCH_HIBERNATION_HEADER=y
190CONFIG_PM=y 307CONFIG_PM=y
191# CONFIG_PM_LEGACY is not set 308CONFIG_PM_DEBUG=y
192# CONFIG_PM_DEBUG is not set 309# CONFIG_PM_VERBOSE is not set
310CONFIG_CAN_PM_TRACE=y
311CONFIG_PM_TRACE=y
312CONFIG_PM_TRACE_RTC=y
313CONFIG_PM_SLEEP_SMP=y
314CONFIG_PM_SLEEP=y
315CONFIG_SUSPEND=y
316CONFIG_SUSPEND_FREEZER=y
193CONFIG_HIBERNATION=y 317CONFIG_HIBERNATION=y
194CONFIG_PM_STD_PARTITION="" 318CONFIG_PM_STD_PARTITION=""
195
196#
197# ACPI (Advanced Configuration and Power Interface) Support
198#
199CONFIG_ACPI=y 319CONFIG_ACPI=y
200CONFIG_ACPI_SLEEP=y 320CONFIG_ACPI_SLEEP=y
201CONFIG_ACPI_SLEEP_PROC_FS=y
202CONFIG_ACPI_SLEEP_PROC_SLEEP=y
203CONFIG_ACPI_PROCFS=y 321CONFIG_ACPI_PROCFS=y
322CONFIG_ACPI_PROCFS_POWER=y
323CONFIG_ACPI_SYSFS_POWER=y
324CONFIG_ACPI_PROC_EVENT=y
204CONFIG_ACPI_AC=y 325CONFIG_ACPI_AC=y
205CONFIG_ACPI_BATTERY=y 326CONFIG_ACPI_BATTERY=y
206CONFIG_ACPI_BUTTON=y 327CONFIG_ACPI_BUTTON=y
207CONFIG_ACPI_FAN=y 328CONFIG_ACPI_FAN=y
208# CONFIG_ACPI_DOCK is not set 329CONFIG_ACPI_DOCK=y
330# CONFIG_ACPI_BAY is not set
209CONFIG_ACPI_PROCESSOR=y 331CONFIG_ACPI_PROCESSOR=y
210CONFIG_ACPI_HOTPLUG_CPU=y 332CONFIG_ACPI_HOTPLUG_CPU=y
211CONFIG_ACPI_THERMAL=y 333CONFIG_ACPI_THERMAL=y
212CONFIG_ACPI_NUMA=y 334CONFIG_ACPI_NUMA=y
335# CONFIG_ACPI_WMI is not set
213# CONFIG_ACPI_ASUS is not set 336# CONFIG_ACPI_ASUS is not set
214# CONFIG_ACPI_TOSHIBA is not set 337# CONFIG_ACPI_TOSHIBA is not set
338# CONFIG_ACPI_CUSTOM_DSDT is not set
215CONFIG_ACPI_BLACKLIST_YEAR=0 339CONFIG_ACPI_BLACKLIST_YEAR=0
216# CONFIG_ACPI_DEBUG is not set 340# CONFIG_ACPI_DEBUG is not set
217CONFIG_ACPI_EC=y 341CONFIG_ACPI_EC=y
@@ -227,29 +351,34 @@ CONFIG_ACPI_CONTAINER=y
227CONFIG_CPU_FREQ=y 351CONFIG_CPU_FREQ=y
228CONFIG_CPU_FREQ_TABLE=y 352CONFIG_CPU_FREQ_TABLE=y
229CONFIG_CPU_FREQ_DEBUG=y 353CONFIG_CPU_FREQ_DEBUG=y
230CONFIG_CPU_FREQ_STAT=y 354# CONFIG_CPU_FREQ_STAT is not set
231# CONFIG_CPU_FREQ_STAT_DETAILS is not set 355# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
232CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 356# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
233# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 357CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
358# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
359# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
234CONFIG_CPU_FREQ_GOV_PERFORMANCE=y 360CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
235# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set 361# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
236CONFIG_CPU_FREQ_GOV_USERSPACE=y 362CONFIG_CPU_FREQ_GOV_USERSPACE=y
237CONFIG_CPU_FREQ_GOV_ONDEMAND=y 363CONFIG_CPU_FREQ_GOV_ONDEMAND=y
238CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y 364# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
239 365
240# 366#
241# CPUFreq processor drivers 367# CPUFreq processor drivers
242# 368#
243CONFIG_X86_POWERNOW_K8=y
244CONFIG_X86_POWERNOW_K8_ACPI=y
245# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
246CONFIG_X86_ACPI_CPUFREQ=y 369CONFIG_X86_ACPI_CPUFREQ=y
370# CONFIG_X86_POWERNOW_K8 is not set
371# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
372# CONFIG_X86_P4_CLOCKMOD is not set
247 373
248# 374#
249# shared options 375# shared options
250# 376#
251CONFIG_X86_ACPI_CPUFREQ_PROC_INTF=y 377# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
252# CONFIG_X86_SPEEDSTEP_LIB is not set 378# CONFIG_X86_SPEEDSTEP_LIB is not set
379CONFIG_CPU_IDLE=y
380CONFIG_CPU_IDLE_GOV_LADDER=y
381CONFIG_CPU_IDLE_GOV_MENU=y
253 382
254# 383#
255# Bus options (PCI etc.) 384# Bus options (PCI etc.)
@@ -257,27 +386,56 @@ CONFIG_X86_ACPI_CPUFREQ_PROC_INTF=y
257CONFIG_PCI=y 386CONFIG_PCI=y
258CONFIG_PCI_DIRECT=y 387CONFIG_PCI_DIRECT=y
259CONFIG_PCI_MMCONFIG=y 388CONFIG_PCI_MMCONFIG=y
389CONFIG_PCI_DOMAINS=y
390CONFIG_DMAR=y
391CONFIG_DMAR_GFX_WA=y
392CONFIG_DMAR_FLOPPY_WA=y
260CONFIG_PCIEPORTBUS=y 393CONFIG_PCIEPORTBUS=y
394# CONFIG_HOTPLUG_PCI_PCIE is not set
261CONFIG_PCIEAER=y 395CONFIG_PCIEAER=y
396# CONFIG_PCIEASPM is not set
262CONFIG_ARCH_SUPPORTS_MSI=y 397CONFIG_ARCH_SUPPORTS_MSI=y
263CONFIG_PCI_MSI=y 398CONFIG_PCI_MSI=y
399# CONFIG_PCI_LEGACY is not set
264# CONFIG_PCI_DEBUG is not set 400# CONFIG_PCI_DEBUG is not set
265# CONFIG_HT_IRQ is not set 401CONFIG_HT_IRQ=y
266 402CONFIG_ISA_DMA_API=y
267# 403CONFIG_K8_NB=y
268# PCCARD (PCMCIA/CardBus) support 404CONFIG_PCCARD=y
269# 405# CONFIG_PCMCIA_DEBUG is not set
270# CONFIG_PCCARD is not set 406CONFIG_PCMCIA=y
271# CONFIG_HOTPLUG_PCI is not set 407CONFIG_PCMCIA_LOAD_CIS=y
408CONFIG_PCMCIA_IOCTL=y
409CONFIG_CARDBUS=y
410
411#
412# PC-card bridges
413#
414CONFIG_YENTA=y
415CONFIG_YENTA_O2=y
416CONFIG_YENTA_RICOH=y
417CONFIG_YENTA_TI=y
418CONFIG_YENTA_ENE_TUNE=y
419CONFIG_YENTA_TOSHIBA=y
420# CONFIG_PD6729 is not set
421# CONFIG_I82092 is not set
422CONFIG_PCCARD_NONSTATIC=y
423CONFIG_HOTPLUG_PCI=y
424# CONFIG_HOTPLUG_PCI_FAKE is not set
425# CONFIG_HOTPLUG_PCI_ACPI is not set
426# CONFIG_HOTPLUG_PCI_CPCI is not set
427# CONFIG_HOTPLUG_PCI_SHPC is not set
272 428
273# 429#
274# Executable file formats / Emulations 430# Executable file formats / Emulations
275# 431#
276CONFIG_BINFMT_ELF=y 432CONFIG_BINFMT_ELF=y
277# CONFIG_BINFMT_MISC is not set 433CONFIG_COMPAT_BINFMT_ELF=y
434CONFIG_BINFMT_MISC=y
278CONFIG_IA32_EMULATION=y 435CONFIG_IA32_EMULATION=y
279CONFIG_IA32_AOUT=y 436# CONFIG_IA32_AOUT is not set
280CONFIG_COMPAT=y 437CONFIG_COMPAT=y
438CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
281CONFIG_SYSVIPC_COMPAT=y 439CONFIG_SYSVIPC_COMPAT=y
282 440
283# 441#
@@ -289,22 +447,31 @@ CONFIG_NET=y
289# Networking options 447# Networking options
290# 448#
291CONFIG_PACKET=y 449CONFIG_PACKET=y
292# CONFIG_PACKET_MMAP is not set 450CONFIG_PACKET_MMAP=y
293CONFIG_UNIX=y 451CONFIG_UNIX=y
452CONFIG_XFRM=y
453CONFIG_XFRM_USER=y
454# CONFIG_XFRM_SUB_POLICY is not set
455# CONFIG_XFRM_MIGRATE is not set
456# CONFIG_XFRM_STATISTICS is not set
294# CONFIG_NET_KEY is not set 457# CONFIG_NET_KEY is not set
295CONFIG_INET=y 458CONFIG_INET=y
296CONFIG_IP_MULTICAST=y 459CONFIG_IP_MULTICAST=y
297# CONFIG_IP_ADVANCED_ROUTER is not set 460CONFIG_IP_ADVANCED_ROUTER=y
461CONFIG_ASK_IP_FIB_HASH=y
462# CONFIG_IP_FIB_TRIE is not set
298CONFIG_IP_FIB_HASH=y 463CONFIG_IP_FIB_HASH=y
299CONFIG_IP_PNP=y 464CONFIG_IP_MULTIPLE_TABLES=y
300CONFIG_IP_PNP_DHCP=y 465CONFIG_IP_ROUTE_MULTIPATH=y
301# CONFIG_IP_PNP_BOOTP is not set 466CONFIG_IP_ROUTE_VERBOSE=y
302# CONFIG_IP_PNP_RARP is not set 467# CONFIG_IP_PNP is not set
303# CONFIG_NET_IPIP is not set 468# CONFIG_NET_IPIP is not set
304# CONFIG_NET_IPGRE is not set 469# CONFIG_NET_IPGRE is not set
305# CONFIG_IP_MROUTE is not set 470CONFIG_IP_MROUTE=y
471CONFIG_IP_PIMSM_V1=y
472CONFIG_IP_PIMSM_V2=y
306# CONFIG_ARPD is not set 473# CONFIG_ARPD is not set
307# CONFIG_SYN_COOKIES is not set 474CONFIG_SYN_COOKIES=y
308# CONFIG_INET_AH is not set 475# CONFIG_INET_AH is not set
309# CONFIG_INET_ESP is not set 476# CONFIG_INET_ESP is not set
310# CONFIG_INET_IPCOMP is not set 477# CONFIG_INET_IPCOMP is not set
@@ -313,31 +480,109 @@ CONFIG_INET_TUNNEL=y
313# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 480# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
314# CONFIG_INET_XFRM_MODE_TUNNEL is not set 481# CONFIG_INET_XFRM_MODE_TUNNEL is not set
315# CONFIG_INET_XFRM_MODE_BEET is not set 482# CONFIG_INET_XFRM_MODE_BEET is not set
316CONFIG_INET_DIAG=y 483CONFIG_INET_LRO=y
317CONFIG_INET_TCP_DIAG=y 484# CONFIG_INET_DIAG is not set
318# CONFIG_TCP_CONG_ADVANCED is not set 485CONFIG_TCP_CONG_ADVANCED=y
486# CONFIG_TCP_CONG_BIC is not set
319CONFIG_TCP_CONG_CUBIC=y 487CONFIG_TCP_CONG_CUBIC=y
488# CONFIG_TCP_CONG_WESTWOOD is not set
489# CONFIG_TCP_CONG_HTCP is not set
490# CONFIG_TCP_CONG_HSTCP is not set
491# CONFIG_TCP_CONG_HYBLA is not set
492# CONFIG_TCP_CONG_VEGAS is not set
493# CONFIG_TCP_CONG_SCALABLE is not set
494# CONFIG_TCP_CONG_LP is not set
495# CONFIG_TCP_CONG_VENO is not set
496# CONFIG_TCP_CONG_YEAH is not set
497# CONFIG_TCP_CONG_ILLINOIS is not set
498# CONFIG_DEFAULT_BIC is not set
499CONFIG_DEFAULT_CUBIC=y
500# CONFIG_DEFAULT_HTCP is not set
501# CONFIG_DEFAULT_VEGAS is not set
502# CONFIG_DEFAULT_WESTWOOD is not set
503# CONFIG_DEFAULT_RENO is not set
320CONFIG_DEFAULT_TCP_CONG="cubic" 504CONFIG_DEFAULT_TCP_CONG="cubic"
321# CONFIG_TCP_MD5SIG is not set 505CONFIG_TCP_MD5SIG=y
506# CONFIG_IP_VS is not set
322CONFIG_IPV6=y 507CONFIG_IPV6=y
323# CONFIG_IPV6_PRIVACY is not set 508# CONFIG_IPV6_PRIVACY is not set
324# CONFIG_IPV6_ROUTER_PREF is not set 509# CONFIG_IPV6_ROUTER_PREF is not set
325# CONFIG_IPV6_OPTIMISTIC_DAD is not set 510# CONFIG_IPV6_OPTIMISTIC_DAD is not set
326# CONFIG_INET6_AH is not set 511CONFIG_INET6_AH=y
327# CONFIG_INET6_ESP is not set 512CONFIG_INET6_ESP=y
328# CONFIG_INET6_IPCOMP is not set 513# CONFIG_INET6_IPCOMP is not set
329# CONFIG_IPV6_MIP6 is not set 514# CONFIG_IPV6_MIP6 is not set
330# CONFIG_INET6_XFRM_TUNNEL is not set 515# CONFIG_INET6_XFRM_TUNNEL is not set
331# CONFIG_INET6_TUNNEL is not set 516# CONFIG_INET6_TUNNEL is not set
332# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set 517CONFIG_INET6_XFRM_MODE_TRANSPORT=y
333# CONFIG_INET6_XFRM_MODE_TUNNEL is not set 518CONFIG_INET6_XFRM_MODE_TUNNEL=y
334# CONFIG_INET6_XFRM_MODE_BEET is not set 519CONFIG_INET6_XFRM_MODE_BEET=y
335# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 520# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
336CONFIG_IPV6_SIT=y 521CONFIG_IPV6_SIT=y
522CONFIG_IPV6_NDISC_NODETYPE=y
337# CONFIG_IPV6_TUNNEL is not set 523# CONFIG_IPV6_TUNNEL is not set
338# CONFIG_IPV6_MULTIPLE_TABLES is not set 524# CONFIG_IPV6_MULTIPLE_TABLES is not set
339# CONFIG_NETWORK_SECMARK is not set 525# CONFIG_IPV6_MROUTE is not set
340# CONFIG_NETFILTER is not set 526CONFIG_NETLABEL=y
527CONFIG_NETWORK_SECMARK=y
528CONFIG_NETFILTER=y
529# CONFIG_NETFILTER_DEBUG is not set
530# CONFIG_NETFILTER_ADVANCED is not set
531
532#
533# Core Netfilter Configuration
534#
535CONFIG_NETFILTER_NETLINK=y
536CONFIG_NETFILTER_NETLINK_LOG=y
537CONFIG_NF_CONNTRACK=y
538CONFIG_NF_CONNTRACK_SECMARK=y
539CONFIG_NF_CONNTRACK_FTP=y
540CONFIG_NF_CONNTRACK_IRC=y
541CONFIG_NF_CONNTRACK_SIP=y
542CONFIG_NF_CT_NETLINK=y
543CONFIG_NETFILTER_XTABLES=y
544CONFIG_NETFILTER_XT_TARGET_MARK=y
545CONFIG_NETFILTER_XT_TARGET_NFLOG=y
546CONFIG_NETFILTER_XT_TARGET_SECMARK=y
547CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
548CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
549CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
550CONFIG_NETFILTER_XT_MATCH_MARK=y
551CONFIG_NETFILTER_XT_MATCH_POLICY=y
552CONFIG_NETFILTER_XT_MATCH_STATE=y
553
554#
555# IP: Netfilter Configuration
556#
557CONFIG_NF_CONNTRACK_IPV4=y
558CONFIG_NF_CONNTRACK_PROC_COMPAT=y
559CONFIG_IP_NF_IPTABLES=y
560CONFIG_IP_NF_FILTER=y
561CONFIG_IP_NF_TARGET_REJECT=y
562CONFIG_IP_NF_TARGET_LOG=y
563CONFIG_IP_NF_TARGET_ULOG=y
564CONFIG_NF_NAT=y
565CONFIG_NF_NAT_NEEDED=y
566CONFIG_IP_NF_TARGET_MASQUERADE=y
567CONFIG_NF_NAT_FTP=y
568CONFIG_NF_NAT_IRC=y
569# CONFIG_NF_NAT_TFTP is not set
570# CONFIG_NF_NAT_AMANDA is not set
571# CONFIG_NF_NAT_PPTP is not set
572# CONFIG_NF_NAT_H323 is not set
573CONFIG_NF_NAT_SIP=y
574CONFIG_IP_NF_MANGLE=y
575
576#
577# IPv6: Netfilter Configuration
578#
579CONFIG_NF_CONNTRACK_IPV6=y
580CONFIG_IP6_NF_IPTABLES=y
581CONFIG_IP6_NF_MATCH_IPV6HEADER=y
582CONFIG_IP6_NF_FILTER=y
583CONFIG_IP6_NF_TARGET_LOG=y
584CONFIG_IP6_NF_TARGET_REJECT=y
585CONFIG_IP6_NF_MANGLE=y
341# CONFIG_IP_DCCP is not set 586# CONFIG_IP_DCCP is not set
342# CONFIG_IP_SCTP is not set 587# CONFIG_IP_SCTP is not set
343# CONFIG_TIPC is not set 588# CONFIG_TIPC is not set
@@ -345,6 +590,7 @@ CONFIG_IPV6_SIT=y
345# CONFIG_BRIDGE is not set 590# CONFIG_BRIDGE is not set
346# CONFIG_VLAN_8021Q is not set 591# CONFIG_VLAN_8021Q is not set
347# CONFIG_DECNET is not set 592# CONFIG_DECNET is not set
593CONFIG_LLC=y
348# CONFIG_LLC2 is not set 594# CONFIG_LLC2 is not set
349# CONFIG_IPX is not set 595# CONFIG_IPX is not set
350# CONFIG_ATALK is not set 596# CONFIG_ATALK is not set
@@ -352,28 +598,99 @@ CONFIG_IPV6_SIT=y
352# CONFIG_LAPB is not set 598# CONFIG_LAPB is not set
353# CONFIG_ECONET is not set 599# CONFIG_ECONET is not set
354# CONFIG_WAN_ROUTER is not set 600# CONFIG_WAN_ROUTER is not set
355 601CONFIG_NET_SCHED=y
356# 602
357# QoS and/or fair queueing 603#
358# 604# Queueing/Scheduling
359# CONFIG_NET_SCHED is not set 605#
606# CONFIG_NET_SCH_CBQ is not set
607# CONFIG_NET_SCH_HTB is not set
608# CONFIG_NET_SCH_HFSC is not set
609# CONFIG_NET_SCH_PRIO is not set
610# CONFIG_NET_SCH_RR is not set
611# CONFIG_NET_SCH_RED is not set
612# CONFIG_NET_SCH_SFQ is not set
613# CONFIG_NET_SCH_TEQL is not set
614# CONFIG_NET_SCH_TBF is not set
615# CONFIG_NET_SCH_GRED is not set
616# CONFIG_NET_SCH_DSMARK is not set
617# CONFIG_NET_SCH_NETEM is not set
618# CONFIG_NET_SCH_INGRESS is not set
619
620#
621# Classification
622#
623CONFIG_NET_CLS=y
624# CONFIG_NET_CLS_BASIC is not set
625# CONFIG_NET_CLS_TCINDEX is not set
626# CONFIG_NET_CLS_ROUTE4 is not set
627# CONFIG_NET_CLS_FW is not set
628# CONFIG_NET_CLS_U32 is not set
629# CONFIG_NET_CLS_RSVP is not set
630# CONFIG_NET_CLS_RSVP6 is not set
631# CONFIG_NET_CLS_FLOW is not set
632CONFIG_NET_EMATCH=y
633CONFIG_NET_EMATCH_STACK=32
634# CONFIG_NET_EMATCH_CMP is not set
635# CONFIG_NET_EMATCH_NBYTE is not set
636# CONFIG_NET_EMATCH_U32 is not set
637# CONFIG_NET_EMATCH_META is not set
638# CONFIG_NET_EMATCH_TEXT is not set
639CONFIG_NET_CLS_ACT=y
640# CONFIG_NET_ACT_POLICE is not set
641# CONFIG_NET_ACT_GACT is not set
642# CONFIG_NET_ACT_MIRRED is not set
643# CONFIG_NET_ACT_IPT is not set
644# CONFIG_NET_ACT_NAT is not set
645# CONFIG_NET_ACT_PEDIT is not set
646# CONFIG_NET_ACT_SIMP is not set
647CONFIG_NET_SCH_FIFO=y
360 648
361# 649#
362# Network testing 650# Network testing
363# 651#
364# CONFIG_NET_PKTGEN is not set 652# CONFIG_NET_PKTGEN is not set
365# CONFIG_NET_TCPPROBE is not set 653# CONFIG_NET_TCPPROBE is not set
366# CONFIG_HAMRADIO is not set 654CONFIG_HAMRADIO=y
655
656#
657# Packet Radio protocols
658#
659# CONFIG_AX25 is not set
660# CONFIG_CAN is not set
367# CONFIG_IRDA is not set 661# CONFIG_IRDA is not set
368# CONFIG_BT is not set 662# CONFIG_BT is not set
369# CONFIG_AF_RXRPC is not set 663# CONFIG_AF_RXRPC is not set
664CONFIG_FIB_RULES=y
370 665
371# 666#
372# Wireless 667# Wireless
373# 668#
374# CONFIG_CFG80211 is not set 669CONFIG_CFG80211=y
375# CONFIG_WIRELESS_EXT is not set 670CONFIG_NL80211=y
376# CONFIG_MAC80211 is not set 671CONFIG_WIRELESS_EXT=y
672CONFIG_MAC80211=y
673
674#
675# Rate control algorithm selection
676#
677CONFIG_MAC80211_RC_DEFAULT_PID=y
678# CONFIG_MAC80211_RC_DEFAULT_NONE is not set
679
680#
681# Selecting 'y' for an algorithm will
682#
683
684#
685# build the algorithm into mac80211.
686#
687CONFIG_MAC80211_RC_DEFAULT="pid"
688CONFIG_MAC80211_RC_PID=y
689# CONFIG_MAC80211_MESH is not set
690CONFIG_MAC80211_LEDS=y
691# CONFIG_MAC80211_DEBUGFS is not set
692# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
693# CONFIG_MAC80211_DEBUG is not set
377# CONFIG_IEEE80211 is not set 694# CONFIG_IEEE80211 is not set
378# CONFIG_RFKILL is not set 695# CONFIG_RFKILL is not set
379# CONFIG_NET_9P is not set 696# CONFIG_NET_9P is not set
@@ -385,13 +702,15 @@ CONFIG_IPV6_SIT=y
385# 702#
386# Generic Driver Options 703# Generic Driver Options
387# 704#
705CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
388CONFIG_STANDALONE=y 706CONFIG_STANDALONE=y
389CONFIG_PREVENT_FIRMWARE_BUILD=y 707CONFIG_PREVENT_FIRMWARE_BUILD=y
390CONFIG_FW_LOADER=y 708CONFIG_FW_LOADER=y
391# CONFIG_DEBUG_DRIVER is not set 709# CONFIG_DEBUG_DRIVER is not set
392# CONFIG_DEBUG_DEVRES is not set 710CONFIG_DEBUG_DEVRES=y
393# CONFIG_SYS_HYPERVISOR is not set 711# CONFIG_SYS_HYPERVISOR is not set
394# CONFIG_CONNECTOR is not set 712CONFIG_CONNECTOR=y
713CONFIG_PROC_EVENTS=y
395# CONFIG_MTD is not set 714# CONFIG_MTD is not set
396# CONFIG_PARPORT is not set 715# CONFIG_PARPORT is not set
397CONFIG_PNP=y 716CONFIG_PNP=y
@@ -402,7 +721,7 @@ CONFIG_PNP=y
402# 721#
403CONFIG_PNPACPI=y 722CONFIG_PNPACPI=y
404CONFIG_BLK_DEV=y 723CONFIG_BLK_DEV=y
405CONFIG_BLK_DEV_FD=y 724# CONFIG_BLK_DEV_FD is not set
406# CONFIG_BLK_CPQ_DA is not set 725# CONFIG_BLK_CPQ_DA is not set
407# CONFIG_BLK_CPQ_CISS_DA is not set 726# CONFIG_BLK_CPQ_CISS_DA is not set
408# CONFIG_BLK_DEV_DAC960 is not set 727# CONFIG_BLK_DEV_DAC960 is not set
@@ -415,8 +734,8 @@ CONFIG_BLK_DEV_LOOP=y
415# CONFIG_BLK_DEV_UB is not set 734# CONFIG_BLK_DEV_UB is not set
416CONFIG_BLK_DEV_RAM=y 735CONFIG_BLK_DEV_RAM=y
417CONFIG_BLK_DEV_RAM_COUNT=16 736CONFIG_BLK_DEV_RAM_COUNT=16
418CONFIG_BLK_DEV_RAM_SIZE=4096 737CONFIG_BLK_DEV_RAM_SIZE=16384
419CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 738# CONFIG_BLK_DEV_XIP is not set
420# CONFIG_CDROM_PKTCDVD is not set 739# CONFIG_CDROM_PKTCDVD is not set
421# CONFIG_ATA_OVER_ETH is not set 740# CONFIG_ATA_OVER_ETH is not set
422CONFIG_MISC_DEVICES=y 741CONFIG_MISC_DEVICES=y
@@ -425,72 +744,16 @@ CONFIG_MISC_DEVICES=y
425# CONFIG_EEPROM_93CX6 is not set 744# CONFIG_EEPROM_93CX6 is not set
426# CONFIG_SGI_IOC4 is not set 745# CONFIG_SGI_IOC4 is not set
427# CONFIG_TIFM_CORE is not set 746# CONFIG_TIFM_CORE is not set
747# CONFIG_ACER_WMI is not set
748# CONFIG_ASUS_LAPTOP is not set
749# CONFIG_FUJITSU_LAPTOP is not set
750# CONFIG_MSI_LAPTOP is not set
428# CONFIG_SONY_LAPTOP is not set 751# CONFIG_SONY_LAPTOP is not set
429# CONFIG_THINKPAD_ACPI is not set 752# CONFIG_THINKPAD_ACPI is not set
430CONFIG_IDE=y 753# CONFIG_INTEL_MENLOW is not set
431CONFIG_BLK_DEV_IDE=y 754# CONFIG_ENCLOSURE_SERVICES is not set
432 755CONFIG_HAVE_IDE=y
433# 756# CONFIG_IDE is not set
434# Please see Documentation/ide.txt for help/info on IDE drives
435#
436# CONFIG_BLK_DEV_IDE_SATA is not set
437# CONFIG_BLK_DEV_HD_IDE is not set
438CONFIG_BLK_DEV_IDEDISK=y
439CONFIG_IDEDISK_MULTI_MODE=y
440CONFIG_BLK_DEV_IDECD=y
441# CONFIG_BLK_DEV_IDETAPE is not set
442# CONFIG_BLK_DEV_IDEFLOPPY is not set
443# CONFIG_BLK_DEV_IDESCSI is not set
444CONFIG_BLK_DEV_IDEACPI=y
445# CONFIG_IDE_TASK_IOCTL is not set
446CONFIG_IDE_PROC_FS=y
447
448#
449# IDE chipset support/bugfixes
450#
451CONFIG_IDE_GENERIC=y
452# CONFIG_BLK_DEV_CMD640 is not set
453# CONFIG_BLK_DEV_IDEPNP is not set
454CONFIG_BLK_DEV_IDEPCI=y
455# CONFIG_IDEPCI_SHARE_IRQ is not set
456CONFIG_IDEPCI_PCIBUS_ORDER=y
457# CONFIG_BLK_DEV_OFFBOARD is not set
458# CONFIG_BLK_DEV_GENERIC is not set
459# CONFIG_BLK_DEV_OPTI621 is not set
460# CONFIG_BLK_DEV_RZ1000 is not set
461CONFIG_BLK_DEV_IDEDMA_PCI=y
462# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
463# CONFIG_IDEDMA_ONLYDISK is not set
464# CONFIG_BLK_DEV_AEC62XX is not set
465# CONFIG_BLK_DEV_ALI15X3 is not set
466CONFIG_BLK_DEV_AMD74XX=y
467CONFIG_BLK_DEV_ATIIXP=y
468# CONFIG_BLK_DEV_CMD64X is not set
469# CONFIG_BLK_DEV_TRIFLEX is not set
470# CONFIG_BLK_DEV_CY82C693 is not set
471# CONFIG_BLK_DEV_CS5520 is not set
472# CONFIG_BLK_DEV_CS5530 is not set
473# CONFIG_BLK_DEV_HPT34X is not set
474# CONFIG_BLK_DEV_HPT366 is not set
475# CONFIG_BLK_DEV_JMICRON is not set
476# CONFIG_BLK_DEV_SC1200 is not set
477CONFIG_BLK_DEV_PIIX=y
478# CONFIG_BLK_DEV_IT8213 is not set
479# CONFIG_BLK_DEV_IT821X is not set
480# CONFIG_BLK_DEV_NS87415 is not set
481# CONFIG_BLK_DEV_PDC202XX_OLD is not set
482CONFIG_BLK_DEV_PDC202XX_NEW=y
483# CONFIG_BLK_DEV_SVWKS is not set
484# CONFIG_BLK_DEV_SIIMAGE is not set
485# CONFIG_BLK_DEV_SIS5513 is not set
486# CONFIG_BLK_DEV_SLC90E66 is not set
487# CONFIG_BLK_DEV_TRM290 is not set
488# CONFIG_BLK_DEV_VIA82CXXX is not set
489# CONFIG_BLK_DEV_TC86C001 is not set
490# CONFIG_IDE_ARM is not set
491CONFIG_BLK_DEV_IDEDMA=y
492# CONFIG_IDEDMA_IVB is not set
493# CONFIG_BLK_DEV_HD is not set
494 757
495# 758#
496# SCSI device support 759# SCSI device support
@@ -499,8 +762,8 @@ CONFIG_BLK_DEV_IDEDMA=y
499CONFIG_SCSI=y 762CONFIG_SCSI=y
500CONFIG_SCSI_DMA=y 763CONFIG_SCSI_DMA=y
501# CONFIG_SCSI_TGT is not set 764# CONFIG_SCSI_TGT is not set
502CONFIG_SCSI_NETLINK=y 765# CONFIG_SCSI_NETLINK is not set
503# CONFIG_SCSI_PROC_FS is not set 766CONFIG_SCSI_PROC_FS=y
504 767
505# 768#
506# SCSI support type (disk, tape, CD-ROM) 769# SCSI support type (disk, tape, CD-ROM)
@@ -509,7 +772,7 @@ CONFIG_BLK_DEV_SD=y
509# CONFIG_CHR_DEV_ST is not set 772# CONFIG_CHR_DEV_ST is not set
510# CONFIG_CHR_DEV_OSST is not set 773# CONFIG_CHR_DEV_OSST is not set
511CONFIG_BLK_DEV_SR=y 774CONFIG_BLK_DEV_SR=y
512# CONFIG_BLK_DEV_SR_VENDOR is not set 775CONFIG_BLK_DEV_SR_VENDOR=y
513CONFIG_CHR_DEV_SG=y 776CONFIG_CHR_DEV_SG=y
514# CONFIG_CHR_DEV_SCH is not set 777# CONFIG_CHR_DEV_SCH is not set
515 778
@@ -526,73 +789,37 @@ CONFIG_SCSI_WAIT_SCAN=m
526# SCSI Transports 789# SCSI Transports
527# 790#
528CONFIG_SCSI_SPI_ATTRS=y 791CONFIG_SCSI_SPI_ATTRS=y
529CONFIG_SCSI_FC_ATTRS=y 792# CONFIG_SCSI_FC_ATTRS is not set
530# CONFIG_SCSI_ISCSI_ATTRS is not set 793# CONFIG_SCSI_ISCSI_ATTRS is not set
531CONFIG_SCSI_SAS_ATTRS=y 794# CONFIG_SCSI_SAS_ATTRS is not set
532# CONFIG_SCSI_SAS_LIBSAS is not set 795# CONFIG_SCSI_SAS_LIBSAS is not set
533 796# CONFIG_SCSI_SRP_ATTRS is not set
534# 797# CONFIG_SCSI_LOWLEVEL is not set
535# SCSI low-level drivers 798# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
536#
537# CONFIG_ISCSI_TCP is not set
538# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
539# CONFIG_SCSI_3W_9XXX is not set
540# CONFIG_SCSI_ACARD is not set
541# CONFIG_SCSI_AACRAID is not set
542# CONFIG_SCSI_AIC7XXX is not set
543# CONFIG_SCSI_AIC7XXX_OLD is not set
544CONFIG_SCSI_AIC79XX=y
545CONFIG_AIC79XX_CMDS_PER_DEVICE=32
546CONFIG_AIC79XX_RESET_DELAY_MS=4000
547# CONFIG_AIC79XX_DEBUG_ENABLE is not set
548CONFIG_AIC79XX_DEBUG_MASK=0
549# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
550# CONFIG_SCSI_AIC94XX is not set
551# CONFIG_SCSI_ARCMSR is not set
552# CONFIG_MEGARAID_NEWGEN is not set
553# CONFIG_MEGARAID_LEGACY is not set
554# CONFIG_MEGARAID_SAS is not set
555# CONFIG_SCSI_HPTIOP is not set
556# CONFIG_SCSI_BUSLOGIC is not set
557# CONFIG_SCSI_DMX3191D is not set
558# CONFIG_SCSI_EATA is not set
559# CONFIG_SCSI_FUTURE_DOMAIN is not set
560# CONFIG_SCSI_GDTH is not set
561# CONFIG_SCSI_IPS is not set
562# CONFIG_SCSI_INITIO is not set
563# CONFIG_SCSI_INIA100 is not set
564# CONFIG_SCSI_STEX is not set
565# CONFIG_SCSI_SYM53C8XX_2 is not set
566# CONFIG_SCSI_IPR is not set
567# CONFIG_SCSI_QLOGIC_1280 is not set
568# CONFIG_SCSI_QLA_FC is not set
569# CONFIG_SCSI_QLA_ISCSI is not set
570# CONFIG_SCSI_LPFC is not set
571# CONFIG_SCSI_DC395x is not set
572# CONFIG_SCSI_DC390T is not set
573# CONFIG_SCSI_DEBUG is not set
574# CONFIG_SCSI_SRP is not set
575CONFIG_ATA=y 799CONFIG_ATA=y
576# CONFIG_ATA_NONSTANDARD is not set 800# CONFIG_ATA_NONSTANDARD is not set
577CONFIG_ATA_ACPI=y 801CONFIG_ATA_ACPI=y
802CONFIG_SATA_PMP=y
578CONFIG_SATA_AHCI=y 803CONFIG_SATA_AHCI=y
579CONFIG_SATA_SVW=y 804# CONFIG_SATA_SIL24 is not set
805CONFIG_ATA_SFF=y
806# CONFIG_SATA_SVW is not set
580CONFIG_ATA_PIIX=y 807CONFIG_ATA_PIIX=y
581# CONFIG_SATA_MV is not set 808# CONFIG_SATA_MV is not set
582CONFIG_SATA_NV=y 809# CONFIG_SATA_NV is not set
583# CONFIG_PDC_ADMA is not set 810# CONFIG_PDC_ADMA is not set
584# CONFIG_SATA_QSTOR is not set 811# CONFIG_SATA_QSTOR is not set
585# CONFIG_SATA_PROMISE is not set 812# CONFIG_SATA_PROMISE is not set
586# CONFIG_SATA_SX4 is not set 813# CONFIG_SATA_SX4 is not set
587CONFIG_SATA_SIL=y 814# CONFIG_SATA_SIL is not set
588# CONFIG_SATA_SIL24 is not set
589# CONFIG_SATA_SIS is not set 815# CONFIG_SATA_SIS is not set
590# CONFIG_SATA_ULI is not set 816# CONFIG_SATA_ULI is not set
591CONFIG_SATA_VIA=y 817# CONFIG_SATA_VIA is not set
592# CONFIG_SATA_VITESSE is not set 818# CONFIG_SATA_VITESSE is not set
593# CONFIG_SATA_INIC162X is not set 819# CONFIG_SATA_INIC162X is not set
820# CONFIG_PATA_ACPI is not set
594# CONFIG_PATA_ALI is not set 821# CONFIG_PATA_ALI is not set
595# CONFIG_PATA_AMD is not set 822CONFIG_PATA_AMD=y
596# CONFIG_PATA_ARTOP is not set 823# CONFIG_PATA_ARTOP is not set
597# CONFIG_PATA_ATIIXP is not set 824# CONFIG_PATA_ATIIXP is not set
598# CONFIG_PATA_CMD640_PCI is not set 825# CONFIG_PATA_CMD640_PCI is not set
@@ -612,11 +839,14 @@ CONFIG_SATA_VIA=y
612# CONFIG_PATA_TRIFLEX is not set 839# CONFIG_PATA_TRIFLEX is not set
613# CONFIG_PATA_MARVELL is not set 840# CONFIG_PATA_MARVELL is not set
614# CONFIG_PATA_MPIIX is not set 841# CONFIG_PATA_MPIIX is not set
615# CONFIG_PATA_OLDPIIX is not set 842CONFIG_PATA_OLDPIIX=y
616# CONFIG_PATA_NETCELL is not set 843# CONFIG_PATA_NETCELL is not set
844# CONFIG_PATA_NINJA32 is not set
617# CONFIG_PATA_NS87410 is not set 845# CONFIG_PATA_NS87410 is not set
846# CONFIG_PATA_NS87415 is not set
618# CONFIG_PATA_OPTI is not set 847# CONFIG_PATA_OPTI is not set
619# CONFIG_PATA_OPTIDMA is not set 848# CONFIG_PATA_OPTIDMA is not set
849# CONFIG_PATA_PCMCIA is not set
620# CONFIG_PATA_PDC_OLD is not set 850# CONFIG_PATA_PDC_OLD is not set
621# CONFIG_PATA_RADISYS is not set 851# CONFIG_PATA_RADISYS is not set
622# CONFIG_PATA_RZ1000 is not set 852# CONFIG_PATA_RZ1000 is not set
@@ -628,65 +858,42 @@ CONFIG_SATA_VIA=y
628# CONFIG_PATA_VIA is not set 858# CONFIG_PATA_VIA is not set
629# CONFIG_PATA_WINBOND is not set 859# CONFIG_PATA_WINBOND is not set
630CONFIG_MD=y 860CONFIG_MD=y
631# CONFIG_BLK_DEV_MD is not set 861CONFIG_BLK_DEV_MD=y
862# CONFIG_MD_LINEAR is not set
863# CONFIG_MD_RAID0 is not set
864# CONFIG_MD_RAID1 is not set
865# CONFIG_MD_RAID10 is not set
866# CONFIG_MD_RAID456 is not set
867# CONFIG_MD_MULTIPATH is not set
868# CONFIG_MD_FAULTY is not set
632CONFIG_BLK_DEV_DM=y 869CONFIG_BLK_DEV_DM=y
633# CONFIG_DM_DEBUG is not set 870# CONFIG_DM_DEBUG is not set
634# CONFIG_DM_CRYPT is not set 871# CONFIG_DM_CRYPT is not set
635# CONFIG_DM_SNAPSHOT is not set 872# CONFIG_DM_SNAPSHOT is not set
636# CONFIG_DM_MIRROR is not set 873CONFIG_DM_MIRROR=y
637# CONFIG_DM_ZERO is not set 874CONFIG_DM_ZERO=y
638# CONFIG_DM_MULTIPATH is not set 875# CONFIG_DM_MULTIPATH is not set
639# CONFIG_DM_DELAY is not set 876# CONFIG_DM_DELAY is not set
640 877# CONFIG_DM_UEVENT is not set
641# 878# CONFIG_FUSION is not set
642# Fusion MPT device support
643#
644CONFIG_FUSION=y
645CONFIG_FUSION_SPI=y
646# CONFIG_FUSION_FC is not set
647# CONFIG_FUSION_SAS is not set
648CONFIG_FUSION_MAX_SGE=128
649# CONFIG_FUSION_CTL is not set
650 879
651# 880#
652# IEEE 1394 (FireWire) support 881# IEEE 1394 (FireWire) support
653# 882#
654# CONFIG_FIREWIRE is not set 883# CONFIG_FIREWIRE is not set
655CONFIG_IEEE1394=y 884# CONFIG_IEEE1394 is not set
656
657#
658# Subsystem Options
659#
660# CONFIG_IEEE1394_VERBOSEDEBUG is not set
661
662#
663# Controllers
664#
665
666#
667# Texas Instruments PCILynx requires I2C
668#
669CONFIG_IEEE1394_OHCI1394=y
670
671#
672# Protocols
673#
674# CONFIG_IEEE1394_VIDEO1394 is not set
675# CONFIG_IEEE1394_SBP2 is not set
676# CONFIG_IEEE1394_ETH1394_ROM_ENTRY is not set
677# CONFIG_IEEE1394_ETH1394 is not set
678# CONFIG_IEEE1394_DV1394 is not set
679CONFIG_IEEE1394_RAWIO=y
680# CONFIG_I2O is not set 885# CONFIG_I2O is not set
681CONFIG_MACINTOSH_DRIVERS=y 886CONFIG_MACINTOSH_DRIVERS=y
682# CONFIG_MAC_EMUMOUSEBTN is not set 887CONFIG_MAC_EMUMOUSEBTN=y
683CONFIG_NETDEVICES=y 888CONFIG_NETDEVICES=y
684CONFIG_NETDEVICES_MULTIQUEUE=y 889# CONFIG_NETDEVICES_MULTIQUEUE is not set
890# CONFIG_IFB is not set
685# CONFIG_DUMMY is not set 891# CONFIG_DUMMY is not set
686# CONFIG_BONDING is not set 892# CONFIG_BONDING is not set
687# CONFIG_MACVLAN is not set 893# CONFIG_MACVLAN is not set
688# CONFIG_EQUALIZER is not set 894# CONFIG_EQUALIZER is not set
689CONFIG_TUN=y 895# CONFIG_TUN is not set
896# CONFIG_VETH is not set
690# CONFIG_NET_SB1000 is not set 897# CONFIG_NET_SB1000 is not set
691# CONFIG_ARCNET is not set 898# CONFIG_ARCNET is not set
692# CONFIG_PHYLIB is not set 899# CONFIG_PHYLIB is not set
@@ -696,39 +903,40 @@ CONFIG_MII=y
696# CONFIG_SUNGEM is not set 903# CONFIG_SUNGEM is not set
697# CONFIG_CASSINI is not set 904# CONFIG_CASSINI is not set
698CONFIG_NET_VENDOR_3COM=y 905CONFIG_NET_VENDOR_3COM=y
699CONFIG_VORTEX=y 906# CONFIG_VORTEX is not set
700# CONFIG_TYPHOON is not set 907# CONFIG_TYPHOON is not set
701CONFIG_NET_TULIP=y 908CONFIG_NET_TULIP=y
702# CONFIG_DE2104X is not set 909# CONFIG_DE2104X is not set
703CONFIG_TULIP=y 910# CONFIG_TULIP is not set
704# CONFIG_TULIP_MWI is not set
705# CONFIG_TULIP_MMIO is not set
706# CONFIG_TULIP_NAPI is not set
707# CONFIG_DE4X5 is not set 911# CONFIG_DE4X5 is not set
708# CONFIG_WINBOND_840 is not set 912# CONFIG_WINBOND_840 is not set
709# CONFIG_DM9102 is not set 913# CONFIG_DM9102 is not set
710# CONFIG_ULI526X is not set 914# CONFIG_ULI526X is not set
915# CONFIG_PCMCIA_XIRCOM is not set
711# CONFIG_HP100 is not set 916# CONFIG_HP100 is not set
917# CONFIG_IBM_NEW_EMAC_ZMII is not set
918# CONFIG_IBM_NEW_EMAC_RGMII is not set
919# CONFIG_IBM_NEW_EMAC_TAH is not set
920# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
712CONFIG_NET_PCI=y 921CONFIG_NET_PCI=y
713# CONFIG_PCNET32 is not set 922# CONFIG_PCNET32 is not set
714CONFIG_AMD8111_ETH=y 923# CONFIG_AMD8111_ETH is not set
715# CONFIG_AMD8111E_NAPI is not set
716# CONFIG_ADAPTEC_STARFIRE is not set 924# CONFIG_ADAPTEC_STARFIRE is not set
717CONFIG_B44=y 925# CONFIG_B44 is not set
718CONFIG_FORCEDETH=y 926CONFIG_FORCEDETH=y
719# CONFIG_FORCEDETH_NAPI is not set 927# CONFIG_FORCEDETH_NAPI is not set
720# CONFIG_DGRS is not set
721# CONFIG_EEPRO100 is not set 928# CONFIG_EEPRO100 is not set
722CONFIG_E100=y 929CONFIG_E100=y
723# CONFIG_FEALNX is not set 930# CONFIG_FEALNX is not set
724# CONFIG_NATSEMI is not set 931# CONFIG_NATSEMI is not set
725# CONFIG_NE2K_PCI is not set 932# CONFIG_NE2K_PCI is not set
726CONFIG_8139CP=y 933# CONFIG_8139CP is not set
727CONFIG_8139TOO=y 934CONFIG_8139TOO=y
728# CONFIG_8139TOO_PIO is not set 935CONFIG_8139TOO_PIO=y
729# CONFIG_8139TOO_TUNE_TWISTER is not set 936# CONFIG_8139TOO_TUNE_TWISTER is not set
730# CONFIG_8139TOO_8129 is not set 937# CONFIG_8139TOO_8129 is not set
731# CONFIG_8139_OLD_RX_RESET is not set 938# CONFIG_8139_OLD_RX_RESET is not set
939# CONFIG_R6040 is not set
732# CONFIG_SIS900 is not set 940# CONFIG_SIS900 is not set
733# CONFIG_EPIC100 is not set 941# CONFIG_EPIC100 is not set
734# CONFIG_SUNDANCE is not set 942# CONFIG_SUNDANCE is not set
@@ -740,34 +948,74 @@ CONFIG_NETDEV_1000=y
740CONFIG_E1000=y 948CONFIG_E1000=y
741# CONFIG_E1000_NAPI is not set 949# CONFIG_E1000_NAPI is not set
742# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 950# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
951# CONFIG_E1000E is not set
952# CONFIG_E1000E_ENABLED is not set
953# CONFIG_IP1000 is not set
954# CONFIG_IGB is not set
743# CONFIG_NS83820 is not set 955# CONFIG_NS83820 is not set
744# CONFIG_HAMACHI is not set 956# CONFIG_HAMACHI is not set
745# CONFIG_YELLOWFIN is not set 957# CONFIG_YELLOWFIN is not set
746# CONFIG_R8169 is not set 958# CONFIG_R8169 is not set
747# CONFIG_SIS190 is not set 959# CONFIG_SIS190 is not set
748# CONFIG_SKGE is not set 960# CONFIG_SKGE is not set
749# CONFIG_SKY2 is not set 961CONFIG_SKY2=y
962# CONFIG_SKY2_DEBUG is not set
750# CONFIG_VIA_VELOCITY is not set 963# CONFIG_VIA_VELOCITY is not set
751CONFIG_TIGON3=y 964CONFIG_TIGON3=y
752CONFIG_BNX2=y 965# CONFIG_BNX2 is not set
753# CONFIG_QLA3XXX is not set 966# CONFIG_QLA3XXX is not set
754# CONFIG_ATL1 is not set 967# CONFIG_ATL1 is not set
755CONFIG_NETDEV_10000=y 968CONFIG_NETDEV_10000=y
756# CONFIG_CHELSIO_T1 is not set 969# CONFIG_CHELSIO_T1 is not set
757# CONFIG_CHELSIO_T3 is not set 970# CONFIG_CHELSIO_T3 is not set
971# CONFIG_IXGBE is not set
758# CONFIG_IXGB is not set 972# CONFIG_IXGB is not set
759CONFIG_S2IO=m 973# CONFIG_S2IO is not set
760# CONFIG_S2IO_NAPI is not set
761# CONFIG_MYRI10GE is not set 974# CONFIG_MYRI10GE is not set
762# CONFIG_NETXEN_NIC is not set 975# CONFIG_NETXEN_NIC is not set
976# CONFIG_NIU is not set
763# CONFIG_MLX4_CORE is not set 977# CONFIG_MLX4_CORE is not set
764# CONFIG_TR is not set 978# CONFIG_TEHUTI is not set
979# CONFIG_BNX2X is not set
980# CONFIG_SFC is not set
981CONFIG_TR=y
982# CONFIG_IBMOL is not set
983# CONFIG_3C359 is not set
984# CONFIG_TMS380TR is not set
765 985
766# 986#
767# Wireless LAN 987# Wireless LAN
768# 988#
769# CONFIG_WLAN_PRE80211 is not set 989# CONFIG_WLAN_PRE80211 is not set
770# CONFIG_WLAN_80211 is not set 990CONFIG_WLAN_80211=y
991# CONFIG_PCMCIA_RAYCS is not set
992# CONFIG_IPW2100 is not set
993# CONFIG_IPW2200 is not set
994# CONFIG_LIBERTAS is not set
995# CONFIG_AIRO is not set
996# CONFIG_HERMES is not set
997# CONFIG_ATMEL is not set
998# CONFIG_AIRO_CS is not set
999# CONFIG_PCMCIA_WL3501 is not set
1000# CONFIG_PRISM54 is not set
1001# CONFIG_USB_ZD1201 is not set
1002# CONFIG_USB_NET_RNDIS_WLAN is not set
1003# CONFIG_RTL8180 is not set
1004# CONFIG_RTL8187 is not set
1005# CONFIG_ADM8211 is not set
1006# CONFIG_P54_COMMON is not set
1007CONFIG_ATH5K=y
1008# CONFIG_ATH5K_DEBUG is not set
1009# CONFIG_IWLWIFI is not set
1010# CONFIG_IWLCORE is not set
1011# CONFIG_IWLWIFI_LEDS is not set
1012# CONFIG_IWL4965 is not set
1013# CONFIG_IWL3945 is not set
1014# CONFIG_HOSTAP is not set
1015# CONFIG_B43 is not set
1016# CONFIG_B43LEGACY is not set
1017# CONFIG_ZD1211RW is not set
1018# CONFIG_RT2X00 is not set
771 1019
772# 1020#
773# USB Network Adapters 1021# USB Network Adapters
@@ -776,16 +1024,26 @@ CONFIG_S2IO=m
776# CONFIG_USB_KAWETH is not set 1024# CONFIG_USB_KAWETH is not set
777# CONFIG_USB_PEGASUS is not set 1025# CONFIG_USB_PEGASUS is not set
778# CONFIG_USB_RTL8150 is not set 1026# CONFIG_USB_RTL8150 is not set
779# CONFIG_USB_USBNET_MII is not set
780# CONFIG_USB_USBNET is not set 1027# CONFIG_USB_USBNET is not set
1028CONFIG_NET_PCMCIA=y
1029# CONFIG_PCMCIA_3C589 is not set
1030# CONFIG_PCMCIA_3C574 is not set
1031# CONFIG_PCMCIA_FMVJ18X is not set
1032# CONFIG_PCMCIA_PCNET is not set
1033# CONFIG_PCMCIA_NMCLAN is not set
1034# CONFIG_PCMCIA_SMC91C92 is not set
1035# CONFIG_PCMCIA_XIRC2PS is not set
1036# CONFIG_PCMCIA_AXNET is not set
781# CONFIG_WAN is not set 1037# CONFIG_WAN is not set
782# CONFIG_FDDI is not set 1038CONFIG_FDDI=y
1039# CONFIG_DEFXX is not set
1040# CONFIG_SKFP is not set
783# CONFIG_HIPPI is not set 1041# CONFIG_HIPPI is not set
784# CONFIG_PPP is not set 1042# CONFIG_PPP is not set
785# CONFIG_SLIP is not set 1043# CONFIG_SLIP is not set
786# CONFIG_NET_FC is not set 1044# CONFIG_NET_FC is not set
787# CONFIG_SHAPER is not set
788CONFIG_NETCONSOLE=y 1045CONFIG_NETCONSOLE=y
1046# CONFIG_NETCONSOLE_DYNAMIC is not set
789CONFIG_NETPOLL=y 1047CONFIG_NETPOLL=y
790# CONFIG_NETPOLL_TRAP is not set 1048# CONFIG_NETPOLL_TRAP is not set
791CONFIG_NET_POLL_CONTROLLER=y 1049CONFIG_NET_POLL_CONTROLLER=y
@@ -796,18 +1054,17 @@ CONFIG_NET_POLL_CONTROLLER=y
796# Input device support 1054# Input device support
797# 1055#
798CONFIG_INPUT=y 1056CONFIG_INPUT=y
799# CONFIG_INPUT_FF_MEMLESS is not set 1057CONFIG_INPUT_FF_MEMLESS=y
800# CONFIG_INPUT_POLLDEV is not set 1058CONFIG_INPUT_POLLDEV=y
801 1059
802# 1060#
803# Userland interfaces 1061# Userland interfaces
804# 1062#
805CONFIG_INPUT_MOUSEDEV=y 1063CONFIG_INPUT_MOUSEDEV=y
806CONFIG_INPUT_MOUSEDEV_PSAUX=y 1064# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
807CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 1065CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
808CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 1066CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
809# CONFIG_INPUT_JOYDEV is not set 1067# CONFIG_INPUT_JOYDEV is not set
810# CONFIG_INPUT_TSDEV is not set
811CONFIG_INPUT_EVDEV=y 1068CONFIG_INPUT_EVDEV=y
812# CONFIG_INPUT_EVBUG is not set 1069# CONFIG_INPUT_EVBUG is not set
813 1070
@@ -832,17 +1089,62 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y
832# CONFIG_MOUSE_SERIAL is not set 1089# CONFIG_MOUSE_SERIAL is not set
833# CONFIG_MOUSE_APPLETOUCH is not set 1090# CONFIG_MOUSE_APPLETOUCH is not set
834# CONFIG_MOUSE_VSXXXAA is not set 1091# CONFIG_MOUSE_VSXXXAA is not set
835# CONFIG_INPUT_JOYSTICK is not set 1092CONFIG_INPUT_JOYSTICK=y
836# CONFIG_INPUT_TABLET is not set 1093# CONFIG_JOYSTICK_ANALOG is not set
837# CONFIG_INPUT_TOUCHSCREEN is not set 1094# CONFIG_JOYSTICK_A3D is not set
838# CONFIG_INPUT_MISC is not set 1095# CONFIG_JOYSTICK_ADI is not set
1096# CONFIG_JOYSTICK_COBRA is not set
1097# CONFIG_JOYSTICK_GF2K is not set
1098# CONFIG_JOYSTICK_GRIP is not set
1099# CONFIG_JOYSTICK_GRIP_MP is not set
1100# CONFIG_JOYSTICK_GUILLEMOT is not set
1101# CONFIG_JOYSTICK_INTERACT is not set
1102# CONFIG_JOYSTICK_SIDEWINDER is not set
1103# CONFIG_JOYSTICK_TMDC is not set
1104# CONFIG_JOYSTICK_IFORCE is not set
1105# CONFIG_JOYSTICK_WARRIOR is not set
1106# CONFIG_JOYSTICK_MAGELLAN is not set
1107# CONFIG_JOYSTICK_SPACEORB is not set
1108# CONFIG_JOYSTICK_SPACEBALL is not set
1109# CONFIG_JOYSTICK_STINGER is not set
1110# CONFIG_JOYSTICK_TWIDJOY is not set
1111# CONFIG_JOYSTICK_ZHENHUA is not set
1112# CONFIG_JOYSTICK_JOYDUMP is not set
1113# CONFIG_JOYSTICK_XPAD is not set
1114CONFIG_INPUT_TABLET=y
1115# CONFIG_TABLET_USB_ACECAD is not set
1116# CONFIG_TABLET_USB_AIPTEK is not set
1117# CONFIG_TABLET_USB_GTCO is not set
1118# CONFIG_TABLET_USB_KBTAB is not set
1119# CONFIG_TABLET_USB_WACOM is not set
1120CONFIG_INPUT_TOUCHSCREEN=y
1121# CONFIG_TOUCHSCREEN_FUJITSU is not set
1122# CONFIG_TOUCHSCREEN_GUNZE is not set
1123# CONFIG_TOUCHSCREEN_ELO is not set
1124# CONFIG_TOUCHSCREEN_MTOUCH is not set
1125# CONFIG_TOUCHSCREEN_MK712 is not set
1126# CONFIG_TOUCHSCREEN_PENMOUNT is not set
1127# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
1128# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
1129# CONFIG_TOUCHSCREEN_UCB1400 is not set
1130# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
1131CONFIG_INPUT_MISC=y
1132# CONFIG_INPUT_PCSPKR is not set
1133# CONFIG_INPUT_APANEL is not set
1134# CONFIG_INPUT_ATLAS_BTNS is not set
1135# CONFIG_INPUT_ATI_REMOTE is not set
1136# CONFIG_INPUT_ATI_REMOTE2 is not set
1137# CONFIG_INPUT_KEYSPAN_REMOTE is not set
1138# CONFIG_INPUT_POWERMATE is not set
1139# CONFIG_INPUT_YEALINK is not set
1140# CONFIG_INPUT_UINPUT is not set
839 1141
840# 1142#
841# Hardware I/O ports 1143# Hardware I/O ports
842# 1144#
843CONFIG_SERIO=y 1145CONFIG_SERIO=y
844CONFIG_SERIO_I8042=y 1146CONFIG_SERIO_I8042=y
845# CONFIG_SERIO_SERPORT is not set 1147CONFIG_SERIO_SERPORT=y
846# CONFIG_SERIO_CT82C710 is not set 1148# CONFIG_SERIO_CT82C710 is not set
847# CONFIG_SERIO_PCIPS2 is not set 1149# CONFIG_SERIO_PCIPS2 is not set
848CONFIG_SERIO_LIBPS2=y 1150CONFIG_SERIO_LIBPS2=y
@@ -855,8 +1157,26 @@ CONFIG_SERIO_LIBPS2=y
855CONFIG_VT=y 1157CONFIG_VT=y
856CONFIG_VT_CONSOLE=y 1158CONFIG_VT_CONSOLE=y
857CONFIG_HW_CONSOLE=y 1159CONFIG_HW_CONSOLE=y
858# CONFIG_VT_HW_CONSOLE_BINDING is not set 1160CONFIG_VT_HW_CONSOLE_BINDING=y
859# CONFIG_SERIAL_NONSTANDARD is not set 1161CONFIG_DEVKMEM=y
1162CONFIG_SERIAL_NONSTANDARD=y
1163# CONFIG_COMPUTONE is not set
1164# CONFIG_ROCKETPORT is not set
1165# CONFIG_CYCLADES is not set
1166# CONFIG_DIGIEPCA is not set
1167# CONFIG_MOXA_INTELLIO is not set
1168# CONFIG_MOXA_SMARTIO is not set
1169# CONFIG_ISI is not set
1170# CONFIG_SYNCLINK is not set
1171# CONFIG_SYNCLINKMP is not set
1172# CONFIG_SYNCLINK_GT is not set
1173# CONFIG_N_HDLC is not set
1174# CONFIG_RISCOM8 is not set
1175# CONFIG_SPECIALIX is not set
1176# CONFIG_SX is not set
1177# CONFIG_RIO is not set
1178# CONFIG_STALDRV is not set
1179# CONFIG_NOZOMI is not set
860 1180
861# 1181#
862# Serial drivers 1182# Serial drivers
@@ -866,9 +1186,14 @@ CONFIG_SERIAL_8250_CONSOLE=y
866CONFIG_FIX_EARLYCON_MEM=y 1186CONFIG_FIX_EARLYCON_MEM=y
867CONFIG_SERIAL_8250_PCI=y 1187CONFIG_SERIAL_8250_PCI=y
868CONFIG_SERIAL_8250_PNP=y 1188CONFIG_SERIAL_8250_PNP=y
869CONFIG_SERIAL_8250_NR_UARTS=4 1189# CONFIG_SERIAL_8250_CS is not set
1190CONFIG_SERIAL_8250_NR_UARTS=32
870CONFIG_SERIAL_8250_RUNTIME_UARTS=4 1191CONFIG_SERIAL_8250_RUNTIME_UARTS=4
871# CONFIG_SERIAL_8250_EXTENDED is not set 1192CONFIG_SERIAL_8250_EXTENDED=y
1193CONFIG_SERIAL_8250_MANY_PORTS=y
1194CONFIG_SERIAL_8250_SHARE_IRQ=y
1195CONFIG_SERIAL_8250_DETECT_IRQ=y
1196CONFIG_SERIAL_8250_RSA=y
872 1197
873# 1198#
874# Non-8250 serial port support 1199# Non-8250 serial port support
@@ -877,78 +1202,260 @@ CONFIG_SERIAL_CORE=y
877CONFIG_SERIAL_CORE_CONSOLE=y 1202CONFIG_SERIAL_CORE_CONSOLE=y
878# CONFIG_SERIAL_JSM is not set 1203# CONFIG_SERIAL_JSM is not set
879CONFIG_UNIX98_PTYS=y 1204CONFIG_UNIX98_PTYS=y
880CONFIG_LEGACY_PTYS=y 1205# CONFIG_LEGACY_PTYS is not set
881CONFIG_LEGACY_PTY_COUNT=256
882# CONFIG_IPMI_HANDLER is not set 1206# CONFIG_IPMI_HANDLER is not set
883# CONFIG_WATCHDOG is not set
884CONFIG_HW_RANDOM=y 1207CONFIG_HW_RANDOM=y
885CONFIG_HW_RANDOM_INTEL=y 1208# CONFIG_HW_RANDOM_INTEL is not set
886CONFIG_HW_RANDOM_AMD=y 1209# CONFIG_HW_RANDOM_AMD is not set
887# CONFIG_NVRAM is not set 1210CONFIG_NVRAM=y
888CONFIG_RTC=y
889# CONFIG_R3964 is not set 1211# CONFIG_R3964 is not set
890# CONFIG_APPLICOM is not set 1212# CONFIG_APPLICOM is not set
891CONFIG_AGP=y 1213
892CONFIG_AGP_AMD64=y 1214#
893CONFIG_AGP_INTEL=y 1215# PCMCIA character devices
894# CONFIG_AGP_SIS is not set 1216#
895# CONFIG_AGP_VIA is not set 1217# CONFIG_SYNCLINK_CS is not set
896# CONFIG_DRM is not set 1218# CONFIG_CARDMAN_4000 is not set
1219# CONFIG_CARDMAN_4040 is not set
1220# CONFIG_IPWIRELESS is not set
897# CONFIG_MWAVE is not set 1221# CONFIG_MWAVE is not set
898# CONFIG_PC8736x_GPIO is not set 1222# CONFIG_PC8736x_GPIO is not set
899CONFIG_RAW_DRIVER=y 1223# CONFIG_RAW_DRIVER is not set
900CONFIG_MAX_RAW_DEVS=256
901CONFIG_HPET=y 1224CONFIG_HPET=y
902# CONFIG_HPET_RTC_IRQ is not set 1225# CONFIG_HPET_RTC_IRQ is not set
903CONFIG_HPET_MMAP=y 1226# CONFIG_HPET_MMAP is not set
904# CONFIG_HANGCHECK_TIMER is not set 1227# CONFIG_HANGCHECK_TIMER is not set
905# CONFIG_TCG_TPM is not set 1228# CONFIG_TCG_TPM is not set
906# CONFIG_TELCLOCK is not set 1229# CONFIG_TELCLOCK is not set
907CONFIG_DEVPORT=y 1230CONFIG_DEVPORT=y
908# CONFIG_I2C is not set 1231CONFIG_I2C=y
909 1232CONFIG_I2C_BOARDINFO=y
910# 1233# CONFIG_I2C_CHARDEV is not set
911# SPI support 1234
912# 1235#
1236# I2C Hardware Bus support
1237#
1238# CONFIG_I2C_ALI1535 is not set
1239# CONFIG_I2C_ALI1563 is not set
1240# CONFIG_I2C_ALI15X3 is not set
1241# CONFIG_I2C_AMD756 is not set
1242# CONFIG_I2C_AMD8111 is not set
1243CONFIG_I2C_I801=y
1244# CONFIG_I2C_I810 is not set
1245# CONFIG_I2C_PIIX4 is not set
1246# CONFIG_I2C_NFORCE2 is not set
1247# CONFIG_I2C_OCORES is not set
1248# CONFIG_I2C_PARPORT_LIGHT is not set
1249# CONFIG_I2C_PROSAVAGE is not set
1250# CONFIG_I2C_SAVAGE4 is not set
1251# CONFIG_I2C_SIMTEC is not set
1252# CONFIG_I2C_SIS5595 is not set
1253# CONFIG_I2C_SIS630 is not set
1254# CONFIG_I2C_SIS96X is not set
1255# CONFIG_I2C_TAOS_EVM is not set
1256# CONFIG_I2C_STUB is not set
1257# CONFIG_I2C_TINY_USB is not set
1258# CONFIG_I2C_VIA is not set
1259# CONFIG_I2C_VIAPRO is not set
1260# CONFIG_I2C_VOODOO3 is not set
1261# CONFIG_I2C_PCA_PLATFORM is not set
1262
1263#
1264# Miscellaneous I2C Chip support
1265#
1266# CONFIG_DS1682 is not set
1267# CONFIG_SENSORS_EEPROM is not set
1268# CONFIG_SENSORS_PCF8574 is not set
1269# CONFIG_PCF8575 is not set
1270# CONFIG_SENSORS_PCF8591 is not set
1271# CONFIG_SENSORS_MAX6875 is not set
1272# CONFIG_SENSORS_TSL2550 is not set
1273# CONFIG_I2C_DEBUG_CORE is not set
1274# CONFIG_I2C_DEBUG_ALGO is not set
1275# CONFIG_I2C_DEBUG_BUS is not set
1276# CONFIG_I2C_DEBUG_CHIP is not set
913# CONFIG_SPI is not set 1277# CONFIG_SPI is not set
914# CONFIG_SPI_MASTER is not set
915# CONFIG_W1 is not set 1278# CONFIG_W1 is not set
916# CONFIG_POWER_SUPPLY is not set 1279CONFIG_POWER_SUPPLY=y
1280# CONFIG_POWER_SUPPLY_DEBUG is not set
1281# CONFIG_PDA_POWER is not set
1282# CONFIG_BATTERY_DS2760 is not set
917# CONFIG_HWMON is not set 1283# CONFIG_HWMON is not set
1284CONFIG_THERMAL=y
1285CONFIG_WATCHDOG=y
1286# CONFIG_WATCHDOG_NOWAYOUT is not set
1287
1288#
1289# Watchdog Device Drivers
1290#
1291# CONFIG_SOFT_WATCHDOG is not set
1292# CONFIG_ACQUIRE_WDT is not set
1293# CONFIG_ADVANTECH_WDT is not set
1294# CONFIG_ALIM1535_WDT is not set
1295# CONFIG_ALIM7101_WDT is not set
1296# CONFIG_SC520_WDT is not set
1297# CONFIG_EUROTECH_WDT is not set
1298# CONFIG_IB700_WDT is not set
1299# CONFIG_IBMASR is not set
1300# CONFIG_WAFER_WDT is not set
1301# CONFIG_I6300ESB_WDT is not set
1302# CONFIG_ITCO_WDT is not set
1303# CONFIG_IT8712F_WDT is not set
1304# CONFIG_HP_WATCHDOG is not set
1305# CONFIG_SC1200_WDT is not set
1306# CONFIG_PC87413_WDT is not set
1307# CONFIG_60XX_WDT is not set
1308# CONFIG_SBC8360_WDT is not set
1309# CONFIG_CPU5_WDT is not set
1310# CONFIG_SMSC37B787_WDT is not set
1311# CONFIG_W83627HF_WDT is not set
1312# CONFIG_W83697HF_WDT is not set
1313# CONFIG_W83877F_WDT is not set
1314# CONFIG_W83977F_WDT is not set
1315# CONFIG_MACHZ_WDT is not set
1316# CONFIG_SBC_EPX_C3_WATCHDOG is not set
1317
1318#
1319# PCI-based Watchdog Cards
1320#
1321# CONFIG_PCIPCWATCHDOG is not set
1322# CONFIG_WDTPCI is not set
1323
1324#
1325# USB-based Watchdog Cards
1326#
1327# CONFIG_USBPCWATCHDOG is not set
1328
1329#
1330# Sonics Silicon Backplane
1331#
1332CONFIG_SSB_POSSIBLE=y
1333# CONFIG_SSB is not set
918 1334
919# 1335#
920# Multifunction device drivers 1336# Multifunction device drivers
921# 1337#
922# CONFIG_MFD_SM501 is not set 1338# CONFIG_MFD_SM501 is not set
1339# CONFIG_HTC_PASIC3 is not set
923 1340
924# 1341#
925# Multimedia devices 1342# Multimedia devices
926# 1343#
1344
1345#
1346# Multimedia core support
1347#
927# CONFIG_VIDEO_DEV is not set 1348# CONFIG_VIDEO_DEV is not set
928# CONFIG_DVB_CORE is not set 1349# CONFIG_DVB_CORE is not set
1350
1351#
1352# Multimedia drivers
1353#
929CONFIG_DAB=y 1354CONFIG_DAB=y
930# CONFIG_USB_DABUSB is not set 1355# CONFIG_USB_DABUSB is not set
931 1356
932# 1357#
933# Graphics support 1358# Graphics support
934# 1359#
935# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1360CONFIG_AGP=y
1361CONFIG_AGP_AMD64=y
1362CONFIG_AGP_INTEL=y
1363# CONFIG_AGP_SIS is not set
1364# CONFIG_AGP_VIA is not set
1365CONFIG_DRM=y
1366# CONFIG_DRM_TDFX is not set
1367# CONFIG_DRM_R128 is not set
1368# CONFIG_DRM_RADEON is not set
1369# CONFIG_DRM_I810 is not set
1370# CONFIG_DRM_I830 is not set
1371CONFIG_DRM_I915=y
1372# CONFIG_DRM_MGA is not set
1373# CONFIG_DRM_SIS is not set
1374# CONFIG_DRM_VIA is not set
1375# CONFIG_DRM_SAVAGE is not set
1376# CONFIG_VGASTATE is not set
1377# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1378CONFIG_FB=y
1379# CONFIG_FIRMWARE_EDID is not set
1380# CONFIG_FB_DDC is not set
1381CONFIG_FB_CFB_FILLRECT=y
1382CONFIG_FB_CFB_COPYAREA=y
1383CONFIG_FB_CFB_IMAGEBLIT=y
1384# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1385# CONFIG_FB_SYS_FILLRECT is not set
1386# CONFIG_FB_SYS_COPYAREA is not set
1387# CONFIG_FB_SYS_IMAGEBLIT is not set
1388# CONFIG_FB_FOREIGN_ENDIAN is not set
1389# CONFIG_FB_SYS_FOPS is not set
1390CONFIG_FB_DEFERRED_IO=y
1391# CONFIG_FB_SVGALIB is not set
1392# CONFIG_FB_MACMODES is not set
1393# CONFIG_FB_BACKLIGHT is not set
1394CONFIG_FB_MODE_HELPERS=y
1395CONFIG_FB_TILEBLITTING=y
1396
1397#
1398# Frame buffer hardware drivers
1399#
1400# CONFIG_FB_CIRRUS is not set
1401# CONFIG_FB_PM2 is not set
1402# CONFIG_FB_CYBER2000 is not set
1403# CONFIG_FB_ARC is not set
1404# CONFIG_FB_ASILIANT is not set
1405# CONFIG_FB_IMSTT is not set
1406# CONFIG_FB_VGA16 is not set
1407# CONFIG_FB_UVESA is not set
1408# CONFIG_FB_VESA is not set
1409CONFIG_FB_EFI=y
1410# CONFIG_FB_IMAC is not set
1411# CONFIG_FB_N411 is not set
1412# CONFIG_FB_HGA is not set
1413# CONFIG_FB_S1D13XXX is not set
1414# CONFIG_FB_NVIDIA is not set
1415# CONFIG_FB_RIVA is not set
1416# CONFIG_FB_LE80578 is not set
1417# CONFIG_FB_INTEL is not set
1418# CONFIG_FB_MATROX is not set
1419# CONFIG_FB_RADEON is not set
1420# CONFIG_FB_ATY128 is not set
1421# CONFIG_FB_ATY is not set
1422# CONFIG_FB_S3 is not set
1423# CONFIG_FB_SAVAGE is not set
1424# CONFIG_FB_SIS is not set
1425# CONFIG_FB_NEOMAGIC is not set
1426# CONFIG_FB_KYRO is not set
1427# CONFIG_FB_3DFX is not set
1428# CONFIG_FB_VOODOO1 is not set
1429# CONFIG_FB_VT8623 is not set
1430# CONFIG_FB_TRIDENT is not set
1431# CONFIG_FB_ARK is not set
1432# CONFIG_FB_PM3 is not set
1433# CONFIG_FB_GEODE is not set
1434# CONFIG_FB_VIRTUAL is not set
1435CONFIG_BACKLIGHT_LCD_SUPPORT=y
1436# CONFIG_LCD_CLASS_DEVICE is not set
1437CONFIG_BACKLIGHT_CLASS_DEVICE=y
1438# CONFIG_BACKLIGHT_CORGI is not set
1439# CONFIG_BACKLIGHT_PROGEAR is not set
936 1440
937# 1441#
938# Display device support 1442# Display device support
939# 1443#
940# CONFIG_DISPLAY_SUPPORT is not set 1444# CONFIG_DISPLAY_SUPPORT is not set
941# CONFIG_VGASTATE is not set
942# CONFIG_FB is not set
943 1445
944# 1446#
945# Console display driver support 1447# Console display driver support
946# 1448#
947CONFIG_VGA_CONSOLE=y 1449CONFIG_VGA_CONSOLE=y
948CONFIG_VGACON_SOFT_SCROLLBACK=y 1450CONFIG_VGACON_SOFT_SCROLLBACK=y
949CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=256 1451CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
950CONFIG_VIDEO_SELECT=y 1452CONFIG_VIDEO_SELECT=y
951CONFIG_DUMMY_CONSOLE=y 1453CONFIG_DUMMY_CONSOLE=y
1454# CONFIG_FRAMEBUFFER_CONSOLE is not set
1455CONFIG_LOGO=y
1456# CONFIG_LOGO_LINUX_MONO is not set
1457# CONFIG_LOGO_LINUX_VGA16 is not set
1458CONFIG_LOGO_LINUX_CLUT224=y
952 1459
953# 1460#
954# Sound 1461# Sound
@@ -958,33 +1465,165 @@ CONFIG_SOUND=y
958# 1465#
959# Advanced Linux Sound Architecture 1466# Advanced Linux Sound Architecture
960# 1467#
961# CONFIG_SND is not set 1468CONFIG_SND=y
1469CONFIG_SND_TIMER=y
1470CONFIG_SND_PCM=y
1471CONFIG_SND_HWDEP=y
1472CONFIG_SND_SEQUENCER=y
1473CONFIG_SND_SEQ_DUMMY=y
1474CONFIG_SND_OSSEMUL=y
1475CONFIG_SND_MIXER_OSS=y
1476CONFIG_SND_PCM_OSS=y
1477CONFIG_SND_PCM_OSS_PLUGINS=y
1478CONFIG_SND_SEQUENCER_OSS=y
1479CONFIG_SND_DYNAMIC_MINORS=y
1480CONFIG_SND_SUPPORT_OLD_API=y
1481CONFIG_SND_VERBOSE_PROCFS=y
1482# CONFIG_SND_VERBOSE_PRINTK is not set
1483# CONFIG_SND_DEBUG is not set
1484CONFIG_SND_VMASTER=y
1485
1486#
1487# Generic devices
1488#
1489# CONFIG_SND_PCSP is not set
1490# CONFIG_SND_DUMMY is not set
1491# CONFIG_SND_VIRMIDI is not set
1492# CONFIG_SND_MTPAV is not set
1493# CONFIG_SND_SERIAL_U16550 is not set
1494# CONFIG_SND_MPU401 is not set
1495
1496#
1497# PCI devices
1498#
1499# CONFIG_SND_AD1889 is not set
1500# CONFIG_SND_ALS300 is not set
1501# CONFIG_SND_ALS4000 is not set
1502# CONFIG_SND_ALI5451 is not set
1503# CONFIG_SND_ATIIXP is not set
1504# CONFIG_SND_ATIIXP_MODEM is not set
1505# CONFIG_SND_AU8810 is not set
1506# CONFIG_SND_AU8820 is not set
1507# CONFIG_SND_AU8830 is not set
1508# CONFIG_SND_AW2 is not set
1509# CONFIG_SND_AZT3328 is not set
1510# CONFIG_SND_BT87X is not set
1511# CONFIG_SND_CA0106 is not set
1512# CONFIG_SND_CMIPCI is not set
1513# CONFIG_SND_OXYGEN is not set
1514# CONFIG_SND_CS4281 is not set
1515# CONFIG_SND_CS46XX is not set
1516# CONFIG_SND_CS5530 is not set
1517# CONFIG_SND_DARLA20 is not set
1518# CONFIG_SND_GINA20 is not set
1519# CONFIG_SND_LAYLA20 is not set
1520# CONFIG_SND_DARLA24 is not set
1521# CONFIG_SND_GINA24 is not set
1522# CONFIG_SND_LAYLA24 is not set
1523# CONFIG_SND_MONA is not set
1524# CONFIG_SND_MIA is not set
1525# CONFIG_SND_ECHO3G is not set
1526# CONFIG_SND_INDIGO is not set
1527# CONFIG_SND_INDIGOIO is not set
1528# CONFIG_SND_INDIGODJ is not set
1529# CONFIG_SND_EMU10K1 is not set
1530# CONFIG_SND_EMU10K1X is not set
1531# CONFIG_SND_ENS1370 is not set
1532# CONFIG_SND_ENS1371 is not set
1533# CONFIG_SND_ES1938 is not set
1534# CONFIG_SND_ES1968 is not set
1535# CONFIG_SND_FM801 is not set
1536CONFIG_SND_HDA_INTEL=y
1537CONFIG_SND_HDA_HWDEP=y
1538CONFIG_SND_HDA_CODEC_REALTEK=y
1539CONFIG_SND_HDA_CODEC_ANALOG=y
1540CONFIG_SND_HDA_CODEC_SIGMATEL=y
1541CONFIG_SND_HDA_CODEC_VIA=y
1542CONFIG_SND_HDA_CODEC_ATIHDMI=y
1543CONFIG_SND_HDA_CODEC_CONEXANT=y
1544CONFIG_SND_HDA_CODEC_CMEDIA=y
1545CONFIG_SND_HDA_CODEC_SI3054=y
1546CONFIG_SND_HDA_GENERIC=y
1547# CONFIG_SND_HDA_POWER_SAVE is not set
1548# CONFIG_SND_HDSP is not set
1549# CONFIG_SND_HDSPM is not set
1550# CONFIG_SND_HIFIER is not set
1551# CONFIG_SND_ICE1712 is not set
1552# CONFIG_SND_ICE1724 is not set
1553# CONFIG_SND_INTEL8X0 is not set
1554# CONFIG_SND_INTEL8X0M is not set
1555# CONFIG_SND_KORG1212 is not set
1556# CONFIG_SND_MAESTRO3 is not set
1557# CONFIG_SND_MIXART is not set
1558# CONFIG_SND_NM256 is not set
1559# CONFIG_SND_PCXHR is not set
1560# CONFIG_SND_RIPTIDE is not set
1561# CONFIG_SND_RME32 is not set
1562# CONFIG_SND_RME96 is not set
1563# CONFIG_SND_RME9652 is not set
1564# CONFIG_SND_SONICVIBES is not set
1565# CONFIG_SND_TRIDENT is not set
1566# CONFIG_SND_VIA82XX is not set
1567# CONFIG_SND_VIA82XX_MODEM is not set
1568# CONFIG_SND_VIRTUOSO is not set
1569# CONFIG_SND_VX222 is not set
1570# CONFIG_SND_YMFPCI is not set
1571
1572#
1573# USB devices
1574#
1575# CONFIG_SND_USB_AUDIO is not set
1576# CONFIG_SND_USB_USX2Y is not set
1577# CONFIG_SND_USB_CAIAQ is not set
1578
1579#
1580# PCMCIA devices
1581#
1582# CONFIG_SND_VXPOCKET is not set
1583# CONFIG_SND_PDAUDIOCF is not set
1584
1585#
1586# System on Chip audio support
1587#
1588# CONFIG_SND_SOC is not set
1589
1590#
1591# ALSA SoC audio for Freescale SOCs
1592#
1593
1594#
1595# SoC Audio for the Texas Instruments OMAP
1596#
962 1597
963# 1598#
964# Open Sound System 1599# Open Sound System
965# 1600#
966CONFIG_SOUND_PRIME=y 1601# CONFIG_SOUND_PRIME is not set
967# CONFIG_SOUND_TRIDENT is not set
968# CONFIG_SOUND_MSNDCLAS is not set
969# CONFIG_SOUND_MSNDPIN is not set
970# CONFIG_SOUND_OSS is not set
971CONFIG_HID_SUPPORT=y 1602CONFIG_HID_SUPPORT=y
972CONFIG_HID=y 1603CONFIG_HID=y
973# CONFIG_HID_DEBUG is not set 1604CONFIG_HID_DEBUG=y
1605CONFIG_HIDRAW=y
974 1606
975# 1607#
976# USB Input Devices 1608# USB Input Devices
977# 1609#
978CONFIG_USB_HID=y 1610CONFIG_USB_HID=y
979# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1611CONFIG_USB_HIDINPUT_POWERBOOK=y
980# CONFIG_HID_FF is not set 1612CONFIG_HID_FF=y
981# CONFIG_USB_HIDDEV is not set 1613CONFIG_HID_PID=y
1614CONFIG_LOGITECH_FF=y
1615# CONFIG_LOGIRUMBLEPAD2_FF is not set
1616CONFIG_PANTHERLORD_FF=y
1617CONFIG_THRUSTMASTER_FF=y
1618CONFIG_ZEROPLUS_FF=y
1619CONFIG_USB_HIDDEV=y
982CONFIG_USB_SUPPORT=y 1620CONFIG_USB_SUPPORT=y
983CONFIG_USB_ARCH_HAS_HCD=y 1621CONFIG_USB_ARCH_HAS_HCD=y
984CONFIG_USB_ARCH_HAS_OHCI=y 1622CONFIG_USB_ARCH_HAS_OHCI=y
985CONFIG_USB_ARCH_HAS_EHCI=y 1623CONFIG_USB_ARCH_HAS_EHCI=y
986CONFIG_USB=y 1624CONFIG_USB=y
987# CONFIG_USB_DEBUG is not set 1625CONFIG_USB_DEBUG=y
1626CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
988 1627
989# 1628#
990# Miscellaneous USB options 1629# Miscellaneous USB options
@@ -992,18 +1631,18 @@ CONFIG_USB=y
992CONFIG_USB_DEVICEFS=y 1631CONFIG_USB_DEVICEFS=y
993# CONFIG_USB_DEVICE_CLASS is not set 1632# CONFIG_USB_DEVICE_CLASS is not set
994# CONFIG_USB_DYNAMIC_MINORS is not set 1633# CONFIG_USB_DYNAMIC_MINORS is not set
995# CONFIG_USB_SUSPEND is not set 1634CONFIG_USB_SUSPEND=y
996# CONFIG_USB_PERSIST is not set
997# CONFIG_USB_OTG is not set 1635# CONFIG_USB_OTG is not set
998 1636
999# 1637#
1000# USB Host Controller Drivers 1638# USB Host Controller Drivers
1001# 1639#
1640# CONFIG_USB_C67X00_HCD is not set
1002CONFIG_USB_EHCI_HCD=y 1641CONFIG_USB_EHCI_HCD=y
1003# CONFIG_USB_EHCI_SPLIT_ISO is not set
1004# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1642# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1005# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1643# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1006# CONFIG_USB_ISP116X_HCD is not set 1644# CONFIG_USB_ISP116X_HCD is not set
1645# CONFIG_USB_ISP1760_HCD is not set
1007CONFIG_USB_OHCI_HCD=y 1646CONFIG_USB_OHCI_HCD=y
1008# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1647# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1009# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 1648# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -1036,8 +1675,10 @@ CONFIG_USB_STORAGE=y
1036# CONFIG_USB_STORAGE_SDDR55 is not set 1675# CONFIG_USB_STORAGE_SDDR55 is not set
1037# CONFIG_USB_STORAGE_JUMPSHOT is not set 1676# CONFIG_USB_STORAGE_JUMPSHOT is not set
1038# CONFIG_USB_STORAGE_ALAUDA is not set 1677# CONFIG_USB_STORAGE_ALAUDA is not set
1678# CONFIG_USB_STORAGE_ONETOUCH is not set
1039# CONFIG_USB_STORAGE_KARMA is not set 1679# CONFIG_USB_STORAGE_KARMA is not set
1040# CONFIG_USB_LIBUSUAL is not set 1680# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1681CONFIG_USB_LIBUSUAL=y
1041 1682
1042# 1683#
1043# USB Imaging devices 1684# USB Imaging devices
@@ -1049,10 +1690,6 @@ CONFIG_USB_MON=y
1049# 1690#
1050# USB port drivers 1691# USB port drivers
1051# 1692#
1052
1053#
1054# USB Serial Converter support
1055#
1056# CONFIG_USB_SERIAL is not set 1693# CONFIG_USB_SERIAL is not set
1057 1694
1058# 1695#
@@ -1078,98 +1715,126 @@ CONFIG_USB_MON=y
1078# CONFIG_USB_TRANCEVIBRATOR is not set 1715# CONFIG_USB_TRANCEVIBRATOR is not set
1079# CONFIG_USB_IOWARRIOR is not set 1716# CONFIG_USB_IOWARRIOR is not set
1080# CONFIG_USB_TEST is not set 1717# CONFIG_USB_TEST is not set
1718# CONFIG_USB_GADGET is not set
1719# CONFIG_MMC is not set
1720# CONFIG_MEMSTICK is not set
1721CONFIG_NEW_LEDS=y
1722CONFIG_LEDS_CLASS=y
1081 1723
1082# 1724#
1083# USB DSL modem support 1725# LED drivers
1084# 1726#
1727# CONFIG_LEDS_CLEVO_MAIL is not set
1085 1728
1086# 1729#
1087# USB Gadget Support 1730# LED Triggers
1088# 1731#
1089# CONFIG_USB_GADGET is not set 1732CONFIG_LEDS_TRIGGERS=y
1090# CONFIG_MMC is not set 1733# CONFIG_LEDS_TRIGGER_TIMER is not set
1734# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
1735# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
1736# CONFIG_ACCESSIBILITY is not set
1737# CONFIG_INFINIBAND is not set
1738CONFIG_EDAC=y
1091 1739
1092# 1740#
1093# LED devices 1741# Reporting subsystems
1094# 1742#
1095# CONFIG_NEW_LEDS is not set 1743# CONFIG_EDAC_DEBUG is not set
1744# CONFIG_EDAC_MM_EDAC is not set
1745CONFIG_RTC_LIB=y
1746CONFIG_RTC_CLASS=y
1747# CONFIG_RTC_HCTOSYS is not set
1748# CONFIG_RTC_DEBUG is not set
1096 1749
1097# 1750#
1098# LED drivers 1751# RTC interfaces
1099# 1752#
1753CONFIG_RTC_INTF_SYSFS=y
1754CONFIG_RTC_INTF_PROC=y
1755CONFIG_RTC_INTF_DEV=y
1756# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1757# CONFIG_RTC_DRV_TEST is not set
1100 1758
1101# 1759#
1102# LED Triggers 1760# I2C RTC drivers
1103# 1761#
1104# CONFIG_INFINIBAND is not set 1762# CONFIG_RTC_DRV_DS1307 is not set
1105# CONFIG_EDAC is not set 1763# CONFIG_RTC_DRV_DS1374 is not set
1764# CONFIG_RTC_DRV_DS1672 is not set
1765# CONFIG_RTC_DRV_MAX6900 is not set
1766# CONFIG_RTC_DRV_RS5C372 is not set
1767# CONFIG_RTC_DRV_ISL1208 is not set
1768# CONFIG_RTC_DRV_X1205 is not set
1769# CONFIG_RTC_DRV_PCF8563 is not set
1770# CONFIG_RTC_DRV_PCF8583 is not set
1771# CONFIG_RTC_DRV_M41T80 is not set
1772# CONFIG_RTC_DRV_S35390A is not set
1106 1773
1107# 1774#
1108# Real Time Clock 1775# SPI RTC drivers
1109# 1776#
1110# CONFIG_RTC_CLASS is not set
1111 1777
1112# 1778#
1113# DMA Engine support 1779# Platform RTC drivers
1114# 1780#
1115# CONFIG_DMA_ENGINE is not set 1781CONFIG_RTC_DRV_CMOS=y
1782# CONFIG_RTC_DRV_DS1511 is not set
1783# CONFIG_RTC_DRV_DS1553 is not set
1784# CONFIG_RTC_DRV_DS1742 is not set
1785# CONFIG_RTC_DRV_STK17TA8 is not set
1786# CONFIG_RTC_DRV_M48T86 is not set
1787# CONFIG_RTC_DRV_M48T59 is not set
1788# CONFIG_RTC_DRV_V3020 is not set
1116 1789
1117# 1790#
1118# DMA Clients 1791# on-CPU RTC drivers
1119# 1792#
1793CONFIG_DMADEVICES=y
1120 1794
1121# 1795#
1122# DMA Devices 1796# DMA Devices
1123# 1797#
1124CONFIG_VIRTUALIZATION=y 1798# CONFIG_INTEL_IOATDMA is not set
1125# CONFIG_KVM is not set
1126
1127#
1128# Userspace I/O
1129#
1130# CONFIG_UIO is not set 1799# CONFIG_UIO is not set
1131 1800
1132# 1801#
1133# Firmware Drivers 1802# Firmware Drivers
1134# 1803#
1135# CONFIG_EDD is not set 1804# CONFIG_EDD is not set
1805CONFIG_EFI_VARS=y
1136# CONFIG_DELL_RBU is not set 1806# CONFIG_DELL_RBU is not set
1137# CONFIG_DCDBAS is not set 1807# CONFIG_DCDBAS is not set
1138CONFIG_DMIID=y 1808CONFIG_DMIID=y
1809# CONFIG_ISCSI_IBFT_FIND is not set
1139 1810
1140# 1811#
1141# File systems 1812# File systems
1142# 1813#
1143CONFIG_EXT2_FS=y 1814# CONFIG_EXT2_FS is not set
1144CONFIG_EXT2_FS_XATTR=y
1145CONFIG_EXT2_FS_POSIX_ACL=y
1146# CONFIG_EXT2_FS_SECURITY is not set
1147# CONFIG_EXT2_FS_XIP is not set
1148CONFIG_EXT3_FS=y 1815CONFIG_EXT3_FS=y
1149CONFIG_EXT3_FS_XATTR=y 1816CONFIG_EXT3_FS_XATTR=y
1150CONFIG_EXT3_FS_POSIX_ACL=y 1817CONFIG_EXT3_FS_POSIX_ACL=y
1151# CONFIG_EXT3_FS_SECURITY is not set 1818CONFIG_EXT3_FS_SECURITY=y
1152# CONFIG_EXT4DEV_FS is not set 1819# CONFIG_EXT4DEV_FS is not set
1153CONFIG_JBD=y 1820CONFIG_JBD=y
1154# CONFIG_JBD_DEBUG is not set 1821# CONFIG_JBD_DEBUG is not set
1155CONFIG_FS_MBCACHE=y 1822CONFIG_FS_MBCACHE=y
1156CONFIG_REISERFS_FS=y 1823# CONFIG_REISERFS_FS is not set
1157# CONFIG_REISERFS_CHECK is not set
1158# CONFIG_REISERFS_PROC_INFO is not set
1159CONFIG_REISERFS_FS_XATTR=y
1160CONFIG_REISERFS_FS_POSIX_ACL=y
1161# CONFIG_REISERFS_FS_SECURITY is not set
1162# CONFIG_JFS_FS is not set 1824# CONFIG_JFS_FS is not set
1163CONFIG_FS_POSIX_ACL=y 1825CONFIG_FS_POSIX_ACL=y
1164# CONFIG_XFS_FS is not set 1826# CONFIG_XFS_FS is not set
1165# CONFIG_GFS2_FS is not set 1827# CONFIG_GFS2_FS is not set
1166# CONFIG_OCFS2_FS is not set 1828# CONFIG_OCFS2_FS is not set
1167# CONFIG_MINIX_FS is not set 1829CONFIG_DNOTIFY=y
1168# CONFIG_ROMFS_FS is not set
1169CONFIG_INOTIFY=y 1830CONFIG_INOTIFY=y
1170CONFIG_INOTIFY_USER=y 1831CONFIG_INOTIFY_USER=y
1171# CONFIG_QUOTA is not set 1832CONFIG_QUOTA=y
1172CONFIG_DNOTIFY=y 1833CONFIG_QUOTA_NETLINK_INTERFACE=y
1834# CONFIG_PRINT_QUOTA_WARNING is not set
1835# CONFIG_QFMT_V1 is not set
1836CONFIG_QFMT_V2=y
1837CONFIG_QUOTACTL=y
1173# CONFIG_AUTOFS_FS is not set 1838# CONFIG_AUTOFS_FS is not set
1174CONFIG_AUTOFS4_FS=y 1839CONFIG_AUTOFS4_FS=y
1175# CONFIG_FUSE_FS is not set 1840# CONFIG_FUSE_FS is not set
@@ -1180,7 +1845,7 @@ CONFIG_GENERIC_ACL=y
1180# 1845#
1181CONFIG_ISO9660_FS=y 1846CONFIG_ISO9660_FS=y
1182CONFIG_JOLIET=y 1847CONFIG_JOLIET=y
1183# CONFIG_ZISOFS is not set 1848CONFIG_ZISOFS=y
1184# CONFIG_UDF_FS is not set 1849# CONFIG_UDF_FS is not set
1185 1850
1186# 1851#
@@ -1198,13 +1863,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1198# 1863#
1199CONFIG_PROC_FS=y 1864CONFIG_PROC_FS=y
1200CONFIG_PROC_KCORE=y 1865CONFIG_PROC_KCORE=y
1866CONFIG_PROC_VMCORE=y
1201CONFIG_PROC_SYSCTL=y 1867CONFIG_PROC_SYSCTL=y
1202CONFIG_SYSFS=y 1868CONFIG_SYSFS=y
1203CONFIG_TMPFS=y 1869CONFIG_TMPFS=y
1204CONFIG_TMPFS_POSIX_ACL=y 1870CONFIG_TMPFS_POSIX_ACL=y
1205CONFIG_HUGETLBFS=y 1871CONFIG_HUGETLBFS=y
1206CONFIG_HUGETLB_PAGE=y 1872CONFIG_HUGETLB_PAGE=y
1207CONFIG_RAMFS=y
1208# CONFIG_CONFIGFS_FS is not set 1873# CONFIG_CONFIGFS_FS is not set
1209 1874
1210# 1875#
@@ -1212,6 +1877,7 @@ CONFIG_RAMFS=y
1212# 1877#
1213# CONFIG_ADFS_FS is not set 1878# CONFIG_ADFS_FS is not set
1214# CONFIG_AFFS_FS is not set 1879# CONFIG_AFFS_FS is not set
1880# CONFIG_ECRYPT_FS is not set
1215# CONFIG_HFS_FS is not set 1881# CONFIG_HFS_FS is not set
1216# CONFIG_HFSPLUS_FS is not set 1882# CONFIG_HFSPLUS_FS is not set
1217# CONFIG_BEFS_FS is not set 1883# CONFIG_BEFS_FS is not set
@@ -1219,33 +1885,15 @@ CONFIG_RAMFS=y
1219# CONFIG_EFS_FS is not set 1885# CONFIG_EFS_FS is not set
1220# CONFIG_CRAMFS is not set 1886# CONFIG_CRAMFS is not set
1221# CONFIG_VXFS_FS is not set 1887# CONFIG_VXFS_FS is not set
1888# CONFIG_MINIX_FS is not set
1222# CONFIG_HPFS_FS is not set 1889# CONFIG_HPFS_FS is not set
1223# CONFIG_QNX4FS_FS is not set 1890# CONFIG_QNX4FS_FS is not set
1891# CONFIG_ROMFS_FS is not set
1224# CONFIG_SYSV_FS is not set 1892# CONFIG_SYSV_FS is not set
1225# CONFIG_UFS_FS is not set 1893# CONFIG_UFS_FS is not set
1226 1894CONFIG_NETWORK_FILESYSTEMS=y
1227# 1895# CONFIG_NFS_FS is not set
1228# Network File Systems 1896# CONFIG_NFSD is not set
1229#
1230CONFIG_NFS_FS=y
1231CONFIG_NFS_V3=y
1232# CONFIG_NFS_V3_ACL is not set
1233# CONFIG_NFS_V4 is not set
1234# CONFIG_NFS_DIRECTIO is not set
1235CONFIG_NFSD=y
1236CONFIG_NFSD_V3=y
1237# CONFIG_NFSD_V3_ACL is not set
1238# CONFIG_NFSD_V4 is not set
1239CONFIG_NFSD_TCP=y
1240CONFIG_ROOT_NFS=y
1241CONFIG_LOCKD=y
1242CONFIG_LOCKD_V4=y
1243CONFIG_EXPORTFS=y
1244CONFIG_NFS_COMMON=y
1245CONFIG_SUNRPC=y
1246# CONFIG_SUNRPC_BIND34 is not set
1247# CONFIG_RPCSEC_GSS_KRB5 is not set
1248# CONFIG_RPCSEC_GSS_SPKM3 is not set
1249# CONFIG_SMB_FS is not set 1897# CONFIG_SMB_FS is not set
1250# CONFIG_CIFS is not set 1898# CONFIG_CIFS is not set
1251# CONFIG_NCP_FS is not set 1899# CONFIG_NCP_FS is not set
@@ -1255,14 +1903,26 @@ CONFIG_SUNRPC=y
1255# 1903#
1256# Partition Types 1904# Partition Types
1257# 1905#
1258# CONFIG_PARTITION_ADVANCED is not set 1906CONFIG_PARTITION_ADVANCED=y
1907# CONFIG_ACORN_PARTITION is not set
1908CONFIG_OSF_PARTITION=y
1909CONFIG_AMIGA_PARTITION=y
1910# CONFIG_ATARI_PARTITION is not set
1911CONFIG_MAC_PARTITION=y
1259CONFIG_MSDOS_PARTITION=y 1912CONFIG_MSDOS_PARTITION=y
1260 1913CONFIG_BSD_DISKLABEL=y
1261# 1914CONFIG_MINIX_SUBPARTITION=y
1262# Native Language Support 1915CONFIG_SOLARIS_X86_PARTITION=y
1263# 1916CONFIG_UNIXWARE_DISKLABEL=y
1917# CONFIG_LDM_PARTITION is not set
1918CONFIG_SGI_PARTITION=y
1919# CONFIG_ULTRIX_PARTITION is not set
1920CONFIG_SUN_PARTITION=y
1921CONFIG_KARMA_PARTITION=y
1922CONFIG_EFI_PARTITION=y
1923# CONFIG_SYSV68_PARTITION is not set
1264CONFIG_NLS=y 1924CONFIG_NLS=y
1265CONFIG_NLS_DEFAULT="iso8859-1" 1925CONFIG_NLS_DEFAULT="utf8"
1266CONFIG_NLS_CODEPAGE_437=y 1926CONFIG_NLS_CODEPAGE_437=y
1267# CONFIG_NLS_CODEPAGE_737 is not set 1927# CONFIG_NLS_CODEPAGE_737 is not set
1268# CONFIG_NLS_CODEPAGE_775 is not set 1928# CONFIG_NLS_CODEPAGE_775 is not set
@@ -1297,40 +1957,33 @@ CONFIG_NLS_ISO8859_1=y
1297# CONFIG_NLS_ISO8859_9 is not set 1957# CONFIG_NLS_ISO8859_9 is not set
1298# CONFIG_NLS_ISO8859_13 is not set 1958# CONFIG_NLS_ISO8859_13 is not set
1299# CONFIG_NLS_ISO8859_14 is not set 1959# CONFIG_NLS_ISO8859_14 is not set
1300CONFIG_NLS_ISO8859_15=y 1960# CONFIG_NLS_ISO8859_15 is not set
1301# CONFIG_NLS_KOI8_R is not set 1961# CONFIG_NLS_KOI8_R is not set
1302# CONFIG_NLS_KOI8_U is not set 1962# CONFIG_NLS_KOI8_U is not set
1303CONFIG_NLS_UTF8=y 1963CONFIG_NLS_UTF8=y
1304
1305#
1306# Distributed Lock Manager
1307#
1308# CONFIG_DLM is not set 1964# CONFIG_DLM is not set
1309 1965
1310# 1966#
1311# Instrumentation Support
1312#
1313CONFIG_PROFILING=y
1314CONFIG_OPROFILE=y
1315CONFIG_KPROBES=y
1316
1317#
1318# Kernel hacking 1967# Kernel hacking
1319# 1968#
1320CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1969CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1321# CONFIG_PRINTK_TIME is not set 1970# CONFIG_PRINTK_TIME is not set
1971# CONFIG_ENABLE_WARN_DEPRECATED is not set
1322# CONFIG_ENABLE_MUST_CHECK is not set 1972# CONFIG_ENABLE_MUST_CHECK is not set
1973CONFIG_FRAME_WARN=2048
1323CONFIG_MAGIC_SYSRQ=y 1974CONFIG_MAGIC_SYSRQ=y
1324CONFIG_UNUSED_SYMBOLS=y 1975# CONFIG_UNUSED_SYMBOLS is not set
1325CONFIG_DEBUG_FS=y 1976CONFIG_DEBUG_FS=y
1326# CONFIG_HEADERS_CHECK is not set 1977# CONFIG_HEADERS_CHECK is not set
1327CONFIG_DEBUG_KERNEL=y 1978CONFIG_DEBUG_KERNEL=y
1328# CONFIG_DEBUG_SHIRQ is not set 1979# CONFIG_DEBUG_SHIRQ is not set
1329CONFIG_DETECT_SOFTLOCKUP=y 1980# CONFIG_DETECT_SOFTLOCKUP is not set
1330# CONFIG_SCHED_DEBUG is not set 1981# CONFIG_SCHED_DEBUG is not set
1331# CONFIG_SCHEDSTATS is not set 1982CONFIG_SCHEDSTATS=y
1332CONFIG_TIMER_STATS=y 1983CONFIG_TIMER_STATS=y
1333# CONFIG_DEBUG_SLAB is not set 1984# CONFIG_DEBUG_OBJECTS is not set
1985# CONFIG_SLUB_DEBUG_ON is not set
1986# CONFIG_SLUB_STATS is not set
1334# CONFIG_DEBUG_RT_MUTEXES is not set 1987# CONFIG_DEBUG_RT_MUTEXES is not set
1335# CONFIG_RT_MUTEX_TESTER is not set 1988# CONFIG_RT_MUTEX_TESTER is not set
1336# CONFIG_DEBUG_SPINLOCK is not set 1989# CONFIG_DEBUG_SPINLOCK is not set
@@ -1344,28 +1997,162 @@ CONFIG_TIMER_STATS=y
1344CONFIG_DEBUG_BUGVERBOSE=y 1997CONFIG_DEBUG_BUGVERBOSE=y
1345# CONFIG_DEBUG_INFO is not set 1998# CONFIG_DEBUG_INFO is not set
1346# CONFIG_DEBUG_VM is not set 1999# CONFIG_DEBUG_VM is not set
2000# CONFIG_DEBUG_WRITECOUNT is not set
1347# CONFIG_DEBUG_LIST is not set 2001# CONFIG_DEBUG_LIST is not set
1348# CONFIG_FRAME_POINTER is not set 2002# CONFIG_DEBUG_SG is not set
1349CONFIG_OPTIMIZE_INLINING=y 2003CONFIG_FRAME_POINTER=y
2004# CONFIG_BOOT_PRINTK_DELAY is not set
1350# CONFIG_RCU_TORTURE_TEST is not set 2005# CONFIG_RCU_TORTURE_TEST is not set
2006# CONFIG_KPROBES_SANITY_TEST is not set
2007# CONFIG_BACKTRACE_SELF_TEST is not set
1351# CONFIG_LKDTM is not set 2008# CONFIG_LKDTM is not set
1352# CONFIG_FAULT_INJECTION is not set 2009# CONFIG_FAULT_INJECTION is not set
1353# CONFIG_DEBUG_RODATA is not set 2010# CONFIG_LATENCYTOP is not set
1354# CONFIG_IOMMU_DEBUG is not set 2011CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
2012# CONFIG_SAMPLES is not set
2013# CONFIG_KGDB is not set
2014CONFIG_HAVE_ARCH_KGDB=y
2015# CONFIG_NONPROMISC_DEVMEM is not set
2016CONFIG_EARLY_PRINTK=y
1355CONFIG_DEBUG_STACKOVERFLOW=y 2017CONFIG_DEBUG_STACKOVERFLOW=y
1356# CONFIG_DEBUG_STACK_USAGE is not set 2018CONFIG_DEBUG_STACK_USAGE=y
2019# CONFIG_DEBUG_PAGEALLOC is not set
2020# CONFIG_DEBUG_PER_CPU_MAPS is not set
2021# CONFIG_X86_PTDUMP is not set
2022CONFIG_DEBUG_RODATA=y
2023# CONFIG_DIRECT_GBPAGES is not set
2024# CONFIG_DEBUG_RODATA_TEST is not set
2025CONFIG_DEBUG_NX_TEST=m
2026CONFIG_X86_MPPARSE=y
2027# CONFIG_IOMMU_DEBUG is not set
2028CONFIG_IO_DELAY_TYPE_0X80=0
2029CONFIG_IO_DELAY_TYPE_0XED=1
2030CONFIG_IO_DELAY_TYPE_UDELAY=2
2031CONFIG_IO_DELAY_TYPE_NONE=3
2032CONFIG_IO_DELAY_0X80=y
2033# CONFIG_IO_DELAY_0XED is not set
2034# CONFIG_IO_DELAY_UDELAY is not set
2035# CONFIG_IO_DELAY_NONE is not set
2036CONFIG_DEFAULT_IO_DELAY_TYPE=0
2037CONFIG_DEBUG_BOOT_PARAMS=y
2038# CONFIG_CPA_DEBUG is not set
1357 2039
1358# 2040#
1359# Security options 2041# Security options
1360# 2042#
1361# CONFIG_KEYS is not set 2043CONFIG_KEYS=y
1362# CONFIG_SECURITY is not set 2044CONFIG_KEYS_DEBUG_PROC_KEYS=y
1363# CONFIG_CRYPTO is not set 2045CONFIG_SECURITY=y
2046CONFIG_SECURITY_NETWORK=y
2047# CONFIG_SECURITY_NETWORK_XFRM is not set
2048CONFIG_SECURITY_CAPABILITIES=y
2049CONFIG_SECURITY_FILE_CAPABILITIES=y
2050# CONFIG_SECURITY_ROOTPLUG is not set
2051CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536
2052CONFIG_SECURITY_SELINUX=y
2053CONFIG_SECURITY_SELINUX_BOOTPARAM=y
2054CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
2055CONFIG_SECURITY_SELINUX_DISABLE=y
2056CONFIG_SECURITY_SELINUX_DEVELOP=y
2057CONFIG_SECURITY_SELINUX_AVC_STATS=y
2058CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
2059# CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set
2060# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
2061# CONFIG_SECURITY_SMACK is not set
2062CONFIG_CRYPTO=y
2063
2064#
2065# Crypto core or helper
2066#
2067CONFIG_CRYPTO_ALGAPI=y
2068CONFIG_CRYPTO_AEAD=y
2069CONFIG_CRYPTO_BLKCIPHER=y
2070CONFIG_CRYPTO_HASH=y
2071CONFIG_CRYPTO_MANAGER=y
2072# CONFIG_CRYPTO_GF128MUL is not set
2073# CONFIG_CRYPTO_NULL is not set
2074# CONFIG_CRYPTO_CRYPTD is not set
2075CONFIG_CRYPTO_AUTHENC=y
2076# CONFIG_CRYPTO_TEST is not set
2077
2078#
2079# Authenticated Encryption with Associated Data
2080#
2081# CONFIG_CRYPTO_CCM is not set
2082# CONFIG_CRYPTO_GCM is not set
2083# CONFIG_CRYPTO_SEQIV is not set
2084
2085#
2086# Block modes
2087#
2088CONFIG_CRYPTO_CBC=y
2089# CONFIG_CRYPTO_CTR is not set
2090# CONFIG_CRYPTO_CTS is not set
2091CONFIG_CRYPTO_ECB=y
2092# CONFIG_CRYPTO_LRW is not set
2093# CONFIG_CRYPTO_PCBC is not set
2094# CONFIG_CRYPTO_XTS is not set
2095
2096#
2097# Hash modes
2098#
2099CONFIG_CRYPTO_HMAC=y
2100# CONFIG_CRYPTO_XCBC is not set
2101
2102#
2103# Digest
2104#
2105# CONFIG_CRYPTO_CRC32C is not set
2106# CONFIG_CRYPTO_MD4 is not set
2107CONFIG_CRYPTO_MD5=y
2108# CONFIG_CRYPTO_MICHAEL_MIC is not set
2109CONFIG_CRYPTO_SHA1=y
2110# CONFIG_CRYPTO_SHA256 is not set
2111# CONFIG_CRYPTO_SHA512 is not set
2112# CONFIG_CRYPTO_TGR192 is not set
2113# CONFIG_CRYPTO_WP512 is not set
2114
2115#
2116# Ciphers
2117#
2118CONFIG_CRYPTO_AES=y
2119# CONFIG_CRYPTO_AES_X86_64 is not set
2120# CONFIG_CRYPTO_ANUBIS is not set
2121CONFIG_CRYPTO_ARC4=y
2122# CONFIG_CRYPTO_BLOWFISH is not set
2123# CONFIG_CRYPTO_CAMELLIA is not set
2124# CONFIG_CRYPTO_CAST5 is not set
2125# CONFIG_CRYPTO_CAST6 is not set
2126CONFIG_CRYPTO_DES=y
2127# CONFIG_CRYPTO_FCRYPT is not set
2128# CONFIG_CRYPTO_KHAZAD is not set
2129# CONFIG_CRYPTO_SALSA20 is not set
2130# CONFIG_CRYPTO_SALSA20_X86_64 is not set
2131# CONFIG_CRYPTO_SEED is not set
2132# CONFIG_CRYPTO_SERPENT is not set
2133# CONFIG_CRYPTO_TEA is not set
2134# CONFIG_CRYPTO_TWOFISH is not set
2135# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
2136
2137#
2138# Compression
2139#
2140# CONFIG_CRYPTO_DEFLATE is not set
2141# CONFIG_CRYPTO_LZO is not set
2142CONFIG_CRYPTO_HW=y
2143# CONFIG_CRYPTO_DEV_HIFN_795X is not set
2144CONFIG_HAVE_KVM=y
2145CONFIG_VIRTUALIZATION=y
2146# CONFIG_KVM is not set
2147# CONFIG_VIRTIO_PCI is not set
2148# CONFIG_VIRTIO_BALLOON is not set
1364 2149
1365# 2150#
1366# Library routines 2151# Library routines
1367# 2152#
1368CONFIG_BITREVERSE=y 2153CONFIG_BITREVERSE=y
2154CONFIG_GENERIC_FIND_FIRST_BIT=y
2155CONFIG_GENERIC_FIND_NEXT_BIT=y
1369# CONFIG_CRC_CCITT is not set 2156# CONFIG_CRC_CCITT is not set
1370# CONFIG_CRC16 is not set 2157# CONFIG_CRC16 is not set
1371# CONFIG_CRC_ITU_T is not set 2158# CONFIG_CRC_ITU_T is not set
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
index b5e329da166c..3aefbce2de48 100644
--- a/arch/x86/ia32/ia32entry.S
+++ b/arch/x86/ia32/ia32entry.S
@@ -370,13 +370,11 @@ quiet_ni_syscall:
370 PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn, %rdi 370 PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn, %rdi
371 PTREGSCALL stub32_sigreturn, sys32_sigreturn, %rdi 371 PTREGSCALL stub32_sigreturn, sys32_sigreturn, %rdi
372 PTREGSCALL stub32_sigaltstack, sys32_sigaltstack, %rdx 372 PTREGSCALL stub32_sigaltstack, sys32_sigaltstack, %rdx
373 PTREGSCALL stub32_sigsuspend, sys32_sigsuspend, %rcx
374 PTREGSCALL stub32_execve, sys32_execve, %rcx 373 PTREGSCALL stub32_execve, sys32_execve, %rcx
375 PTREGSCALL stub32_fork, sys_fork, %rdi 374 PTREGSCALL stub32_fork, sys_fork, %rdi
376 PTREGSCALL stub32_clone, sys32_clone, %rdx 375 PTREGSCALL stub32_clone, sys32_clone, %rdx
377 PTREGSCALL stub32_vfork, sys_vfork, %rdi 376 PTREGSCALL stub32_vfork, sys_vfork, %rdi
378 PTREGSCALL stub32_iopl, sys_iopl, %rsi 377 PTREGSCALL stub32_iopl, sys_iopl, %rsi
379 PTREGSCALL stub32_rt_sigsuspend, sys_rt_sigsuspend, %rdx
380 378
381ENTRY(ia32_ptregs_common) 379ENTRY(ia32_ptregs_common)
382 popq %r11 380 popq %r11
@@ -476,7 +474,7 @@ ia32_sys_call_table:
476 .quad sys_ssetmask 474 .quad sys_ssetmask
477 .quad sys_setreuid16 /* 70 */ 475 .quad sys_setreuid16 /* 70 */
478 .quad sys_setregid16 476 .quad sys_setregid16
479 .quad stub32_sigsuspend 477 .quad sys32_sigsuspend
480 .quad compat_sys_sigpending 478 .quad compat_sys_sigpending
481 .quad sys_sethostname 479 .quad sys_sethostname
482 .quad compat_sys_setrlimit /* 75 */ 480 .quad compat_sys_setrlimit /* 75 */
@@ -583,7 +581,7 @@ ia32_sys_call_table:
583 .quad sys32_rt_sigpending 581 .quad sys32_rt_sigpending
584 .quad compat_sys_rt_sigtimedwait 582 .quad compat_sys_rt_sigtimedwait
585 .quad sys32_rt_sigqueueinfo 583 .quad sys32_rt_sigqueueinfo
586 .quad stub32_rt_sigsuspend 584 .quad sys_rt_sigsuspend
587 .quad sys32_pread /* 180 */ 585 .quad sys32_pread /* 180 */
588 .quad sys32_pwrite 586 .quad sys32_pwrite
589 .quad sys_chown16 587 .quad sys_chown16
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index 5e618c3b4720..8a42b797cd6b 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -18,14 +18,13 @@ CFLAGS_tsc_64.o := $(nostackp)
18obj-y := process_$(BITS).o signal_$(BITS).o entry_$(BITS).o 18obj-y := process_$(BITS).o signal_$(BITS).o entry_$(BITS).o
19obj-y += traps_$(BITS).o irq_$(BITS).o 19obj-y += traps_$(BITS).o irq_$(BITS).o
20obj-y += time_$(BITS).o ioport.o ldt.o 20obj-y += time_$(BITS).o ioport.o ldt.o
21obj-y += setup_$(BITS).o i8259_$(BITS).o setup.o 21obj-y += setup_$(BITS).o i8259.o irqinit_$(BITS).o setup.o
22obj-$(CONFIG_X86_32) += sys_i386_32.o i386_ksyms_32.o 22obj-$(CONFIG_X86_32) += sys_i386_32.o i386_ksyms_32.o
23obj-$(CONFIG_X86_64) += sys_x86_64.o x8664_ksyms_64.o 23obj-$(CONFIG_X86_64) += sys_x86_64.o x8664_ksyms_64.o
24obj-$(CONFIG_X86_64) += syscall_64.o vsyscall_64.o setup64.o 24obj-$(CONFIG_X86_64) += syscall_64.o vsyscall_64.o setup64.o
25obj-y += bootflag.o e820_$(BITS).o 25obj-y += bootflag.o e820_$(BITS).o
26obj-y += pci-dma.o quirks.o i8237.o topology.o kdebugfs.o 26obj-y += pci-dma.o quirks.o i8237.o topology.o kdebugfs.o
27obj-y += alternative.o i8253.o pci-nommu.o 27obj-y += alternative.o i8253.o pci-nommu.o
28obj-$(CONFIG_X86_64) += bugs_64.o
29obj-y += tsc_$(BITS).o io_delay.o rtc.o 28obj-y += tsc_$(BITS).o io_delay.o rtc.o
30 29
31obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o 30obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o
@@ -82,6 +81,7 @@ obj-$(CONFIG_VMI) += vmi_32.o vmiclock_32.o
82obj-$(CONFIG_KVM_GUEST) += kvm.o 81obj-$(CONFIG_KVM_GUEST) += kvm.o
83obj-$(CONFIG_KVM_CLOCK) += kvmclock.o 82obj-$(CONFIG_KVM_CLOCK) += kvmclock.o
84obj-$(CONFIG_PARAVIRT) += paravirt.o paravirt_patch_$(BITS).o 83obj-$(CONFIG_PARAVIRT) += paravirt.o paravirt_patch_$(BITS).o
84obj-$(CONFIG_PARAVIRT_CLOCK) += pvclock.o
85 85
86obj-$(CONFIG_PCSPKR_PLATFORM) += pcspeaker.o 86obj-$(CONFIG_PCSPKR_PLATFORM) += pcspeaker.o
87 87
diff --git a/arch/x86/kernel/acpi/realmode/wakeup.S b/arch/x86/kernel/acpi/realmode/wakeup.S
index f9b77fb37e5b..3355973b12ac 100644
--- a/arch/x86/kernel/acpi/realmode/wakeup.S
+++ b/arch/x86/kernel/acpi/realmode/wakeup.S
@@ -5,6 +5,7 @@
5#include <asm/msr-index.h> 5#include <asm/msr-index.h>
6#include <asm/page.h> 6#include <asm/page.h>
7#include <asm/pgtable.h> 7#include <asm/pgtable.h>
8#include <asm/processor-flags.h>
8 9
9 .code16 10 .code16
10 .section ".header", "a" 11 .section ".header", "a"
@@ -24,6 +25,11 @@ pmode_gdt: .quad 0
24realmode_flags: .long 0 25realmode_flags: .long 0
25real_magic: .long 0 26real_magic: .long 0
26trampoline_segment: .word 0 27trampoline_segment: .word 0
28_pad1: .byte 0
29wakeup_jmp: .byte 0xea /* ljmpw */
30wakeup_jmp_off: .word 3f
31wakeup_jmp_seg: .word 0
32wakeup_gdt: .quad 0, 0, 0
27signature: .long 0x51ee1111 33signature: .long 0x51ee1111
28 34
29 .text 35 .text
@@ -34,11 +40,34 @@ _start:
34 cli 40 cli
35 cld 41 cld
36 42
43 /* Apparently some dimwit BIOS programmers don't know how to
44 program a PM to RM transition, and we might end up here with
45 junk in the data segment descriptor registers. The only way
46 to repair that is to go into PM and fix it ourselves... */
47 movw $16, %cx
48 lgdtl %cs:wakeup_gdt
49 movl %cr0, %eax
50 orb $X86_CR0_PE, %al
51 movl %eax, %cr0
52 jmp 1f
531: ljmpw $8, $2f
542:
55 movw %cx, %ds
56 movw %cx, %es
57 movw %cx, %ss
58 movw %cx, %fs
59 movw %cx, %gs
60
61 andb $~X86_CR0_PE, %al
62 movl %eax, %cr0
63 jmp wakeup_jmp
643:
37 /* Set up segments */ 65 /* Set up segments */
38 movw %cs, %ax 66 movw %cs, %ax
39 movw %ax, %ds 67 movw %ax, %ds
40 movw %ax, %es 68 movw %ax, %es
41 movw %ax, %ss 69 movw %ax, %ss
70 lidtl wakeup_idt
42 71
43 movl $wakeup_stack_end, %esp 72 movl $wakeup_stack_end, %esp
44 73
@@ -98,7 +127,14 @@ bogus_real_magic:
98 jmp 1b 127 jmp 1b
99 128
100 .data 129 .data
101 .balign 4 130 .balign 8
131
132 /* This is the standard real-mode IDT */
133wakeup_idt:
134 .word 0xffff /* limit */
135 .long 0 /* address */
136 .word 0
137
102 .globl HEAP, heap_end 138 .globl HEAP, heap_end
103HEAP: 139HEAP:
104 .long wakeup_heap 140 .long wakeup_heap
diff --git a/arch/x86/kernel/acpi/realmode/wakeup.h b/arch/x86/kernel/acpi/realmode/wakeup.h
index ef8166fe8020..69d38d0b2b64 100644
--- a/arch/x86/kernel/acpi/realmode/wakeup.h
+++ b/arch/x86/kernel/acpi/realmode/wakeup.h
@@ -24,6 +24,11 @@ struct wakeup_header {
24 u32 realmode_flags; 24 u32 realmode_flags;
25 u32 real_magic; 25 u32 real_magic;
26 u16 trampoline_segment; /* segment with trampoline code, 64-bit only */ 26 u16 trampoline_segment; /* segment with trampoline code, 64-bit only */
27 u8 _pad1;
28 u8 wakeup_jmp;
29 u16 wakeup_jmp_off;
30 u16 wakeup_jmp_seg;
31 u64 wakeup_gdt[3];
27 u32 signature; /* To check we have correct structure */ 32 u32 signature; /* To check we have correct structure */
28} __attribute__((__packed__)); 33} __attribute__((__packed__));
29 34
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
index afc25ee9964b..36af01f029ed 100644
--- a/arch/x86/kernel/acpi/sleep.c
+++ b/arch/x86/kernel/acpi/sleep.c
@@ -50,6 +50,20 @@ int acpi_save_state_mem(void)
50 50
51 header->video_mode = saved_video_mode; 51 header->video_mode = saved_video_mode;
52 52
53 header->wakeup_jmp_seg = acpi_wakeup_address >> 4;
54 /* GDT[0]: GDT self-pointer */
55 header->wakeup_gdt[0] =
56 (u64)(sizeof(header->wakeup_gdt) - 1) +
57 ((u64)(acpi_wakeup_address +
58 ((char *)&header->wakeup_gdt - (char *)acpi_realmode))
59 << 16);
60 /* GDT[1]: real-mode-like code segment */
61 header->wakeup_gdt[1] = (0x009bULL << 40) +
62 ((u64)acpi_wakeup_address << 16) + 0xffff;
63 /* GDT[2]: real-mode-like data segment */
64 header->wakeup_gdt[2] = (0x0093ULL << 40) +
65 ((u64)acpi_wakeup_address << 16) + 0xffff;
66
53#ifndef CONFIG_64BIT 67#ifndef CONFIG_64BIT
54 store_gdt((struct desc_ptr *)&header->pmode_gdt); 68 store_gdt((struct desc_ptr *)&header->pmode_gdt);
55 69
@@ -111,7 +125,7 @@ void __init acpi_reserve_bootmem(void)
111 return; 125 return;
112 } 126 }
113 127
114 acpi_wakeup_address = acpi_realmode; 128 acpi_wakeup_address = virt_to_phys((void *)acpi_realmode);
115} 129}
116 130
117 131
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c
index 479926d9e004..e819362c7068 100644
--- a/arch/x86/kernel/aperture_64.c
+++ b/arch/x86/kernel/aperture_64.c
@@ -35,6 +35,18 @@ int fallback_aper_force __initdata;
35 35
36int fix_aperture __initdata = 1; 36int fix_aperture __initdata = 1;
37 37
38struct bus_dev_range {
39 int bus;
40 int dev_base;
41 int dev_limit;
42};
43
44static struct bus_dev_range bus_dev_ranges[] __initdata = {
45 { 0x00, 0x18, 0x20},
46 { 0xff, 0x00, 0x20},
47 { 0xfe, 0x00, 0x20}
48};
49
38static struct resource gart_resource = { 50static struct resource gart_resource = {
39 .name = "GART", 51 .name = "GART",
40 .flags = IORESOURCE_MEM, 52 .flags = IORESOURCE_MEM,
@@ -55,8 +67,9 @@ static u32 __init allocate_aperture(void)
55 u32 aper_size; 67 u32 aper_size;
56 void *p; 68 void *p;
57 69
58 if (fallback_aper_order > 7) 70 /* aper_size should <= 1G */
59 fallback_aper_order = 7; 71 if (fallback_aper_order > 5)
72 fallback_aper_order = 5;
60 aper_size = (32 * 1024 * 1024) << fallback_aper_order; 73 aper_size = (32 * 1024 * 1024) << fallback_aper_order;
61 74
62 /* 75 /*
@@ -65,7 +78,20 @@ static u32 __init allocate_aperture(void)
65 * memory. Unfortunately we cannot move it up because that would 78 * memory. Unfortunately we cannot move it up because that would
66 * make the IOMMU useless. 79 * make the IOMMU useless.
67 */ 80 */
68 p = __alloc_bootmem_nopanic(aper_size, aper_size, 0); 81 /*
82 * using 512M as goal, in case kexec will load kernel_big
83 * that will do the on position decompress, and could overlap with
84 * that positon with gart that is used.
85 * sequende:
86 * kernel_small
87 * ==> kexec (with kdump trigger path or previous doesn't shutdown gart)
88 * ==> kernel_small(gart area become e820_reserved)
89 * ==> kexec (with kdump trigger path or previous doesn't shutdown gart)
90 * ==> kerne_big (uncompressed size will be big than 64M or 128M)
91 * so don't use 512M below as gart iommu, leave the space for kernel
92 * code for safe
93 */
94 p = __alloc_bootmem_nopanic(aper_size, aper_size, 512ULL<<20);
69 if (!p || __pa(p)+aper_size > 0xffffffff) { 95 if (!p || __pa(p)+aper_size > 0xffffffff) {
70 printk(KERN_ERR 96 printk(KERN_ERR
71 "Cannot allocate aperture memory hole (%p,%uK)\n", 97 "Cannot allocate aperture memory hole (%p,%uK)\n",
@@ -83,69 +109,53 @@ static u32 __init allocate_aperture(void)
83 return (u32)__pa(p); 109 return (u32)__pa(p);
84} 110}
85 111
86static int __init aperture_valid(u64 aper_base, u32 aper_size)
87{
88 if (!aper_base)
89 return 0;
90
91 if (aper_base + aper_size > 0x100000000UL) {
92 printk(KERN_ERR "Aperture beyond 4GB. Ignoring.\n");
93 return 0;
94 }
95 if (e820_any_mapped(aper_base, aper_base + aper_size, E820_RAM)) {
96 printk(KERN_ERR "Aperture pointing to e820 RAM. Ignoring.\n");
97 return 0;
98 }
99 if (aper_size < 64*1024*1024) {
100 printk(KERN_ERR "Aperture too small (%d MB)\n", aper_size>>20);
101 return 0;
102 }
103
104 return 1;
105}
106 112
107/* Find a PCI capability */ 113/* Find a PCI capability */
108static __u32 __init find_cap(int num, int slot, int func, int cap) 114static u32 __init find_cap(int bus, int slot, int func, int cap)
109{ 115{
110 int bytes; 116 int bytes;
111 u8 pos; 117 u8 pos;
112 118
113 if (!(read_pci_config_16(num, slot, func, PCI_STATUS) & 119 if (!(read_pci_config_16(bus, slot, func, PCI_STATUS) &
114 PCI_STATUS_CAP_LIST)) 120 PCI_STATUS_CAP_LIST))
115 return 0; 121 return 0;
116 122
117 pos = read_pci_config_byte(num, slot, func, PCI_CAPABILITY_LIST); 123 pos = read_pci_config_byte(bus, slot, func, PCI_CAPABILITY_LIST);
118 for (bytes = 0; bytes < 48 && pos >= 0x40; bytes++) { 124 for (bytes = 0; bytes < 48 && pos >= 0x40; bytes++) {
119 u8 id; 125 u8 id;
120 126
121 pos &= ~3; 127 pos &= ~3;
122 id = read_pci_config_byte(num, slot, func, pos+PCI_CAP_LIST_ID); 128 id = read_pci_config_byte(bus, slot, func, pos+PCI_CAP_LIST_ID);
123 if (id == 0xff) 129 if (id == 0xff)
124 break; 130 break;
125 if (id == cap) 131 if (id == cap)
126 return pos; 132 return pos;
127 pos = read_pci_config_byte(num, slot, func, 133 pos = read_pci_config_byte(bus, slot, func,
128 pos+PCI_CAP_LIST_NEXT); 134 pos+PCI_CAP_LIST_NEXT);
129 } 135 }
130 return 0; 136 return 0;
131} 137}
132 138
133/* Read a standard AGPv3 bridge header */ 139/* Read a standard AGPv3 bridge header */
134static __u32 __init read_agp(int num, int slot, int func, int cap, u32 *order) 140static u32 __init read_agp(int bus, int slot, int func, int cap, u32 *order)
135{ 141{
136 u32 apsize; 142 u32 apsize;
137 u32 apsizereg; 143 u32 apsizereg;
138 int nbits; 144 int nbits;
139 u32 aper_low, aper_hi; 145 u32 aper_low, aper_hi;
140 u64 aper; 146 u64 aper;
147 u32 old_order;
141 148
142 printk(KERN_INFO "AGP bridge at %02x:%02x:%02x\n", num, slot, func); 149 printk(KERN_INFO "AGP bridge at %02x:%02x:%02x\n", bus, slot, func);
143 apsizereg = read_pci_config_16(num, slot, func, cap + 0x14); 150 apsizereg = read_pci_config_16(bus, slot, func, cap + 0x14);
144 if (apsizereg == 0xffffffff) { 151 if (apsizereg == 0xffffffff) {
145 printk(KERN_ERR "APSIZE in AGP bridge unreadable\n"); 152 printk(KERN_ERR "APSIZE in AGP bridge unreadable\n");
146 return 0; 153 return 0;
147 } 154 }
148 155
156 /* old_order could be the value from NB gart setting */
157 old_order = *order;
158
149 apsize = apsizereg & 0xfff; 159 apsize = apsizereg & 0xfff;
150 /* Some BIOS use weird encodings not in the AGPv3 table. */ 160 /* Some BIOS use weird encodings not in the AGPv3 table. */
151 if (apsize & 0xff) 161 if (apsize & 0xff)
@@ -155,14 +165,26 @@ static __u32 __init read_agp(int num, int slot, int func, int cap, u32 *order)
155 if ((int)*order < 0) /* < 32MB */ 165 if ((int)*order < 0) /* < 32MB */
156 *order = 0; 166 *order = 0;
157 167
158 aper_low = read_pci_config(num, slot, func, 0x10); 168 aper_low = read_pci_config(bus, slot, func, 0x10);
159 aper_hi = read_pci_config(num, slot, func, 0x14); 169 aper_hi = read_pci_config(bus, slot, func, 0x14);
160 aper = (aper_low & ~((1<<22)-1)) | ((u64)aper_hi << 32); 170 aper = (aper_low & ~((1<<22)-1)) | ((u64)aper_hi << 32);
161 171
172 /*
173 * On some sick chips, APSIZE is 0. It means it wants 4G
174 * so let double check that order, and lets trust AMD NB settings:
175 */
176 printk(KERN_INFO "Aperture from AGP @ %Lx old size %u MB\n",
177 aper, 32 << old_order);
178 if (aper + (32ULL<<(20 + *order)) > 0x100000000ULL) {
179 printk(KERN_INFO "Aperture size %u MB (APSIZE %x) is not right, using settings from NB\n",
180 32 << *order, apsizereg);
181 *order = old_order;
182 }
183
162 printk(KERN_INFO "Aperture from AGP @ %Lx size %u MB (APSIZE %x)\n", 184 printk(KERN_INFO "Aperture from AGP @ %Lx size %u MB (APSIZE %x)\n",
163 aper, 32 << *order, apsizereg); 185 aper, 32 << *order, apsizereg);
164 186
165 if (!aperture_valid(aper, (32*1024*1024) << *order)) 187 if (!aperture_valid(aper, (32*1024*1024) << *order, 32<<20))
166 return 0; 188 return 0;
167 return (u32)aper; 189 return (u32)aper;
168} 190}
@@ -180,17 +202,17 @@ static __u32 __init read_agp(int num, int slot, int func, int cap, u32 *order)
180 * the AGP bridges should be always an own bus on the HT hierarchy, 202 * the AGP bridges should be always an own bus on the HT hierarchy,
181 * but do it here for future safety. 203 * but do it here for future safety.
182 */ 204 */
183static __u32 __init search_agp_bridge(u32 *order, int *valid_agp) 205static u32 __init search_agp_bridge(u32 *order, int *valid_agp)
184{ 206{
185 int num, slot, func; 207 int bus, slot, func;
186 208
187 /* Poor man's PCI discovery */ 209 /* Poor man's PCI discovery */
188 for (num = 0; num < 256; num++) { 210 for (bus = 0; bus < 256; bus++) {
189 for (slot = 0; slot < 32; slot++) { 211 for (slot = 0; slot < 32; slot++) {
190 for (func = 0; func < 8; func++) { 212 for (func = 0; func < 8; func++) {
191 u32 class, cap; 213 u32 class, cap;
192 u8 type; 214 u8 type;
193 class = read_pci_config(num, slot, func, 215 class = read_pci_config(bus, slot, func,
194 PCI_CLASS_REVISION); 216 PCI_CLASS_REVISION);
195 if (class == 0xffffffff) 217 if (class == 0xffffffff)
196 break; 218 break;
@@ -199,17 +221,17 @@ static __u32 __init search_agp_bridge(u32 *order, int *valid_agp)
199 case PCI_CLASS_BRIDGE_HOST: 221 case PCI_CLASS_BRIDGE_HOST:
200 case PCI_CLASS_BRIDGE_OTHER: /* needed? */ 222 case PCI_CLASS_BRIDGE_OTHER: /* needed? */
201 /* AGP bridge? */ 223 /* AGP bridge? */
202 cap = find_cap(num, slot, func, 224 cap = find_cap(bus, slot, func,
203 PCI_CAP_ID_AGP); 225 PCI_CAP_ID_AGP);
204 if (!cap) 226 if (!cap)
205 break; 227 break;
206 *valid_agp = 1; 228 *valid_agp = 1;
207 return read_agp(num, slot, func, cap, 229 return read_agp(bus, slot, func, cap,
208 order); 230 order);
209 } 231 }
210 232
211 /* No multi-function device? */ 233 /* No multi-function device? */
212 type = read_pci_config_byte(num, slot, func, 234 type = read_pci_config_byte(bus, slot, func,
213 PCI_HEADER_TYPE); 235 PCI_HEADER_TYPE);
214 if (!(type & 0x80)) 236 if (!(type & 0x80))
215 break; 237 break;
@@ -249,36 +271,50 @@ void __init early_gart_iommu_check(void)
249 * or BIOS forget to put that in reserved. 271 * or BIOS forget to put that in reserved.
250 * try to update e820 to make that region as reserved. 272 * try to update e820 to make that region as reserved.
251 */ 273 */
252 int fix, num; 274 int i, fix, slot;
253 u32 ctl; 275 u32 ctl;
254 u32 aper_size = 0, aper_order = 0, last_aper_order = 0; 276 u32 aper_size = 0, aper_order = 0, last_aper_order = 0;
255 u64 aper_base = 0, last_aper_base = 0; 277 u64 aper_base = 0, last_aper_base = 0;
256 int aper_enabled = 0, last_aper_enabled = 0; 278 int aper_enabled = 0, last_aper_enabled = 0, last_valid = 0;
257 279
258 if (!early_pci_allowed()) 280 if (!early_pci_allowed())
259 return; 281 return;
260 282
283 /* This is mostly duplicate of iommu_hole_init */
261 fix = 0; 284 fix = 0;
262 for (num = 24; num < 32; num++) { 285 for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) {
263 if (!early_is_k8_nb(read_pci_config(0, num, 3, 0x00))) 286 int bus;
264 continue; 287 int dev_base, dev_limit;
265 288
266 ctl = read_pci_config(0, num, 3, 0x90); 289 bus = bus_dev_ranges[i].bus;
267 aper_enabled = ctl & 1; 290 dev_base = bus_dev_ranges[i].dev_base;
268 aper_order = (ctl >> 1) & 7; 291 dev_limit = bus_dev_ranges[i].dev_limit;
269 aper_size = (32 * 1024 * 1024) << aper_order; 292
270 aper_base = read_pci_config(0, num, 3, 0x94) & 0x7fff; 293 for (slot = dev_base; slot < dev_limit; slot++) {
271 aper_base <<= 25; 294 if (!early_is_k8_nb(read_pci_config(bus, slot, 3, 0x00)))
272 295 continue;
273 if ((last_aper_order && aper_order != last_aper_order) || 296
274 (last_aper_base && aper_base != last_aper_base) || 297 ctl = read_pci_config(bus, slot, 3, AMD64_GARTAPERTURECTL);
275 (last_aper_enabled && aper_enabled != last_aper_enabled)) { 298 aper_enabled = ctl & AMD64_GARTEN;
276 fix = 1; 299 aper_order = (ctl >> 1) & 7;
277 break; 300 aper_size = (32 * 1024 * 1024) << aper_order;
301 aper_base = read_pci_config(bus, slot, 3, AMD64_GARTAPERTUREBASE) & 0x7fff;
302 aper_base <<= 25;
303
304 if (last_valid) {
305 if ((aper_order != last_aper_order) ||
306 (aper_base != last_aper_base) ||
307 (aper_enabled != last_aper_enabled)) {
308 fix = 1;
309 break;
310 }
311 }
312
313 last_aper_order = aper_order;
314 last_aper_base = aper_base;
315 last_aper_enabled = aper_enabled;
316 last_valid = 1;
278 } 317 }
279 last_aper_order = aper_order;
280 last_aper_base = aper_base;
281 last_aper_enabled = aper_enabled;
282 } 318 }
283 319
284 if (!fix && !aper_enabled) 320 if (!fix && !aper_enabled)
@@ -290,32 +326,46 @@ void __init early_gart_iommu_check(void)
290 if (gart_fix_e820 && !fix && aper_enabled) { 326 if (gart_fix_e820 && !fix && aper_enabled) {
291 if (e820_any_mapped(aper_base, aper_base + aper_size, 327 if (e820_any_mapped(aper_base, aper_base + aper_size,
292 E820_RAM)) { 328 E820_RAM)) {
293 /* reserved it, so we can resuse it in second kernel */ 329 /* reserve it, so we can reuse it in second kernel */
294 printk(KERN_INFO "update e820 for GART\n"); 330 printk(KERN_INFO "update e820 for GART\n");
295 add_memory_region(aper_base, aper_size, E820_RESERVED); 331 add_memory_region(aper_base, aper_size, E820_RESERVED);
296 update_e820(); 332 update_e820();
297 } 333 }
298 return;
299 } 334 }
300 335
336 if (!fix)
337 return;
338
301 /* different nodes have different setting, disable them all at first*/ 339 /* different nodes have different setting, disable them all at first*/
302 for (num = 24; num < 32; num++) { 340 for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) {
303 if (!early_is_k8_nb(read_pci_config(0, num, 3, 0x00))) 341 int bus;
304 continue; 342 int dev_base, dev_limit;
343
344 bus = bus_dev_ranges[i].bus;
345 dev_base = bus_dev_ranges[i].dev_base;
346 dev_limit = bus_dev_ranges[i].dev_limit;
347
348 for (slot = dev_base; slot < dev_limit; slot++) {
349 if (!early_is_k8_nb(read_pci_config(bus, slot, 3, 0x00)))
350 continue;
305 351
306 ctl = read_pci_config(0, num, 3, 0x90); 352 ctl = read_pci_config(bus, slot, 3, AMD64_GARTAPERTURECTL);
307 ctl &= ~1; 353 ctl &= ~AMD64_GARTEN;
308 write_pci_config(0, num, 3, 0x90, ctl); 354 write_pci_config(bus, slot, 3, AMD64_GARTAPERTURECTL, ctl);
355 }
309 } 356 }
310 357
311} 358}
312 359
360static int __initdata printed_gart_size_msg;
361
313void __init gart_iommu_hole_init(void) 362void __init gart_iommu_hole_init(void)
314{ 363{
364 u32 agp_aper_base = 0, agp_aper_order = 0;
315 u32 aper_size, aper_alloc = 0, aper_order = 0, last_aper_order = 0; 365 u32 aper_size, aper_alloc = 0, aper_order = 0, last_aper_order = 0;
316 u64 aper_base, last_aper_base = 0; 366 u64 aper_base, last_aper_base = 0;
317 int fix, num, valid_agp = 0; 367 int fix, slot, valid_agp = 0;
318 int node; 368 int i, node;
319 369
320 if (gart_iommu_aperture_disabled || !fix_aperture || 370 if (gart_iommu_aperture_disabled || !fix_aperture ||
321 !early_pci_allowed()) 371 !early_pci_allowed())
@@ -323,38 +373,63 @@ void __init gart_iommu_hole_init(void)
323 373
324 printk(KERN_INFO "Checking aperture...\n"); 374 printk(KERN_INFO "Checking aperture...\n");
325 375
376 if (!fallback_aper_force)
377 agp_aper_base = search_agp_bridge(&agp_aper_order, &valid_agp);
378
326 fix = 0; 379 fix = 0;
327 node = 0; 380 node = 0;
328 for (num = 24; num < 32; num++) { 381 for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) {
329 if (!early_is_k8_nb(read_pci_config(0, num, 3, 0x00))) 382 int bus;
330 continue; 383 int dev_base, dev_limit;
331 384
332 iommu_detected = 1; 385 bus = bus_dev_ranges[i].bus;
333 gart_iommu_aperture = 1; 386 dev_base = bus_dev_ranges[i].dev_base;
334 387 dev_limit = bus_dev_ranges[i].dev_limit;
335 aper_order = (read_pci_config(0, num, 3, 0x90) >> 1) & 7; 388
336 aper_size = (32 * 1024 * 1024) << aper_order; 389 for (slot = dev_base; slot < dev_limit; slot++) {
337 aper_base = read_pci_config(0, num, 3, 0x94) & 0x7fff; 390 if (!early_is_k8_nb(read_pci_config(bus, slot, 3, 0x00)))
338 aper_base <<= 25; 391 continue;
339 392
340 printk(KERN_INFO "Node %d: aperture @ %Lx size %u MB\n", 393 iommu_detected = 1;
341 node, aper_base, aper_size >> 20); 394 gart_iommu_aperture = 1;
342 node++; 395
343 396 aper_order = (read_pci_config(bus, slot, 3, AMD64_GARTAPERTURECTL) >> 1) & 7;
344 if (!aperture_valid(aper_base, aper_size)) { 397 aper_size = (32 * 1024 * 1024) << aper_order;
345 fix = 1; 398 aper_base = read_pci_config(bus, slot, 3, AMD64_GARTAPERTUREBASE) & 0x7fff;
346 break; 399 aper_base <<= 25;
347 } 400
401 printk(KERN_INFO "Node %d: aperture @ %Lx size %u MB\n",
402 node, aper_base, aper_size >> 20);
403 node++;
404
405 if (!aperture_valid(aper_base, aper_size, 64<<20)) {
406 if (valid_agp && agp_aper_base &&
407 agp_aper_base == aper_base &&
408 agp_aper_order == aper_order) {
409 /* the same between two setting from NB and agp */
410 if (!no_iommu && end_pfn > MAX_DMA32_PFN && !printed_gart_size_msg) {
411 printk(KERN_ERR "you are using iommu with agp, but GART size is less than 64M\n");
412 printk(KERN_ERR "please increase GART size in your BIOS setup\n");
413 printk(KERN_ERR "if BIOS doesn't have that option, contact your HW vendor!\n");
414 printed_gart_size_msg = 1;
415 }
416 } else {
417 fix = 1;
418 goto out;
419 }
420 }
348 421
349 if ((last_aper_order && aper_order != last_aper_order) || 422 if ((last_aper_order && aper_order != last_aper_order) ||
350 (last_aper_base && aper_base != last_aper_base)) { 423 (last_aper_base && aper_base != last_aper_base)) {
351 fix = 1; 424 fix = 1;
352 break; 425 goto out;
426 }
427 last_aper_order = aper_order;
428 last_aper_base = aper_base;
353 } 429 }
354 last_aper_order = aper_order;
355 last_aper_base = aper_base;
356 } 430 }
357 431
432out:
358 if (!fix && !fallback_aper_force) { 433 if (!fix && !fallback_aper_force) {
359 if (last_aper_base) { 434 if (last_aper_base) {
360 unsigned long n = (32 * 1024 * 1024) << last_aper_order; 435 unsigned long n = (32 * 1024 * 1024) << last_aper_order;
@@ -364,8 +439,10 @@ void __init gart_iommu_hole_init(void)
364 return; 439 return;
365 } 440 }
366 441
367 if (!fallback_aper_force) 442 if (!fallback_aper_force) {
368 aper_alloc = search_agp_bridge(&aper_order, &valid_agp); 443 aper_alloc = agp_aper_base;
444 aper_order = agp_aper_order;
445 }
369 446
370 if (aper_alloc) { 447 if (aper_alloc) {
371 /* Got the aperture from the AGP bridge */ 448 /* Got the aperture from the AGP bridge */
@@ -401,16 +478,24 @@ void __init gart_iommu_hole_init(void)
401 } 478 }
402 479
403 /* Fix up the north bridges */ 480 /* Fix up the north bridges */
404 for (num = 24; num < 32; num++) { 481 for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) {
405 if (!early_is_k8_nb(read_pci_config(0, num, 3, 0x00))) 482 int bus;
406 continue; 483 int dev_base, dev_limit;
407 484
408 /* 485 bus = bus_dev_ranges[i].bus;
409 * Don't enable translation yet. That is done later. 486 dev_base = bus_dev_ranges[i].dev_base;
410 * Assume this BIOS didn't initialise the GART so 487 dev_limit = bus_dev_ranges[i].dev_limit;
411 * just overwrite all previous bits 488 for (slot = dev_base; slot < dev_limit; slot++) {
412 */ 489 if (!early_is_k8_nb(read_pci_config(bus, slot, 3, 0x00)))
413 write_pci_config(0, num, 3, 0x90, aper_order<<1); 490 continue;
414 write_pci_config(0, num, 3, 0x94, aper_alloc>>25); 491
492 /* Don't enable translation yet. That is done later.
493 Assume this BIOS didn't initialise the GART so
494 just overwrite all previous bits */
495 write_pci_config(bus, slot, 3, AMD64_GARTAPERTURECTL, aper_order << 1);
496 write_pci_config(bus, slot, 3, AMD64_GARTAPERTUREBASE, aper_alloc >> 25);
497 }
415 } 498 }
499
500 set_up_gart_resume(aper_order, aper_alloc);
416} 501}
diff --git a/arch/x86/kernel/apic_32.c b/arch/x86/kernel/apic_32.c
index 4b99b1bdeb6c..45d8da405ad9 100644
--- a/arch/x86/kernel/apic_32.c
+++ b/arch/x86/kernel/apic_32.c
@@ -64,9 +64,8 @@ static int enable_local_apic __initdata;
64 64
65/* Local APIC timer verification ok */ 65/* Local APIC timer verification ok */
66static int local_apic_timer_verify_ok; 66static int local_apic_timer_verify_ok;
67/* Disable local APIC timer from the kernel commandline or via dmi quirk 67/* Disable local APIC timer from the kernel commandline or via dmi quirk */
68 or using CPU MSR check */ 68static int local_apic_timer_disabled;
69int local_apic_timer_disabled;
70/* Local APIC timer works in C2 */ 69/* Local APIC timer works in C2 */
71int local_apic_timer_c2_ok; 70int local_apic_timer_c2_ok;
72EXPORT_SYMBOL_GPL(local_apic_timer_c2_ok); 71EXPORT_SYMBOL_GPL(local_apic_timer_c2_ok);
@@ -1154,9 +1153,6 @@ static int __init detect_init_APIC(void)
1154 if (l & MSR_IA32_APICBASE_ENABLE) 1153 if (l & MSR_IA32_APICBASE_ENABLE)
1155 mp_lapic_addr = l & MSR_IA32_APICBASE_BASE; 1154 mp_lapic_addr = l & MSR_IA32_APICBASE_BASE;
1156 1155
1157 if (nmi_watchdog != NMI_NONE && nmi_watchdog != NMI_DISABLED)
1158 nmi_watchdog = NMI_LOCAL_APIC;
1159
1160 printk(KERN_INFO "Found and enabled local APIC!\n"); 1156 printk(KERN_INFO "Found and enabled local APIC!\n");
1161 1157
1162 apic_pm_activate(); 1158 apic_pm_activate();
@@ -1269,6 +1265,10 @@ int __init APIC_init_uniprocessor(void)
1269 1265
1270 setup_local_APIC(); 1266 setup_local_APIC();
1271 1267
1268#ifdef CONFIG_X86_IO_APIC
1269 if (!smp_found_config || skip_ioapic_setup || !nr_ioapics)
1270#endif
1271 localise_nmi_watchdog();
1272 end_local_APIC_setup(); 1272 end_local_APIC_setup();
1273#ifdef CONFIG_X86_IO_APIC 1273#ifdef CONFIG_X86_IO_APIC
1274 if (smp_found_config) 1274 if (smp_found_config)
diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c
index 0633cfd0dc29..3ef7752aa8e5 100644
--- a/arch/x86/kernel/apic_64.c
+++ b/arch/x86/kernel/apic_64.c
@@ -43,7 +43,7 @@
43#include <mach_ipi.h> 43#include <mach_ipi.h>
44#include <mach_apic.h> 44#include <mach_apic.h>
45 45
46int disable_apic_timer __cpuinitdata; 46static int disable_apic_timer __cpuinitdata;
47static int apic_calibrate_pmtmr __initdata; 47static int apic_calibrate_pmtmr __initdata;
48int disable_apic; 48int disable_apic;
49 49
@@ -422,32 +422,8 @@ void __init setup_boot_APIC_clock(void)
422 setup_APIC_timer(); 422 setup_APIC_timer();
423} 423}
424 424
425/*
426 * AMD C1E enabled CPUs have a real nasty problem: Some BIOSes set the
427 * C1E flag only in the secondary CPU, so when we detect the wreckage
428 * we already have enabled the boot CPU local apic timer. Check, if
429 * disable_apic_timer is set and the DUMMY flag is cleared. If yes,
430 * set the DUMMY flag again and force the broadcast mode in the
431 * clockevents layer.
432 */
433static void __cpuinit check_boot_apic_timer_broadcast(void)
434{
435 if (!disable_apic_timer ||
436 (lapic_clockevent.features & CLOCK_EVT_FEAT_DUMMY))
437 return;
438
439 printk(KERN_INFO "AMD C1E detected late. Force timer broadcast.\n");
440 lapic_clockevent.features |= CLOCK_EVT_FEAT_DUMMY;
441
442 local_irq_enable();
443 clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_FORCE,
444 &boot_cpu_physical_apicid);
445 local_irq_disable();
446}
447
448void __cpuinit setup_secondary_APIC_clock(void) 425void __cpuinit setup_secondary_APIC_clock(void)
449{ 426{
450 check_boot_apic_timer_broadcast();
451 setup_APIC_timer(); 427 setup_APIC_timer();
452} 428}
453 429
@@ -875,7 +851,7 @@ static int __init detect_init_APIC(void)
875 851
876void __init early_init_lapic_mapping(void) 852void __init early_init_lapic_mapping(void)
877{ 853{
878 unsigned long apic_phys; 854 unsigned long phys_addr;
879 855
880 /* 856 /*
881 * If no local APIC can be found then go out 857 * If no local APIC can be found then go out
@@ -884,11 +860,11 @@ void __init early_init_lapic_mapping(void)
884 if (!smp_found_config) 860 if (!smp_found_config)
885 return; 861 return;
886 862
887 apic_phys = mp_lapic_addr; 863 phys_addr = mp_lapic_addr;
888 864
889 set_fixmap_nocache(FIX_APIC_BASE, apic_phys); 865 set_fixmap_nocache(FIX_APIC_BASE, phys_addr);
890 apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n", 866 apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n",
891 APIC_BASE, apic_phys); 867 APIC_BASE, phys_addr);
892 868
893 /* 869 /*
894 * Fetch the APIC ID of the BSP in case we have a 870 * Fetch the APIC ID of the BSP in case we have a
@@ -954,6 +930,8 @@ int __init APIC_init_uniprocessor(void)
954 if (!skip_ioapic_setup && nr_ioapics) 930 if (!skip_ioapic_setup && nr_ioapics)
955 enable_IO_APIC(); 931 enable_IO_APIC();
956 932
933 if (!smp_found_config || skip_ioapic_setup || !nr_ioapics)
934 localise_nmi_watchdog();
957 end_local_APIC_setup(); 935 end_local_APIC_setup();
958 936
959 if (smp_found_config && !skip_ioapic_setup && nr_ioapics) 937 if (smp_found_config && !skip_ioapic_setup && nr_ioapics)
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
index bf9290e29013..00e6d1370954 100644
--- a/arch/x86/kernel/apm_32.c
+++ b/arch/x86/kernel/apm_32.c
@@ -228,6 +228,7 @@
228#include <linux/suspend.h> 228#include <linux/suspend.h>
229#include <linux/kthread.h> 229#include <linux/kthread.h>
230#include <linux/jiffies.h> 230#include <linux/jiffies.h>
231#include <linux/smp_lock.h>
231 232
232#include <asm/system.h> 233#include <asm/system.h>
233#include <asm/uaccess.h> 234#include <asm/uaccess.h>
@@ -1149,7 +1150,7 @@ static void queue_event(apm_event_t event, struct apm_user *sender)
1149 as->event_tail = 0; 1150 as->event_tail = 0;
1150 } 1151 }
1151 as->events[as->event_head] = event; 1152 as->events[as->event_head] = event;
1152 if ((!as->suser) || (!as->writer)) 1153 if (!as->suser || !as->writer)
1153 continue; 1154 continue;
1154 switch (event) { 1155 switch (event) {
1155 case APM_SYS_SUSPEND: 1156 case APM_SYS_SUSPEND:
@@ -1396,7 +1397,7 @@ static void apm_mainloop(void)
1396 1397
1397static int check_apm_user(struct apm_user *as, const char *func) 1398static int check_apm_user(struct apm_user *as, const char *func)
1398{ 1399{
1399 if ((as == NULL) || (as->magic != APM_BIOS_MAGIC)) { 1400 if (as == NULL || as->magic != APM_BIOS_MAGIC) {
1400 printk(KERN_ERR "apm: %s passed bad filp\n", func); 1401 printk(KERN_ERR "apm: %s passed bad filp\n", func);
1401 return 1; 1402 return 1;
1402 } 1403 }
@@ -1459,18 +1460,19 @@ static unsigned int do_poll(struct file *fp, poll_table *wait)
1459 return 0; 1460 return 0;
1460} 1461}
1461 1462
1462static int do_ioctl(struct inode *inode, struct file *filp, 1463static long do_ioctl(struct file *filp, u_int cmd, u_long arg)
1463 u_int cmd, u_long arg)
1464{ 1464{
1465 struct apm_user *as; 1465 struct apm_user *as;
1466 int ret;
1466 1467
1467 as = filp->private_data; 1468 as = filp->private_data;
1468 if (check_apm_user(as, "ioctl")) 1469 if (check_apm_user(as, "ioctl"))
1469 return -EIO; 1470 return -EIO;
1470 if ((!as->suser) || (!as->writer)) 1471 if (!as->suser || !as->writer)
1471 return -EPERM; 1472 return -EPERM;
1472 switch (cmd) { 1473 switch (cmd) {
1473 case APM_IOC_STANDBY: 1474 case APM_IOC_STANDBY:
1475 lock_kernel();
1474 if (as->standbys_read > 0) { 1476 if (as->standbys_read > 0) {
1475 as->standbys_read--; 1477 as->standbys_read--;
1476 as->standbys_pending--; 1478 as->standbys_pending--;
@@ -1479,8 +1481,10 @@ static int do_ioctl(struct inode *inode, struct file *filp,
1479 queue_event(APM_USER_STANDBY, as); 1481 queue_event(APM_USER_STANDBY, as);
1480 if (standbys_pending <= 0) 1482 if (standbys_pending <= 0)
1481 standby(); 1483 standby();
1484 unlock_kernel();
1482 break; 1485 break;
1483 case APM_IOC_SUSPEND: 1486 case APM_IOC_SUSPEND:
1487 lock_kernel();
1484 if (as->suspends_read > 0) { 1488 if (as->suspends_read > 0) {
1485 as->suspends_read--; 1489 as->suspends_read--;
1486 as->suspends_pending--; 1490 as->suspends_pending--;
@@ -1488,16 +1492,17 @@ static int do_ioctl(struct inode *inode, struct file *filp,
1488 } else 1492 } else
1489 queue_event(APM_USER_SUSPEND, as); 1493 queue_event(APM_USER_SUSPEND, as);
1490 if (suspends_pending <= 0) { 1494 if (suspends_pending <= 0) {
1491 return suspend(1); 1495 ret = suspend(1);
1492 } else { 1496 } else {
1493 as->suspend_wait = 1; 1497 as->suspend_wait = 1;
1494 wait_event_interruptible(apm_suspend_waitqueue, 1498 wait_event_interruptible(apm_suspend_waitqueue,
1495 as->suspend_wait == 0); 1499 as->suspend_wait == 0);
1496 return as->suspend_result; 1500 ret = as->suspend_result;
1497 } 1501 }
1498 break; 1502 unlock_kernel();
1503 return ret;
1499 default: 1504 default:
1500 return -EINVAL; 1505 return -ENOTTY;
1501 } 1506 }
1502 return 0; 1507 return 0;
1503} 1508}
@@ -1860,7 +1865,7 @@ static const struct file_operations apm_bios_fops = {
1860 .owner = THIS_MODULE, 1865 .owner = THIS_MODULE,
1861 .read = do_read, 1866 .read = do_read,
1862 .poll = do_poll, 1867 .poll = do_poll,
1863 .ioctl = do_ioctl, 1868 .unlocked_ioctl = do_ioctl,
1864 .open = do_open, 1869 .open = do_open,
1865 .release = do_release, 1870 .release = do_release,
1866}; 1871};
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
index a0c6f8190887..65b1be5fe9ce 100644
--- a/arch/x86/kernel/cpu/Makefile
+++ b/arch/x86/kernel/cpu/Makefile
@@ -6,11 +6,15 @@ obj-y := intel_cacheinfo.o addon_cpuid_features.o
6obj-y += proc.o feature_names.o 6obj-y += proc.o feature_names.o
7 7
8obj-$(CONFIG_X86_32) += common.o bugs.o 8obj-$(CONFIG_X86_32) += common.o bugs.o
9obj-$(CONFIG_X86_64) += bugs_64.o
9obj-$(CONFIG_X86_32) += amd.o 10obj-$(CONFIG_X86_32) += amd.o
11obj-$(CONFIG_X86_64) += amd_64.o
10obj-$(CONFIG_X86_32) += cyrix.o 12obj-$(CONFIG_X86_32) += cyrix.o
11obj-$(CONFIG_X86_32) += centaur.o 13obj-$(CONFIG_X86_32) += centaur.o
14obj-$(CONFIG_X86_64) += centaur_64.o
12obj-$(CONFIG_X86_32) += transmeta.o 15obj-$(CONFIG_X86_32) += transmeta.o
13obj-$(CONFIG_X86_32) += intel.o 16obj-$(CONFIG_X86_32) += intel.o
17obj-$(CONFIG_X86_64) += intel_64.o
14obj-$(CONFIG_X86_32) += umc.o 18obj-$(CONFIG_X86_32) += umc.o
15 19
16obj-$(CONFIG_X86_MCE) += mcheck/ 20obj-$(CONFIG_X86_MCE) += mcheck/
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index 245866828294..81a07ca65d44 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -24,43 +24,6 @@
24extern void vide(void); 24extern void vide(void);
25__asm__(".align 4\nvide: ret"); 25__asm__(".align 4\nvide: ret");
26 26
27#ifdef CONFIG_X86_LOCAL_APIC
28#define ENABLE_C1E_MASK 0x18000000
29#define CPUID_PROCESSOR_SIGNATURE 1
30#define CPUID_XFAM 0x0ff00000
31#define CPUID_XFAM_K8 0x00000000
32#define CPUID_XFAM_10H 0x00100000
33#define CPUID_XFAM_11H 0x00200000
34#define CPUID_XMOD 0x000f0000
35#define CPUID_XMOD_REV_F 0x00040000
36
37/* AMD systems with C1E don't have a working lAPIC timer. Check for that. */
38static __cpuinit int amd_apic_timer_broken(void)
39{
40 u32 lo, hi;
41 u32 eax = cpuid_eax(CPUID_PROCESSOR_SIGNATURE);
42 switch (eax & CPUID_XFAM) {
43 case CPUID_XFAM_K8:
44 if ((eax & CPUID_XMOD) < CPUID_XMOD_REV_F)
45 break;
46 case CPUID_XFAM_10H:
47 case CPUID_XFAM_11H:
48 rdmsr(MSR_K8_ENABLE_C1E, lo, hi);
49 if (lo & ENABLE_C1E_MASK) {
50 if (smp_processor_id() != boot_cpu_physical_apicid)
51 printk(KERN_INFO "AMD C1E detected late. "
52 " Force timer broadcast.\n");
53 return 1;
54 }
55 break;
56 default:
57 /* err on the side of caution */
58 return 1;
59 }
60 return 0;
61}
62#endif
63
64int force_mwait __cpuinitdata; 27int force_mwait __cpuinitdata;
65 28
66static void __cpuinit early_init_amd(struct cpuinfo_x86 *c) 29static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
@@ -297,11 +260,6 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
297 num_cache_leaves = 3; 260 num_cache_leaves = 3;
298 } 261 }
299 262
300#ifdef CONFIG_X86_LOCAL_APIC
301 if (amd_apic_timer_broken())
302 local_apic_timer_disabled = 1;
303#endif
304
305 /* K6s reports MCEs but don't actually have all the MSRs */ 263 /* K6s reports MCEs but don't actually have all the MSRs */
306 if (c->x86 < 6) 264 if (c->x86 < 6)
307 clear_cpu_cap(c, X86_FEATURE_MCE); 265 clear_cpu_cap(c, X86_FEATURE_MCE);
diff --git a/arch/x86/kernel/cpu/amd_64.c b/arch/x86/kernel/cpu/amd_64.c
new file mode 100644
index 000000000000..30b7557c9641
--- /dev/null
+++ b/arch/x86/kernel/cpu/amd_64.c
@@ -0,0 +1,211 @@
1#include <linux/init.h>
2#include <linux/mm.h>
3
4#include <asm/numa_64.h>
5#include <asm/mmconfig.h>
6#include <asm/cacheflush.h>
7
8#include <mach_apic.h>
9
10#include "cpu.h"
11
12int force_mwait __cpuinitdata;
13
14#ifdef CONFIG_NUMA
15static int __cpuinit nearby_node(int apicid)
16{
17 int i, node;
18
19 for (i = apicid - 1; i >= 0; i--) {
20 node = apicid_to_node[i];
21 if (node != NUMA_NO_NODE && node_online(node))
22 return node;
23 }
24 for (i = apicid + 1; i < MAX_LOCAL_APIC; i++) {
25 node = apicid_to_node[i];
26 if (node != NUMA_NO_NODE && node_online(node))
27 return node;
28 }
29 return first_node(node_online_map); /* Shouldn't happen */
30}
31#endif
32
33/*
34 * On a AMD dual core setup the lower bits of the APIC id distingush the cores.
35 * Assumes number of cores is a power of two.
36 */
37static void __cpuinit amd_detect_cmp(struct cpuinfo_x86 *c)
38{
39#ifdef CONFIG_SMP
40 unsigned bits;
41#ifdef CONFIG_NUMA
42 int cpu = smp_processor_id();
43 int node = 0;
44 unsigned apicid = hard_smp_processor_id();
45#endif
46 bits = c->x86_coreid_bits;
47
48 /* Low order bits define the core id (index of core in socket) */
49 c->cpu_core_id = c->initial_apicid & ((1 << bits)-1);
50 /* Convert the initial APIC ID into the socket ID */
51 c->phys_proc_id = c->initial_apicid >> bits;
52
53#ifdef CONFIG_NUMA
54 node = c->phys_proc_id;
55 if (apicid_to_node[apicid] != NUMA_NO_NODE)
56 node = apicid_to_node[apicid];
57 if (!node_online(node)) {
58 /* Two possibilities here:
59 - The CPU is missing memory and no node was created.
60 In that case try picking one from a nearby CPU
61 - The APIC IDs differ from the HyperTransport node IDs
62 which the K8 northbridge parsing fills in.
63 Assume they are all increased by a constant offset,
64 but in the same order as the HT nodeids.
65 If that doesn't result in a usable node fall back to the
66 path for the previous case. */
67
68 int ht_nodeid = c->initial_apicid;
69
70 if (ht_nodeid >= 0 &&
71 apicid_to_node[ht_nodeid] != NUMA_NO_NODE)
72 node = apicid_to_node[ht_nodeid];
73 /* Pick a nearby node */
74 if (!node_online(node))
75 node = nearby_node(apicid);
76 }
77 numa_set_node(cpu, node);
78
79 printk(KERN_INFO "CPU %d/%x -> Node %d\n", cpu, apicid, node);
80#endif
81#endif
82}
83
84static void __cpuinit early_init_amd_mc(struct cpuinfo_x86 *c)
85{
86#ifdef CONFIG_SMP
87 unsigned bits, ecx;
88
89 /* Multi core CPU? */
90 if (c->extended_cpuid_level < 0x80000008)
91 return;
92
93 ecx = cpuid_ecx(0x80000008);
94
95 c->x86_max_cores = (ecx & 0xff) + 1;
96
97 /* CPU telling us the core id bits shift? */
98 bits = (ecx >> 12) & 0xF;
99
100 /* Otherwise recompute */
101 if (bits == 0) {
102 while ((1 << bits) < c->x86_max_cores)
103 bits++;
104 }
105
106 c->x86_coreid_bits = bits;
107
108#endif
109}
110
111static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
112{
113 early_init_amd_mc(c);
114
115 /* c->x86_power is 8000_0007 edx. Bit 8 is constant TSC */
116 if (c->x86_power & (1<<8))
117 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
118}
119
120static void __cpuinit init_amd(struct cpuinfo_x86 *c)
121{
122 unsigned level;
123
124#ifdef CONFIG_SMP
125 unsigned long value;
126
127 /*
128 * Disable TLB flush filter by setting HWCR.FFDIS on K8
129 * bit 6 of msr C001_0015
130 *
131 * Errata 63 for SH-B3 steppings
132 * Errata 122 for all steppings (F+ have it disabled by default)
133 */
134 if (c->x86 == 15) {
135 rdmsrl(MSR_K8_HWCR, value);
136 value |= 1 << 6;
137 wrmsrl(MSR_K8_HWCR, value);
138 }
139#endif
140
141 /* Bit 31 in normal CPUID used for nonstandard 3DNow ID;
142 3DNow is IDd by bit 31 in extended CPUID (1*32+31) anyway */
143 clear_cpu_cap(c, 0*32+31);
144
145 /* On C+ stepping K8 rep microcode works well for copy/memset */
146 level = cpuid_eax(1);
147 if (c->x86 == 15 && ((level >= 0x0f48 && level < 0x0f50) ||
148 level >= 0x0f58))
149 set_cpu_cap(c, X86_FEATURE_REP_GOOD);
150 if (c->x86 == 0x10 || c->x86 == 0x11)
151 set_cpu_cap(c, X86_FEATURE_REP_GOOD);
152
153 /* Enable workaround for FXSAVE leak */
154 if (c->x86 >= 6)
155 set_cpu_cap(c, X86_FEATURE_FXSAVE_LEAK);
156
157 level = get_model_name(c);
158 if (!level) {
159 switch (c->x86) {
160 case 15:
161 /* Should distinguish Models here, but this is only
162 a fallback anyways. */
163 strcpy(c->x86_model_id, "Hammer");
164 break;
165 }
166 }
167 display_cacheinfo(c);
168
169 /* Multi core CPU? */
170 if (c->extended_cpuid_level >= 0x80000008)
171 amd_detect_cmp(c);
172
173 if (c->extended_cpuid_level >= 0x80000006 &&
174 (cpuid_edx(0x80000006) & 0xf000))
175 num_cache_leaves = 4;
176 else
177 num_cache_leaves = 3;
178
179 if (c->x86 == 0xf || c->x86 == 0x10 || c->x86 == 0x11)
180 set_cpu_cap(c, X86_FEATURE_K8);
181
182 /* MFENCE stops RDTSC speculation */
183 set_cpu_cap(c, X86_FEATURE_MFENCE_RDTSC);
184
185 if (c->x86 == 0x10)
186 fam10h_check_enable_mmcfg();
187
188 if (c == &boot_cpu_data && c->x86 >= 0xf && c->x86 <= 0x11) {
189 unsigned long long tseg;
190
191 /*
192 * Split up direct mapping around the TSEG SMM area.
193 * Don't do it for gbpages because there seems very little
194 * benefit in doing so.
195 */
196 if (!rdmsrl_safe(MSR_K8_TSEG_ADDR, &tseg) &&
197 (tseg >> PMD_SHIFT) <
198 (max_pfn_mapped >> (PMD_SHIFT-PAGE_SHIFT)))
199 set_memory_4k((unsigned long)__va(tseg), 1);
200 }
201}
202
203static struct cpu_dev amd_cpu_dev __cpuinitdata = {
204 .c_vendor = "AMD",
205 .c_ident = { "AuthenticAMD" },
206 .c_early_init = early_init_amd,
207 .c_init = init_amd,
208};
209
210cpu_vendor_dev_register(X86_VENDOR_AMD, &amd_cpu_dev);
211
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 170d2f5523b2..1b1c56bb338f 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -59,8 +59,12 @@ static void __init check_fpu(void)
59 return; 59 return;
60 } 60 }
61 61
62/* trap_init() enabled FXSR and company _before_ testing for FP problems here. */ 62 /*
63 /* Test for the divl bug.. */ 63 * trap_init() enabled FXSR and company _before_ testing for FP
64 * problems here.
65 *
66 * Test for the divl bug..
67 */
64 __asm__("fninit\n\t" 68 __asm__("fninit\n\t"
65 "fldl %1\n\t" 69 "fldl %1\n\t"
66 "fdivl %2\n\t" 70 "fdivl %2\n\t"
@@ -108,10 +112,15 @@ static void __init check_popad(void)
108 "movl $12345678,%%eax; movl $0,%%edi; pusha; popa; movl (%%edx,%%edi),%%ecx " 112 "movl $12345678,%%eax; movl $0,%%edi; pusha; popa; movl (%%edx,%%edi),%%ecx "
109 : "=&a" (res) 113 : "=&a" (res)
110 : "d" (inp) 114 : "d" (inp)
111 : "ecx", "edi" ); 115 : "ecx", "edi");
112 /* If this fails, it means that any user program may lock the CPU hard. Too bad. */ 116 /*
113 if (res != 12345678) printk( "Buggy.\n" ); 117 * If this fails, it means that any user program may lock the
114 else printk( "OK.\n" ); 118 * CPU hard. Too bad.
119 */
120 if (res != 12345678)
121 printk("Buggy.\n");
122 else
123 printk("OK.\n");
115#endif 124#endif
116} 125}
117 126
@@ -137,7 +146,8 @@ static void __init check_config(void)
137 * i486+ only features! (WP works in supervisor mode and the 146 * i486+ only features! (WP works in supervisor mode and the
138 * new "invlpg" and "bswap" instructions) 147 * new "invlpg" and "bswap" instructions)
139 */ 148 */
140#if defined(CONFIG_X86_WP_WORKS_OK) || defined(CONFIG_X86_INVLPG) || defined(CONFIG_X86_BSWAP) 149#if defined(CONFIG_X86_WP_WORKS_OK) || defined(CONFIG_X86_INVLPG) || \
150 defined(CONFIG_X86_BSWAP)
141 if (boot_cpu_data.x86 == 3) 151 if (boot_cpu_data.x86 == 3)
142 panic("Kernel requires i486+ for 'invlpg' and other features"); 152 panic("Kernel requires i486+ for 'invlpg' and other features");
143#endif 153#endif
@@ -170,6 +180,7 @@ void __init check_bugs(void)
170 check_fpu(); 180 check_fpu();
171 check_hlt(); 181 check_hlt();
172 check_popad(); 182 check_popad();
173 init_utsname()->machine[1] = '0' + (boot_cpu_data.x86 > 6 ? 6 : boot_cpu_data.x86); 183 init_utsname()->machine[1] =
184 '0' + (boot_cpu_data.x86 > 6 ? 6 : boot_cpu_data.x86);
174 alternative_instructions(); 185 alternative_instructions();
175} 186}
diff --git a/arch/x86/kernel/bugs_64.c b/arch/x86/kernel/cpu/bugs_64.c
index 9a3ed0649d4e..9a3ed0649d4e 100644
--- a/arch/x86/kernel/bugs_64.c
+++ b/arch/x86/kernel/cpu/bugs_64.c
diff --git a/arch/x86/kernel/cpu/centaur_64.c b/arch/x86/kernel/cpu/centaur_64.c
new file mode 100644
index 000000000000..13526fd5cce1
--- /dev/null
+++ b/arch/x86/kernel/cpu/centaur_64.c
@@ -0,0 +1,43 @@
1#include <linux/init.h>
2#include <linux/smp.h>
3
4#include <asm/cpufeature.h>
5#include <asm/processor.h>
6
7#include "cpu.h"
8
9static void __cpuinit early_init_centaur(struct cpuinfo_x86 *c)
10{
11 if (c->x86 == 0x6 && c->x86_model >= 0xf)
12 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
13}
14
15static void __cpuinit init_centaur(struct cpuinfo_x86 *c)
16{
17 /* Cache sizes */
18 unsigned n;
19
20 n = c->extended_cpuid_level;
21 if (n >= 0x80000008) {
22 unsigned eax = cpuid_eax(0x80000008);
23 c->x86_virt_bits = (eax >> 8) & 0xff;
24 c->x86_phys_bits = eax & 0xff;
25 }
26
27 if (c->x86 == 0x6 && c->x86_model >= 0xf) {
28 c->x86_cache_alignment = c->x86_clflush_size * 2;
29 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
30 set_cpu_cap(c, X86_FEATURE_REP_GOOD);
31 }
32 set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
33}
34
35static struct cpu_dev centaur_cpu_dev __cpuinitdata = {
36 .c_vendor = "Centaur",
37 .c_ident = { "CentaurHauls" },
38 .c_early_init = early_init_centaur,
39 .c_init = init_centaur,
40};
41
42cpu_vendor_dev_register(X86_VENDOR_CENTAUR, &centaur_cpu_dev);
43
diff --git a/arch/x86/kernel/cpu/cpu.h b/arch/x86/kernel/cpu/cpu.h
index 783691b2a738..4d894e8565fe 100644
--- a/arch/x86/kernel/cpu/cpu.h
+++ b/arch/x86/kernel/cpu/cpu.h
@@ -1,3 +1,6 @@
1#ifndef ARCH_X86_CPU_H
2
3#define ARCH_X86_CPU_H
1 4
2struct cpu_model_info { 5struct cpu_model_info {
3 int vendor; 6 int vendor;
@@ -36,3 +39,5 @@ extern struct cpu_vendor_dev __x86cpuvendor_start[], __x86cpuvendor_end[];
36 39
37extern int get_model_name(struct cpuinfo_x86 *c); 40extern int get_model_name(struct cpuinfo_x86 *c);
38extern void display_cacheinfo(struct cpuinfo_x86 *c); 41extern void display_cacheinfo(struct cpuinfo_x86 *c);
42
43#endif
diff --git a/arch/x86/kernel/cpu/cpufreq/cpufreq-nforce2.c b/arch/x86/kernel/cpu/cpufreq/cpufreq-nforce2.c
index f03e9153618e..965ea52767ac 100644
--- a/arch/x86/kernel/cpu/cpufreq/cpufreq-nforce2.c
+++ b/arch/x86/kernel/cpu/cpufreq/cpufreq-nforce2.c
@@ -26,9 +26,10 @@
26#define NFORCE2_SAFE_DISTANCE 50 26#define NFORCE2_SAFE_DISTANCE 50
27 27
28/* Delay in ms between FSB changes */ 28/* Delay in ms between FSB changes */
29//#define NFORCE2_DELAY 10 29/* #define NFORCE2_DELAY 10 */
30 30
31/* nforce2_chipset: 31/*
32 * nforce2_chipset:
32 * FSB is changed using the chipset 33 * FSB is changed using the chipset
33 */ 34 */
34static struct pci_dev *nforce2_chipset_dev; 35static struct pci_dev *nforce2_chipset_dev;
@@ -36,13 +37,13 @@ static struct pci_dev *nforce2_chipset_dev;
36/* fid: 37/* fid:
37 * multiplier * 10 38 * multiplier * 10
38 */ 39 */
39static int fid = 0; 40static int fid;
40 41
41/* min_fsb, max_fsb: 42/* min_fsb, max_fsb:
42 * minimum and maximum FSB (= FSB at boot time) 43 * minimum and maximum FSB (= FSB at boot time)
43 */ 44 */
44static int min_fsb = 0; 45static int min_fsb;
45static int max_fsb = 0; 46static int max_fsb;
46 47
47MODULE_AUTHOR("Sebastian Witt <se.witt@gmx.net>"); 48MODULE_AUTHOR("Sebastian Witt <se.witt@gmx.net>");
48MODULE_DESCRIPTION("nForce2 FSB changing cpufreq driver"); 49MODULE_DESCRIPTION("nForce2 FSB changing cpufreq driver");
@@ -53,7 +54,7 @@ module_param(min_fsb, int, 0444);
53 54
54MODULE_PARM_DESC(fid, "CPU multiplier to use (11.5 = 115)"); 55MODULE_PARM_DESC(fid, "CPU multiplier to use (11.5 = 115)");
55MODULE_PARM_DESC(min_fsb, 56MODULE_PARM_DESC(min_fsb,
56 "Minimum FSB to use, if not defined: current FSB - 50"); 57 "Minimum FSB to use, if not defined: current FSB - 50");
57 58
58#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, "cpufreq-nforce2", msg) 59#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, "cpufreq-nforce2", msg)
59 60
@@ -139,7 +140,7 @@ static unsigned int nforce2_fsb_read(int bootfsb)
139 140
140 /* Get chipset boot FSB from subdevice 5 (FSB at boot-time) */ 141 /* Get chipset boot FSB from subdevice 5 (FSB at boot-time) */
141 nforce2_sub5 = pci_get_subsys(PCI_VENDOR_ID_NVIDIA, 142 nforce2_sub5 = pci_get_subsys(PCI_VENDOR_ID_NVIDIA,
142 0x01EF,PCI_ANY_ID,PCI_ANY_ID,NULL); 143 0x01EF, PCI_ANY_ID, PCI_ANY_ID, NULL);
143 if (!nforce2_sub5) 144 if (!nforce2_sub5)
144 return 0; 145 return 0;
145 146
@@ -147,13 +148,13 @@ static unsigned int nforce2_fsb_read(int bootfsb)
147 fsb /= 1000000; 148 fsb /= 1000000;
148 149
149 /* Check if PLL register is already set */ 150 /* Check if PLL register is already set */
150 pci_read_config_byte(nforce2_chipset_dev,NFORCE2_PLLENABLE, (u8 *)&temp); 151 pci_read_config_byte(nforce2_chipset_dev, NFORCE2_PLLENABLE, (u8 *)&temp);
151 152
152 if(bootfsb || !temp) 153 if (bootfsb || !temp)
153 return fsb; 154 return fsb;
154 155
155 /* Use PLL register FSB value */ 156 /* Use PLL register FSB value */
156 pci_read_config_dword(nforce2_chipset_dev,NFORCE2_PLLREG, &temp); 157 pci_read_config_dword(nforce2_chipset_dev, NFORCE2_PLLREG, &temp);
157 fsb = nforce2_calc_fsb(temp); 158 fsb = nforce2_calc_fsb(temp);
158 159
159 return fsb; 160 return fsb;
@@ -184,7 +185,7 @@ static int nforce2_set_fsb(unsigned int fsb)
184 } 185 }
185 186
186 /* First write? Then set actual value */ 187 /* First write? Then set actual value */
187 pci_read_config_byte(nforce2_chipset_dev,NFORCE2_PLLENABLE, (u8 *)&temp); 188 pci_read_config_byte(nforce2_chipset_dev, NFORCE2_PLLENABLE, (u8 *)&temp);
188 if (!temp) { 189 if (!temp) {
189 pll = nforce2_calc_pll(tfsb); 190 pll = nforce2_calc_pll(tfsb);
190 191
@@ -210,7 +211,8 @@ static int nforce2_set_fsb(unsigned int fsb)
210 tfsb--; 211 tfsb--;
211 212
212 /* Calculate the PLL reg. value */ 213 /* Calculate the PLL reg. value */
213 if ((pll = nforce2_calc_pll(tfsb)) == -1) 214 pll = nforce2_calc_pll(tfsb);
215 if (pll == -1)
214 return -EINVAL; 216 return -EINVAL;
215 217
216 nforce2_write_pll(pll); 218 nforce2_write_pll(pll);
@@ -249,7 +251,7 @@ static unsigned int nforce2_get(unsigned int cpu)
249static int nforce2_target(struct cpufreq_policy *policy, 251static int nforce2_target(struct cpufreq_policy *policy,
250 unsigned int target_freq, unsigned int relation) 252 unsigned int target_freq, unsigned int relation)
251{ 253{
252// unsigned long flags; 254/* unsigned long flags; */
253 struct cpufreq_freqs freqs; 255 struct cpufreq_freqs freqs;
254 unsigned int target_fsb; 256 unsigned int target_fsb;
255 257
@@ -271,17 +273,17 @@ static int nforce2_target(struct cpufreq_policy *policy,
271 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 273 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
272 274
273 /* Disable IRQs */ 275 /* Disable IRQs */
274 //local_irq_save(flags); 276 /* local_irq_save(flags); */
275 277
276 if (nforce2_set_fsb(target_fsb) < 0) 278 if (nforce2_set_fsb(target_fsb) < 0)
277 printk(KERN_ERR "cpufreq: Changing FSB to %d failed\n", 279 printk(KERN_ERR "cpufreq: Changing FSB to %d failed\n",
278 target_fsb); 280 target_fsb);
279 else 281 else
280 dprintk("Changed FSB successfully to %d\n", 282 dprintk("Changed FSB successfully to %d\n",
281 target_fsb); 283 target_fsb);
282 284
283 /* Enable IRQs */ 285 /* Enable IRQs */
284 //local_irq_restore(flags); 286 /* local_irq_restore(flags); */
285 287
286 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 288 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
287 289
@@ -302,8 +304,8 @@ static int nforce2_verify(struct cpufreq_policy *policy)
302 policy->max = (fsb_pol_max + 1) * fid * 100; 304 policy->max = (fsb_pol_max + 1) * fid * 100;
303 305
304 cpufreq_verify_within_limits(policy, 306 cpufreq_verify_within_limits(policy,
305 policy->cpuinfo.min_freq, 307 policy->cpuinfo.min_freq,
306 policy->cpuinfo.max_freq); 308 policy->cpuinfo.max_freq);
307 return 0; 309 return 0;
308} 310}
309 311
@@ -347,7 +349,7 @@ static int nforce2_cpu_init(struct cpufreq_policy *policy)
347 /* Set maximum FSB to FSB at boot time */ 349 /* Set maximum FSB to FSB at boot time */
348 max_fsb = nforce2_fsb_read(1); 350 max_fsb = nforce2_fsb_read(1);
349 351
350 if(!max_fsb) 352 if (!max_fsb)
351 return -EIO; 353 return -EIO;
352 354
353 if (!min_fsb) 355 if (!min_fsb)
diff --git a/arch/x86/kernel/cpu/intel_64.c b/arch/x86/kernel/cpu/intel_64.c
new file mode 100644
index 000000000000..fcb1cc9d75ca
--- /dev/null
+++ b/arch/x86/kernel/cpu/intel_64.c
@@ -0,0 +1,103 @@
1#include <linux/init.h>
2#include <linux/smp.h>
3#include <asm/processor.h>
4#include <asm/ptrace.h>
5#include <asm/topology.h>
6#include <asm/numa_64.h>
7
8#include "cpu.h"
9
10static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
11{
12 if ((c->x86 == 0xf && c->x86_model >= 0x03) ||
13 (c->x86 == 0x6 && c->x86_model >= 0x0e))
14 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
15}
16
17/*
18 * find out the number of processor cores on the die
19 */
20static int __cpuinit intel_num_cpu_cores(struct cpuinfo_x86 *c)
21{
22 unsigned int eax, t;
23
24 if (c->cpuid_level < 4)
25 return 1;
26
27 cpuid_count(4, 0, &eax, &t, &t, &t);
28
29 if (eax & 0x1f)
30 return ((eax >> 26) + 1);
31 else
32 return 1;
33}
34
35static void __cpuinit srat_detect_node(void)
36{
37#ifdef CONFIG_NUMA
38 unsigned node;
39 int cpu = smp_processor_id();
40 int apicid = hard_smp_processor_id();
41
42 /* Don't do the funky fallback heuristics the AMD version employs
43 for now. */
44 node = apicid_to_node[apicid];
45 if (node == NUMA_NO_NODE || !node_online(node))
46 node = first_node(node_online_map);
47 numa_set_node(cpu, node);
48
49 printk(KERN_INFO "CPU %d/%x -> Node %d\n", cpu, apicid, node);
50#endif
51}
52
53static void __cpuinit init_intel(struct cpuinfo_x86 *c)
54{
55 /* Cache sizes */
56 unsigned n;
57
58 init_intel_cacheinfo(c);
59 if (c->cpuid_level > 9) {
60 unsigned eax = cpuid_eax(10);
61 /* Check for version and the number of counters */
62 if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
63 set_cpu_cap(c, X86_FEATURE_ARCH_PERFMON);
64 }
65
66 if (cpu_has_ds) {
67 unsigned int l1, l2;
68 rdmsr(MSR_IA32_MISC_ENABLE, l1, l2);
69 if (!(l1 & (1<<11)))
70 set_cpu_cap(c, X86_FEATURE_BTS);
71 if (!(l1 & (1<<12)))
72 set_cpu_cap(c, X86_FEATURE_PEBS);
73 }
74
75
76 if (cpu_has_bts)
77 ds_init_intel(c);
78
79 n = c->extended_cpuid_level;
80 if (n >= 0x80000008) {
81 unsigned eax = cpuid_eax(0x80000008);
82 c->x86_virt_bits = (eax >> 8) & 0xff;
83 c->x86_phys_bits = eax & 0xff;
84 }
85
86 if (c->x86 == 15)
87 c->x86_cache_alignment = c->x86_clflush_size * 2;
88 if (c->x86 == 6)
89 set_cpu_cap(c, X86_FEATURE_REP_GOOD);
90 set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
91 c->x86_max_cores = intel_num_cpu_cores(c);
92
93 srat_detect_node();
94}
95
96static struct cpu_dev intel_cpu_dev __cpuinitdata = {
97 .c_vendor = "Intel",
98 .c_ident = { "GenuineIntel" },
99 .c_early_init = early_init_intel,
100 .c_init = init_intel,
101};
102cpu_vendor_dev_register(X86_VENDOR_INTEL, &intel_cpu_dev);
103
diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c
index 26d615dcb149..2c8afafa18e8 100644
--- a/arch/x86/kernel/cpu/intel_cacheinfo.c
+++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
@@ -62,6 +62,7 @@ static struct _cache_table cache_table[] __cpuinitdata =
62 { 0x4b, LVL_3, 8192 }, /* 16-way set assoc, 64 byte line size */ 62 { 0x4b, LVL_3, 8192 }, /* 16-way set assoc, 64 byte line size */
63 { 0x4c, LVL_3, 12288 }, /* 12-way set assoc, 64 byte line size */ 63 { 0x4c, LVL_3, 12288 }, /* 12-way set assoc, 64 byte line size */
64 { 0x4d, LVL_3, 16384 }, /* 16-way set assoc, 64 byte line size */ 64 { 0x4d, LVL_3, 16384 }, /* 16-way set assoc, 64 byte line size */
65 { 0x4e, LVL_2, 6144 }, /* 24-way set assoc, 64 byte line size */
65 { 0x60, LVL_1_DATA, 16 }, /* 8-way set assoc, sectored cache, 64 byte line size */ 66 { 0x60, LVL_1_DATA, 16 }, /* 8-way set assoc, sectored cache, 64 byte line size */
66 { 0x66, LVL_1_DATA, 8 }, /* 4-way set assoc, sectored cache, 64 byte line size */ 67 { 0x66, LVL_1_DATA, 8 }, /* 4-way set assoc, sectored cache, 64 byte line size */
67 { 0x67, LVL_1_DATA, 16 }, /* 4-way set assoc, sectored cache, 64 byte line size */ 68 { 0x67, LVL_1_DATA, 16 }, /* 4-way set assoc, sectored cache, 64 byte line size */
diff --git a/arch/x86/kernel/cpu/mcheck/k7.c b/arch/x86/kernel/cpu/mcheck/k7.c
index e633c9c2b764..f390c9f66351 100644
--- a/arch/x86/kernel/cpu/mcheck/k7.c
+++ b/arch/x86/kernel/cpu/mcheck/k7.c
@@ -9,23 +9,23 @@
9#include <linux/interrupt.h> 9#include <linux/interrupt.h>
10#include <linux/smp.h> 10#include <linux/smp.h>
11 11
12#include <asm/processor.h> 12#include <asm/processor.h>
13#include <asm/system.h> 13#include <asm/system.h>
14#include <asm/msr.h> 14#include <asm/msr.h>
15 15
16#include "mce.h" 16#include "mce.h"
17 17
18/* Machine Check Handler For AMD Athlon/Duron */ 18/* Machine Check Handler For AMD Athlon/Duron */
19static void k7_machine_check(struct pt_regs * regs, long error_code) 19static void k7_machine_check(struct pt_regs *regs, long error_code)
20{ 20{
21 int recover=1; 21 int recover = 1;
22 u32 alow, ahigh, high, low; 22 u32 alow, ahigh, high, low;
23 u32 mcgstl, mcgsth; 23 u32 mcgstl, mcgsth;
24 int i; 24 int i;
25 25
26 rdmsr (MSR_IA32_MCG_STATUS, mcgstl, mcgsth); 26 rdmsr(MSR_IA32_MCG_STATUS, mcgstl, mcgsth);
27 if (mcgstl & (1<<0)) /* Recoverable ? */ 27 if (mcgstl & (1<<0)) /* Recoverable ? */
28 recover=0; 28 recover = 0;
29 29
30 printk(KERN_EMERG "CPU %d: Machine Check Exception: %08x%08x\n", 30 printk(KERN_EMERG "CPU %d: Machine Check Exception: %08x%08x\n",
31 smp_processor_id(), mcgsth, mcgstl); 31 smp_processor_id(), mcgsth, mcgstl);
@@ -60,12 +60,12 @@ static void k7_machine_check(struct pt_regs * regs, long error_code)
60 } 60 }
61 61
62 if (recover&2) 62 if (recover&2)
63 panic ("CPU context corrupt"); 63 panic("CPU context corrupt");
64 if (recover&1) 64 if (recover&1)
65 panic ("Unable to continue"); 65 panic("Unable to continue");
66 printk (KERN_EMERG "Attempting to continue.\n"); 66 printk(KERN_EMERG "Attempting to continue.\n");
67 mcgstl &= ~(1<<2); 67 mcgstl &= ~(1<<2);
68 wrmsr (MSR_IA32_MCG_STATUS,mcgstl, mcgsth); 68 wrmsr(MSR_IA32_MCG_STATUS, mcgstl, mcgsth);
69} 69}
70 70
71 71
@@ -81,25 +81,25 @@ void amd_mcheck_init(struct cpuinfo_x86 *c)
81 machine_check_vector = k7_machine_check; 81 machine_check_vector = k7_machine_check;
82 wmb(); 82 wmb();
83 83
84 printk (KERN_INFO "Intel machine check architecture supported.\n"); 84 printk(KERN_INFO "Intel machine check architecture supported.\n");
85 rdmsr (MSR_IA32_MCG_CAP, l, h); 85 rdmsr(MSR_IA32_MCG_CAP, l, h);
86 if (l & (1<<8)) /* Control register present ? */ 86 if (l & (1<<8)) /* Control register present ? */
87 wrmsr (MSR_IA32_MCG_CTL, 0xffffffff, 0xffffffff); 87 wrmsr(MSR_IA32_MCG_CTL, 0xffffffff, 0xffffffff);
88 nr_mce_banks = l & 0xff; 88 nr_mce_banks = l & 0xff;
89 89
90 /* Clear status for MC index 0 separately, we don't touch CTL, 90 /* Clear status for MC index 0 separately, we don't touch CTL,
91 * as some K7 Athlons cause spurious MCEs when its enabled. */ 91 * as some K7 Athlons cause spurious MCEs when its enabled. */
92 if (boot_cpu_data.x86 == 6) { 92 if (boot_cpu_data.x86 == 6) {
93 wrmsr (MSR_IA32_MC0_STATUS, 0x0, 0x0); 93 wrmsr(MSR_IA32_MC0_STATUS, 0x0, 0x0);
94 i = 1; 94 i = 1;
95 } else 95 } else
96 i = 0; 96 i = 0;
97 for (; i<nr_mce_banks; i++) { 97 for (; i < nr_mce_banks; i++) {
98 wrmsr (MSR_IA32_MC0_CTL+4*i, 0xffffffff, 0xffffffff); 98 wrmsr(MSR_IA32_MC0_CTL+4*i, 0xffffffff, 0xffffffff);
99 wrmsr (MSR_IA32_MC0_STATUS+4*i, 0x0, 0x0); 99 wrmsr(MSR_IA32_MC0_STATUS+4*i, 0x0, 0x0);
100 } 100 }
101 101
102 set_in_cr4 (X86_CR4_MCE); 102 set_in_cr4(X86_CR4_MCE);
103 printk (KERN_INFO "Intel machine check reporting enabled on CPU#%d.\n", 103 printk(KERN_INFO "Intel machine check reporting enabled on CPU#%d.\n",
104 smp_processor_id()); 104 smp_processor_id());
105} 105}
diff --git a/arch/x86/kernel/cpu/mcheck/mce_64.c b/arch/x86/kernel/cpu/mcheck/mce_64.c
index e07e8c068ae0..501ca1cea27d 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_64.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_64.c
@@ -31,7 +31,7 @@
31#include <asm/idle.h> 31#include <asm/idle.h>
32 32
33#define MISC_MCELOG_MINOR 227 33#define MISC_MCELOG_MINOR 227
34#define NR_BANKS 6 34#define NR_SYSFS_BANKS 6
35 35
36atomic_t mce_entry; 36atomic_t mce_entry;
37 37
@@ -46,7 +46,7 @@ static int mce_dont_init;
46 */ 46 */
47static int tolerant = 1; 47static int tolerant = 1;
48static int banks; 48static int banks;
49static unsigned long bank[NR_BANKS] = { [0 ... NR_BANKS-1] = ~0UL }; 49static unsigned long bank[NR_SYSFS_BANKS] = { [0 ... NR_SYSFS_BANKS-1] = ~0UL };
50static unsigned long notify_user; 50static unsigned long notify_user;
51static int rip_msr; 51static int rip_msr;
52static int mce_bootlog = -1; 52static int mce_bootlog = -1;
@@ -209,7 +209,7 @@ void do_machine_check(struct pt_regs * regs, long error_code)
209 barrier(); 209 barrier();
210 210
211 for (i = 0; i < banks; i++) { 211 for (i = 0; i < banks; i++) {
212 if (!bank[i]) 212 if (i < NR_SYSFS_BANKS && !bank[i])
213 continue; 213 continue;
214 214
215 m.misc = 0; 215 m.misc = 0;
@@ -444,9 +444,10 @@ static void mce_init(void *dummy)
444 444
445 rdmsrl(MSR_IA32_MCG_CAP, cap); 445 rdmsrl(MSR_IA32_MCG_CAP, cap);
446 banks = cap & 0xff; 446 banks = cap & 0xff;
447 if (banks > NR_BANKS) { 447 if (banks > MCE_EXTENDED_BANK) {
448 printk(KERN_INFO "MCE: warning: using only %d banks\n", banks); 448 banks = MCE_EXTENDED_BANK;
449 banks = NR_BANKS; 449 printk(KERN_INFO "MCE: warning: using only %d banks\n",
450 MCE_EXTENDED_BANK);
450 } 451 }
451 /* Use accurate RIP reporting if available. */ 452 /* Use accurate RIP reporting if available. */
452 if ((cap & (1<<9)) && ((cap >> 16) & 0xff) >= 9) 453 if ((cap & (1<<9)) && ((cap >> 16) & 0xff) >= 9)
@@ -462,7 +463,11 @@ static void mce_init(void *dummy)
462 wrmsr(MSR_IA32_MCG_CTL, 0xffffffff, 0xffffffff); 463 wrmsr(MSR_IA32_MCG_CTL, 0xffffffff, 0xffffffff);
463 464
464 for (i = 0; i < banks; i++) { 465 for (i = 0; i < banks; i++) {
465 wrmsrl(MSR_IA32_MC0_CTL+4*i, bank[i]); 466 if (i < NR_SYSFS_BANKS)
467 wrmsrl(MSR_IA32_MC0_CTL+4*i, bank[i]);
468 else
469 wrmsrl(MSR_IA32_MC0_CTL+4*i, ~0UL);
470
466 wrmsrl(MSR_IA32_MC0_STATUS+4*i, 0); 471 wrmsrl(MSR_IA32_MC0_STATUS+4*i, 0);
467 } 472 }
468} 473}
@@ -766,7 +771,10 @@ DEFINE_PER_CPU(struct sys_device, device_mce);
766 } \ 771 } \
767 static SYSDEV_ATTR(name, 0644, show_ ## name, set_ ## name); 772 static SYSDEV_ATTR(name, 0644, show_ ## name, set_ ## name);
768 773
769/* TBD should generate these dynamically based on number of available banks */ 774/*
775 * TBD should generate these dynamically based on number of available banks.
776 * Have only 6 contol banks in /sysfs until then.
777 */
770ACCESSOR(bank0ctl,bank[0],mce_restart()) 778ACCESSOR(bank0ctl,bank[0],mce_restart())
771ACCESSOR(bank1ctl,bank[1],mce_restart()) 779ACCESSOR(bank1ctl,bank[1],mce_restart())
772ACCESSOR(bank2ctl,bank[2],mce_restart()) 780ACCESSOR(bank2ctl,bank[2],mce_restart())
diff --git a/arch/x86/kernel/cpu/mcheck/p4.c b/arch/x86/kernel/cpu/mcheck/p4.c
index cb03345554a5..eef001ad3bde 100644
--- a/arch/x86/kernel/cpu/mcheck/p4.c
+++ b/arch/x86/kernel/cpu/mcheck/p4.c
@@ -8,7 +8,7 @@
8#include <linux/interrupt.h> 8#include <linux/interrupt.h>
9#include <linux/smp.h> 9#include <linux/smp.h>
10 10
11#include <asm/processor.h> 11#include <asm/processor.h>
12#include <asm/system.h> 12#include <asm/system.h>
13#include <asm/msr.h> 13#include <asm/msr.h>
14#include <asm/apic.h> 14#include <asm/apic.h>
@@ -32,12 +32,12 @@ struct intel_mce_extended_msrs {
32 /* u32 *reserved[]; */ 32 /* u32 *reserved[]; */
33}; 33};
34 34
35static int mce_num_extended_msrs = 0; 35static int mce_num_extended_msrs;
36 36
37 37
38#ifdef CONFIG_X86_MCE_P4THERMAL 38#ifdef CONFIG_X86_MCE_P4THERMAL
39static void unexpected_thermal_interrupt(struct pt_regs *regs) 39static void unexpected_thermal_interrupt(struct pt_regs *regs)
40{ 40{
41 printk(KERN_ERR "CPU%d: Unexpected LVT TMR interrupt!\n", 41 printk(KERN_ERR "CPU%d: Unexpected LVT TMR interrupt!\n",
42 smp_processor_id()); 42 smp_processor_id());
43 add_taint(TAINT_MACHINE_CHECK); 43 add_taint(TAINT_MACHINE_CHECK);
@@ -83,7 +83,7 @@ static void intel_init_thermal(struct cpuinfo_x86 *c)
83 * be some SMM goo which handles it, so we can't even put a handler 83 * be some SMM goo which handles it, so we can't even put a handler
84 * since it might be delivered via SMI already -zwanem. 84 * since it might be delivered via SMI already -zwanem.
85 */ 85 */
86 rdmsr (MSR_IA32_MISC_ENABLE, l, h); 86 rdmsr(MSR_IA32_MISC_ENABLE, l, h);
87 h = apic_read(APIC_LVTTHMR); 87 h = apic_read(APIC_LVTTHMR);
88 if ((l & (1<<3)) && (h & APIC_DM_SMI)) { 88 if ((l & (1<<3)) && (h & APIC_DM_SMI)) {
89 printk(KERN_DEBUG "CPU%d: Thermal monitoring handled by SMI\n", 89 printk(KERN_DEBUG "CPU%d: Thermal monitoring handled by SMI\n",
@@ -91,7 +91,7 @@ static void intel_init_thermal(struct cpuinfo_x86 *c)
91 return; /* -EBUSY */ 91 return; /* -EBUSY */
92 } 92 }
93 93
94 /* check whether a vector already exists, temporarily masked? */ 94 /* check whether a vector already exists, temporarily masked? */
95 if (h & APIC_VECTOR_MASK) { 95 if (h & APIC_VECTOR_MASK) {
96 printk(KERN_DEBUG "CPU%d: Thermal LVT vector (%#x) already " 96 printk(KERN_DEBUG "CPU%d: Thermal LVT vector (%#x) already "
97 "installed\n", 97 "installed\n",
@@ -104,18 +104,18 @@ static void intel_init_thermal(struct cpuinfo_x86 *c)
104 h |= (APIC_DM_FIXED | APIC_LVT_MASKED); /* we'll mask till we're ready */ 104 h |= (APIC_DM_FIXED | APIC_LVT_MASKED); /* we'll mask till we're ready */
105 apic_write_around(APIC_LVTTHMR, h); 105 apic_write_around(APIC_LVTTHMR, h);
106 106
107 rdmsr (MSR_IA32_THERM_INTERRUPT, l, h); 107 rdmsr(MSR_IA32_THERM_INTERRUPT, l, h);
108 wrmsr (MSR_IA32_THERM_INTERRUPT, l | 0x03 , h); 108 wrmsr(MSR_IA32_THERM_INTERRUPT, l | 0x03 , h);
109 109
110 /* ok we're good to go... */ 110 /* ok we're good to go... */
111 vendor_thermal_interrupt = intel_thermal_interrupt; 111 vendor_thermal_interrupt = intel_thermal_interrupt;
112
113 rdmsr (MSR_IA32_MISC_ENABLE, l, h);
114 wrmsr (MSR_IA32_MISC_ENABLE, l | (1<<3), h);
115 112
116 l = apic_read (APIC_LVTTHMR); 113 rdmsr(MSR_IA32_MISC_ENABLE, l, h);
117 apic_write_around (APIC_LVTTHMR, l & ~APIC_LVT_MASKED); 114 wrmsr(MSR_IA32_MISC_ENABLE, l | (1<<3), h);
118 printk (KERN_INFO "CPU%d: Thermal monitoring enabled\n", cpu); 115
116 l = apic_read(APIC_LVTTHMR);
117 apic_write_around(APIC_LVTTHMR, l & ~APIC_LVT_MASKED);
118 printk(KERN_INFO "CPU%d: Thermal monitoring enabled\n", cpu);
119 119
120 /* enable thermal throttle processing */ 120 /* enable thermal throttle processing */
121 atomic_set(&therm_throt_en, 1); 121 atomic_set(&therm_throt_en, 1);
@@ -129,28 +129,28 @@ static inline void intel_get_extended_msrs(struct intel_mce_extended_msrs *r)
129{ 129{
130 u32 h; 130 u32 h;
131 131
132 rdmsr (MSR_IA32_MCG_EAX, r->eax, h); 132 rdmsr(MSR_IA32_MCG_EAX, r->eax, h);
133 rdmsr (MSR_IA32_MCG_EBX, r->ebx, h); 133 rdmsr(MSR_IA32_MCG_EBX, r->ebx, h);
134 rdmsr (MSR_IA32_MCG_ECX, r->ecx, h); 134 rdmsr(MSR_IA32_MCG_ECX, r->ecx, h);
135 rdmsr (MSR_IA32_MCG_EDX, r->edx, h); 135 rdmsr(MSR_IA32_MCG_EDX, r->edx, h);
136 rdmsr (MSR_IA32_MCG_ESI, r->esi, h); 136 rdmsr(MSR_IA32_MCG_ESI, r->esi, h);
137 rdmsr (MSR_IA32_MCG_EDI, r->edi, h); 137 rdmsr(MSR_IA32_MCG_EDI, r->edi, h);
138 rdmsr (MSR_IA32_MCG_EBP, r->ebp, h); 138 rdmsr(MSR_IA32_MCG_EBP, r->ebp, h);
139 rdmsr (MSR_IA32_MCG_ESP, r->esp, h); 139 rdmsr(MSR_IA32_MCG_ESP, r->esp, h);
140 rdmsr (MSR_IA32_MCG_EFLAGS, r->eflags, h); 140 rdmsr(MSR_IA32_MCG_EFLAGS, r->eflags, h);
141 rdmsr (MSR_IA32_MCG_EIP, r->eip, h); 141 rdmsr(MSR_IA32_MCG_EIP, r->eip, h);
142} 142}
143 143
144static void intel_machine_check(struct pt_regs * regs, long error_code) 144static void intel_machine_check(struct pt_regs *regs, long error_code)
145{ 145{
146 int recover=1; 146 int recover = 1;
147 u32 alow, ahigh, high, low; 147 u32 alow, ahigh, high, low;
148 u32 mcgstl, mcgsth; 148 u32 mcgstl, mcgsth;
149 int i; 149 int i;
150 150
151 rdmsr (MSR_IA32_MCG_STATUS, mcgstl, mcgsth); 151 rdmsr(MSR_IA32_MCG_STATUS, mcgstl, mcgsth);
152 if (mcgstl & (1<<0)) /* Recoverable ? */ 152 if (mcgstl & (1<<0)) /* Recoverable ? */
153 recover=0; 153 recover = 0;
154 154
155 printk(KERN_EMERG "CPU %d: Machine Check Exception: %08x%08x\n", 155 printk(KERN_EMERG "CPU %d: Machine Check Exception: %08x%08x\n",
156 smp_processor_id(), mcgsth, mcgstl); 156 smp_processor_id(), mcgsth, mcgstl);
@@ -191,20 +191,20 @@ static void intel_machine_check(struct pt_regs * regs, long error_code)
191 } 191 }
192 192
193 if (recover & 2) 193 if (recover & 2)
194 panic ("CPU context corrupt"); 194 panic("CPU context corrupt");
195 if (recover & 1) 195 if (recover & 1)
196 panic ("Unable to continue"); 196 panic("Unable to continue");
197 197
198 printk(KERN_EMERG "Attempting to continue.\n"); 198 printk(KERN_EMERG "Attempting to continue.\n");
199 /* 199 /*
200 * Do not clear the MSR_IA32_MCi_STATUS if the error is not 200 * Do not clear the MSR_IA32_MCi_STATUS if the error is not
201 * recoverable/continuable.This will allow BIOS to look at the MSRs 201 * recoverable/continuable.This will allow BIOS to look at the MSRs
202 * for errors if the OS could not log the error. 202 * for errors if the OS could not log the error.
203 */ 203 */
204 for (i=0; i<nr_mce_banks; i++) { 204 for (i = 0; i < nr_mce_banks; i++) {
205 u32 msr; 205 u32 msr;
206 msr = MSR_IA32_MC0_STATUS+i*4; 206 msr = MSR_IA32_MC0_STATUS+i*4;
207 rdmsr (msr, low, high); 207 rdmsr(msr, low, high);
208 if (high&(1<<31)) { 208 if (high&(1<<31)) {
209 /* Clear it */ 209 /* Clear it */
210 wrmsr(msr, 0UL, 0UL); 210 wrmsr(msr, 0UL, 0UL);
@@ -214,7 +214,7 @@ static void intel_machine_check(struct pt_regs * regs, long error_code)
214 } 214 }
215 } 215 }
216 mcgstl &= ~(1<<2); 216 mcgstl &= ~(1<<2);
217 wrmsr (MSR_IA32_MCG_STATUS,mcgstl, mcgsth); 217 wrmsr(MSR_IA32_MCG_STATUS, mcgstl, mcgsth);
218} 218}
219 219
220 220
@@ -222,30 +222,30 @@ void intel_p4_mcheck_init(struct cpuinfo_x86 *c)
222{ 222{
223 u32 l, h; 223 u32 l, h;
224 int i; 224 int i;
225 225
226 machine_check_vector = intel_machine_check; 226 machine_check_vector = intel_machine_check;
227 wmb(); 227 wmb();
228 228
229 printk (KERN_INFO "Intel machine check architecture supported.\n"); 229 printk(KERN_INFO "Intel machine check architecture supported.\n");
230 rdmsr (MSR_IA32_MCG_CAP, l, h); 230 rdmsr(MSR_IA32_MCG_CAP, l, h);
231 if (l & (1<<8)) /* Control register present ? */ 231 if (l & (1<<8)) /* Control register present ? */
232 wrmsr (MSR_IA32_MCG_CTL, 0xffffffff, 0xffffffff); 232 wrmsr(MSR_IA32_MCG_CTL, 0xffffffff, 0xffffffff);
233 nr_mce_banks = l & 0xff; 233 nr_mce_banks = l & 0xff;
234 234
235 for (i=0; i<nr_mce_banks; i++) { 235 for (i = 0; i < nr_mce_banks; i++) {
236 wrmsr (MSR_IA32_MC0_CTL+4*i, 0xffffffff, 0xffffffff); 236 wrmsr(MSR_IA32_MC0_CTL+4*i, 0xffffffff, 0xffffffff);
237 wrmsr (MSR_IA32_MC0_STATUS+4*i, 0x0, 0x0); 237 wrmsr(MSR_IA32_MC0_STATUS+4*i, 0x0, 0x0);
238 } 238 }
239 239
240 set_in_cr4 (X86_CR4_MCE); 240 set_in_cr4(X86_CR4_MCE);
241 printk (KERN_INFO "Intel machine check reporting enabled on CPU#%d.\n", 241 printk(KERN_INFO "Intel machine check reporting enabled on CPU#%d.\n",
242 smp_processor_id()); 242 smp_processor_id());
243 243
244 /* Check for P4/Xeon extended MCE MSRs */ 244 /* Check for P4/Xeon extended MCE MSRs */
245 rdmsr (MSR_IA32_MCG_CAP, l, h); 245 rdmsr(MSR_IA32_MCG_CAP, l, h);
246 if (l & (1<<9)) {/* MCG_EXT_P */ 246 if (l & (1<<9)) {/* MCG_EXT_P */
247 mce_num_extended_msrs = (l >> 16) & 0xff; 247 mce_num_extended_msrs = (l >> 16) & 0xff;
248 printk (KERN_INFO "CPU%d: Intel P4/Xeon Extended MCE MSRs (%d)" 248 printk(KERN_INFO "CPU%d: Intel P4/Xeon Extended MCE MSRs (%d)"
249 " available\n", 249 " available\n",
250 smp_processor_id(), mce_num_extended_msrs); 250 smp_processor_id(), mce_num_extended_msrs);
251 251
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index 9f51e1ea9e82..84fd9f2a28ff 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -98,17 +98,6 @@ static void __init nvidia_bugs(int num, int slot, int func)
98 98
99} 99}
100 100
101static void __init ati_bugs(int num, int slot, int func)
102{
103#ifdef CONFIG_X86_IO_APIC
104 if (timer_over_8254 == 1) {
105 timer_over_8254 = 0;
106 printk(KERN_INFO
107 "ATI board detected. Disabling timer routing over 8254.\n");
108 }
109#endif
110}
111
112#define QFLAG_APPLY_ONCE 0x1 101#define QFLAG_APPLY_ONCE 0x1
113#define QFLAG_APPLIED 0x2 102#define QFLAG_APPLIED 0x2
114#define QFLAG_DONE (QFLAG_APPLY_ONCE|QFLAG_APPLIED) 103#define QFLAG_DONE (QFLAG_APPLY_ONCE|QFLAG_APPLIED)
@@ -126,8 +115,6 @@ static struct chipset early_qrk[] __initdata = {
126 PCI_CLASS_BRIDGE_PCI, PCI_ANY_ID, QFLAG_APPLY_ONCE, nvidia_bugs }, 115 PCI_CLASS_BRIDGE_PCI, PCI_ANY_ID, QFLAG_APPLY_ONCE, nvidia_bugs },
127 { PCI_VENDOR_ID_VIA, PCI_ANY_ID, 116 { PCI_VENDOR_ID_VIA, PCI_ANY_ID,
128 PCI_CLASS_BRIDGE_PCI, PCI_ANY_ID, QFLAG_APPLY_ONCE, via_bugs }, 117 PCI_CLASS_BRIDGE_PCI, PCI_ANY_ID, QFLAG_APPLY_ONCE, via_bugs },
129 { PCI_VENDOR_ID_ATI, PCI_ANY_ID,
130 PCI_CLASS_BRIDGE_PCI, PCI_ANY_ID, QFLAG_APPLY_ONCE, ati_bugs },
131 { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB, 118 { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB,
132 PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, fix_hypertransport_config }, 119 PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, fix_hypertransport_config },
133 {} 120 {}
diff --git a/arch/x86/kernel/efi_32.c b/arch/x86/kernel/efi_32.c
index 5d23d85624d4..4b63c8e1f13b 100644
--- a/arch/x86/kernel/efi_32.c
+++ b/arch/x86/kernel/efi_32.c
@@ -49,13 +49,13 @@ void efi_call_phys_prelog(void)
49 local_irq_save(efi_rt_eflags); 49 local_irq_save(efi_rt_eflags);
50 50
51 /* 51 /*
52 * If I don't have PSE, I should just duplicate two entries in page 52 * If I don't have PAE, I should just duplicate two entries in page
53 * directory. If I have PSE, I just need to duplicate one entry in 53 * directory. If I have PAE, I just need to duplicate one entry in
54 * page directory. 54 * page directory.
55 */ 55 */
56 cr4 = read_cr4(); 56 cr4 = read_cr4();
57 57
58 if (cr4 & X86_CR4_PSE) { 58 if (cr4 & X86_CR4_PAE) {
59 efi_bak_pg_dir_pointer[0].pgd = 59 efi_bak_pg_dir_pointer[0].pgd =
60 swapper_pg_dir[pgd_index(0)].pgd; 60 swapper_pg_dir[pgd_index(0)].pgd;
61 swapper_pg_dir[0].pgd = 61 swapper_pg_dir[0].pgd =
@@ -93,7 +93,7 @@ void efi_call_phys_epilog(void)
93 93
94 cr4 = read_cr4(); 94 cr4 = read_cr4();
95 95
96 if (cr4 & X86_CR4_PSE) { 96 if (cr4 & X86_CR4_PAE) {
97 swapper_pg_dir[pgd_index(0)].pgd = 97 swapper_pg_dir[pgd_index(0)].pgd =
98 efi_bak_pg_dir_pointer[0].pgd; 98 efi_bak_pg_dir_pointer[0].pgd;
99 } else { 99 } else {
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 556a8df522a7..5cf0aa993f4f 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -420,7 +420,6 @@ END(\label)
420 PTREGSCALL stub_clone, sys_clone, %r8 420 PTREGSCALL stub_clone, sys_clone, %r8
421 PTREGSCALL stub_fork, sys_fork, %rdi 421 PTREGSCALL stub_fork, sys_fork, %rdi
422 PTREGSCALL stub_vfork, sys_vfork, %rdi 422 PTREGSCALL stub_vfork, sys_vfork, %rdi
423 PTREGSCALL stub_rt_sigsuspend, sys_rt_sigsuspend, %rdx
424 PTREGSCALL stub_sigaltstack, sys_sigaltstack, %rdx 423 PTREGSCALL stub_sigaltstack, sys_sigaltstack, %rdx
425 PTREGSCALL stub_iopl, sys_iopl, %rsi 424 PTREGSCALL stub_iopl, sys_iopl, %rsi
426 425
@@ -1120,10 +1119,6 @@ ENTRY(coprocessor_segment_overrun)
1120 zeroentry do_coprocessor_segment_overrun 1119 zeroentry do_coprocessor_segment_overrun
1121END(coprocessor_segment_overrun) 1120END(coprocessor_segment_overrun)
1122 1121
1123ENTRY(reserved)
1124 zeroentry do_reserved
1125END(reserved)
1126
1127 /* runs on exception stack */ 1122 /* runs on exception stack */
1128ENTRY(double_fault) 1123ENTRY(double_fault)
1129 XCPT_FRAME 1124 XCPT_FRAME
diff --git a/arch/x86/kernel/geode_32.c b/arch/x86/kernel/geode_32.c
index e8edd63ab000..9b08e852fd1a 100644
--- a/arch/x86/kernel/geode_32.c
+++ b/arch/x86/kernel/geode_32.c
@@ -166,6 +166,8 @@ int geode_has_vsa2(void)
166 static int has_vsa2 = -1; 166 static int has_vsa2 = -1;
167 167
168 if (has_vsa2 == -1) { 168 if (has_vsa2 == -1) {
169 u16 val;
170
169 /* 171 /*
170 * The VSA has virtual registers that we can query for a 172 * The VSA has virtual registers that we can query for a
171 * signature. 173 * signature.
@@ -173,7 +175,8 @@ int geode_has_vsa2(void)
173 outw(VSA_VR_UNLOCK, VSA_VRC_INDEX); 175 outw(VSA_VR_UNLOCK, VSA_VRC_INDEX);
174 outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX); 176 outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX);
175 177
176 has_vsa2 = (inw(VSA_VRC_DATA) == VSA_SIG); 178 val = inw(VSA_VRC_DATA);
179 has_vsa2 = (val == AMD_VSA_SIG || val == GSW_VSA_SIG);
177 } 180 }
178 181
179 return has_vsa2; 182 return has_vsa2;
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
index 10a1955bb1d1..263b9d14753e 100644
--- a/arch/x86/kernel/head_64.S
+++ b/arch/x86/kernel/head_64.S
@@ -18,6 +18,7 @@
18#include <asm/page.h> 18#include <asm/page.h>
19#include <asm/msr.h> 19#include <asm/msr.h>
20#include <asm/cache.h> 20#include <asm/cache.h>
21#include <asm/processor-flags.h>
21 22
22#ifdef CONFIG_PARAVIRT 23#ifdef CONFIG_PARAVIRT
23#include <asm/asm-offsets.h> 24#include <asm/asm-offsets.h>
@@ -128,7 +129,7 @@ ident_complete:
128 /* Fixup phys_base */ 129 /* Fixup phys_base */
129 addq %rbp, phys_base(%rip) 130 addq %rbp, phys_base(%rip)
130 131
131#ifdef CONFIG_SMP 132#ifdef CONFIG_X86_TRAMPOLINE
132 addq %rbp, trampoline_level4_pgt + 0(%rip) 133 addq %rbp, trampoline_level4_pgt + 0(%rip)
133 addq %rbp, trampoline_level4_pgt + (511*8)(%rip) 134 addq %rbp, trampoline_level4_pgt + (511*8)(%rip)
134#endif 135#endif
@@ -154,9 +155,7 @@ ENTRY(secondary_startup_64)
154 */ 155 */
155 156
156 /* Enable PAE mode and PGE */ 157 /* Enable PAE mode and PGE */
157 xorq %rax, %rax 158 movl $(X86_CR4_PAE | X86_CR4_PGE), %eax
158 btsq $5, %rax
159 btsq $7, %rax
160 movq %rax, %cr4 159 movq %rax, %cr4
161 160
162 /* Setup early boot stage 4 level pagetables. */ 161 /* Setup early boot stage 4 level pagetables. */
@@ -184,14 +183,10 @@ ENTRY(secondary_startup_64)
1841: wrmsr /* Make changes effective */ 1831: wrmsr /* Make changes effective */
185 184
186 /* Setup cr0 */ 185 /* Setup cr0 */
187#define CR0_PM 1 /* protected mode */ 186#define CR0_STATE (X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | \
188#define CR0_MP (1<<1) 187 X86_CR0_NE | X86_CR0_WP | X86_CR0_AM | \
189#define CR0_ET (1<<4) 188 X86_CR0_PG)
190#define CR0_NE (1<<5) 189 movl $CR0_STATE, %eax
191#define CR0_WP (1<<16)
192#define CR0_AM (1<<18)
193#define CR0_PAGING (1<<31)
194 movl $CR0_PM|CR0_MP|CR0_ET|CR0_NE|CR0_WP|CR0_AM|CR0_PAGING,%eax
195 /* Make changes effective */ 190 /* Make changes effective */
196 movq %rax, %cr0 191 movq %rax, %cr0
197 192
@@ -327,11 +322,11 @@ early_idt_ripmsg:
327ENTRY(name) 322ENTRY(name)
328 323
329/* Automate the creation of 1 to 1 mapping pmd entries */ 324/* Automate the creation of 1 to 1 mapping pmd entries */
330#define PMDS(START, PERM, COUNT) \ 325#define PMDS(START, PERM, COUNT) \
331 i = 0 ; \ 326 i = 0 ; \
332 .rept (COUNT) ; \ 327 .rept (COUNT) ; \
333 .quad (START) + (i << 21) + (PERM) ; \ 328 .quad (START) + (i << PMD_SHIFT) + (PERM) ; \
334 i = i + 1 ; \ 329 i = i + 1 ; \
335 .endr 330 .endr
336 331
337 /* 332 /*
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 9b5cfcdfc426..ea230ec69057 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -17,7 +17,7 @@
17 17
18/* FSEC = 10^-15 18/* FSEC = 10^-15
19 NSEC = 10^-9 */ 19 NSEC = 10^-9 */
20#define FSEC_PER_NSEC 1000000 20#define FSEC_PER_NSEC 1000000L
21 21
22/* 22/*
23 * HPET address is set in acpi/boot.c, when an ACPI entry exists 23 * HPET address is set in acpi/boot.c, when an ACPI entry exists
@@ -206,20 +206,19 @@ static void hpet_enable_legacy_int(void)
206 206
207static void hpet_legacy_clockevent_register(void) 207static void hpet_legacy_clockevent_register(void)
208{ 208{
209 uint64_t hpet_freq;
210
211 /* Start HPET legacy interrupts */ 209 /* Start HPET legacy interrupts */
212 hpet_enable_legacy_int(); 210 hpet_enable_legacy_int();
213 211
214 /* 212 /*
215 * The period is a femto seconds value. We need to calculate the 213 * The mult factor is defined as (include/linux/clockchips.h)
216 * scaled math multiplication factor for nanosecond to hpet tick 214 * mult/2^shift = cyc/ns (in contrast to ns/cyc in clocksource.h)
217 * conversion. 215 * hpet_period is in units of femtoseconds (per cycle), so
216 * mult/2^shift = cyc/ns = 10^6/hpet_period
217 * mult = (10^6 * 2^shift)/hpet_period
218 * mult = (FSEC_PER_NSEC << hpet_clockevent.shift)/hpet_period
218 */ 219 */
219 hpet_freq = 1000000000000000ULL; 220 hpet_clockevent.mult = div_sc((unsigned long) FSEC_PER_NSEC,
220 do_div(hpet_freq, hpet_period); 221 hpet_period, hpet_clockevent.shift);
221 hpet_clockevent.mult = div_sc((unsigned long) hpet_freq,
222 NSEC_PER_SEC, hpet_clockevent.shift);
223 /* Calculate the min / max delta */ 222 /* Calculate the min / max delta */
224 hpet_clockevent.max_delta_ns = clockevent_delta2ns(0x7FFFFFFF, 223 hpet_clockevent.max_delta_ns = clockevent_delta2ns(0x7FFFFFFF,
225 &hpet_clockevent); 224 &hpet_clockevent);
@@ -324,7 +323,7 @@ static struct clocksource clocksource_hpet = {
324 323
325static int hpet_clocksource_register(void) 324static int hpet_clocksource_register(void)
326{ 325{
327 u64 tmp, start, now; 326 u64 start, now;
328 cycle_t t1; 327 cycle_t t1;
329 328
330 /* Start the counter */ 329 /* Start the counter */
@@ -351,21 +350,15 @@ static int hpet_clocksource_register(void)
351 return -ENODEV; 350 return -ENODEV;
352 } 351 }
353 352
354 /* Initialize and register HPET clocksource 353 /*
355 * 354 * The definition of mult is (include/linux/clocksource.h)
356 * hpet period is in femto seconds per cycle 355 * mult/2^shift = ns/cyc and hpet_period is in units of fsec/cyc
357 * so we need to convert this to ns/cyc units 356 * so we first need to convert hpet_period to ns/cyc units:
358 * approximated by mult/2^shift 357 * mult/2^shift = ns/cyc = hpet_period/10^6
359 * 358 * mult = (hpet_period * 2^shift)/10^6
360 * fsec/cyc * 1nsec/1000000fsec = nsec/cyc = mult/2^shift 359 * mult = (hpet_period << shift)/FSEC_PER_NSEC
361 * fsec/cyc * 1ns/1000000fsec * 2^shift = mult
362 * fsec/cyc * 2^shift * 1nsec/1000000fsec = mult
363 * (fsec/cyc << shift)/1000000 = mult
364 * (hpet_period << shift)/FSEC_PER_NSEC = mult
365 */ 360 */
366 tmp = (u64)hpet_period << HPET_SHIFT; 361 clocksource_hpet.mult = div_sc(hpet_period, FSEC_PER_NSEC, HPET_SHIFT);
367 do_div(tmp, FSEC_PER_NSEC);
368 clocksource_hpet.mult = (u32)tmp;
369 362
370 clocksource_register(&clocksource_hpet); 363 clocksource_register(&clocksource_hpet);
371 364
diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c
index eb9ddd8efb82..95e80e5033c3 100644
--- a/arch/x86/kernel/i387.c
+++ b/arch/x86/kernel/i387.c
@@ -162,7 +162,7 @@ int xfpregs_get(struct task_struct *target, const struct user_regset *regset,
162 int ret; 162 int ret;
163 163
164 if (!cpu_has_fxsr) 164 if (!cpu_has_fxsr)
165 return -ENODEV; 165 return -EIO;
166 166
167 ret = init_fpu(target); 167 ret = init_fpu(target);
168 if (ret) 168 if (ret)
@@ -179,7 +179,7 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
179 int ret; 179 int ret;
180 180
181 if (!cpu_has_fxsr) 181 if (!cpu_has_fxsr)
182 return -ENODEV; 182 return -EIO;
183 183
184 ret = init_fpu(target); 184 ret = init_fpu(target);
185 if (ret) 185 if (ret)
diff --git a/arch/x86/kernel/i8259_32.c b/arch/x86/kernel/i8259.c
index fe631967d625..7a0fda8f01b5 100644
--- a/arch/x86/kernel/i8259_32.c
+++ b/arch/x86/kernel/i8259.c
@@ -1,8 +1,10 @@
1#include <linux/linkage.h>
1#include <linux/errno.h> 2#include <linux/errno.h>
2#include <linux/signal.h> 3#include <linux/signal.h>
3#include <linux/sched.h> 4#include <linux/sched.h>
4#include <linux/ioport.h> 5#include <linux/ioport.h>
5#include <linux/interrupt.h> 6#include <linux/interrupt.h>
7#include <linux/timex.h>
6#include <linux/slab.h> 8#include <linux/slab.h>
7#include <linux/random.h> 9#include <linux/random.h>
8#include <linux/init.h> 10#include <linux/init.h>
@@ -10,10 +12,12 @@
10#include <linux/sysdev.h> 12#include <linux/sysdev.h>
11#include <linux/bitops.h> 13#include <linux/bitops.h>
12 14
15#include <asm/acpi.h>
13#include <asm/atomic.h> 16#include <asm/atomic.h>
14#include <asm/system.h> 17#include <asm/system.h>
15#include <asm/io.h> 18#include <asm/io.h>
16#include <asm/timer.h> 19#include <asm/timer.h>
20#include <asm/hw_irq.h>
17#include <asm/pgtable.h> 21#include <asm/pgtable.h>
18#include <asm/delay.h> 22#include <asm/delay.h>
19#include <asm/desc.h> 23#include <asm/desc.h>
@@ -32,7 +36,7 @@ static int i8259A_auto_eoi;
32DEFINE_SPINLOCK(i8259A_lock); 36DEFINE_SPINLOCK(i8259A_lock);
33static void mask_and_ack_8259A(unsigned int); 37static void mask_and_ack_8259A(unsigned int);
34 38
35static struct irq_chip i8259A_chip = { 39struct irq_chip i8259A_chip = {
36 .name = "XT-PIC", 40 .name = "XT-PIC",
37 .mask = disable_8259A_irq, 41 .mask = disable_8259A_irq,
38 .disable = disable_8259A_irq, 42 .disable = disable_8259A_irq,
@@ -125,14 +129,14 @@ static inline int i8259A_irq_real(unsigned int irq)
125 int irqmask = 1<<irq; 129 int irqmask = 1<<irq;
126 130
127 if (irq < 8) { 131 if (irq < 8) {
128 outb(0x0B,PIC_MASTER_CMD); /* ISR register */ 132 outb(0x0B, PIC_MASTER_CMD); /* ISR register */
129 value = inb(PIC_MASTER_CMD) & irqmask; 133 value = inb(PIC_MASTER_CMD) & irqmask;
130 outb(0x0A,PIC_MASTER_CMD); /* back to the IRR register */ 134 outb(0x0A, PIC_MASTER_CMD); /* back to the IRR register */
131 return value; 135 return value;
132 } 136 }
133 outb(0x0B,PIC_SLAVE_CMD); /* ISR register */ 137 outb(0x0B, PIC_SLAVE_CMD); /* ISR register */
134 value = inb(PIC_SLAVE_CMD) & (irqmask >> 8); 138 value = inb(PIC_SLAVE_CMD) & (irqmask >> 8);
135 outb(0x0A,PIC_SLAVE_CMD); /* back to the IRR register */ 139 outb(0x0A, PIC_SLAVE_CMD); /* back to the IRR register */
136 return value; 140 return value;
137} 141}
138 142
@@ -171,12 +175,14 @@ handle_real_irq:
171 if (irq & 8) { 175 if (irq & 8) {
172 inb(PIC_SLAVE_IMR); /* DUMMY - (do we need this?) */ 176 inb(PIC_SLAVE_IMR); /* DUMMY - (do we need this?) */
173 outb(cached_slave_mask, PIC_SLAVE_IMR); 177 outb(cached_slave_mask, PIC_SLAVE_IMR);
174 outb(0x60+(irq&7),PIC_SLAVE_CMD);/* 'Specific EOI' to slave */ 178 /* 'Specific EOI' to slave */
175 outb(0x60+PIC_CASCADE_IR,PIC_MASTER_CMD); /* 'Specific EOI' to master-IRQ2 */ 179 outb(0x60+(irq&7), PIC_SLAVE_CMD);
180 /* 'Specific EOI' to master-IRQ2 */
181 outb(0x60+PIC_CASCADE_IR, PIC_MASTER_CMD);
176 } else { 182 } else {
177 inb(PIC_MASTER_IMR); /* DUMMY - (do we need this?) */ 183 inb(PIC_MASTER_IMR); /* DUMMY - (do we need this?) */
178 outb(cached_master_mask, PIC_MASTER_IMR); 184 outb(cached_master_mask, PIC_MASTER_IMR);
179 outb(0x60+irq,PIC_MASTER_CMD); /* 'Specific EOI to master */ 185 outb(0x60+irq, PIC_MASTER_CMD); /* 'Specific EOI to master */
180 } 186 }
181 spin_unlock_irqrestore(&i8259A_lock, flags); 187 spin_unlock_irqrestore(&i8259A_lock, flags);
182 return; 188 return;
@@ -199,7 +205,8 @@ spurious_8259A_irq:
199 * lets ACK and report it. [once per IRQ] 205 * lets ACK and report it. [once per IRQ]
200 */ 206 */
201 if (!(spurious_irq_mask & irqmask)) { 207 if (!(spurious_irq_mask & irqmask)) {
202 printk(KERN_DEBUG "spurious 8259A interrupt: IRQ%d.\n", irq); 208 printk(KERN_DEBUG
209 "spurious 8259A interrupt: IRQ%d.\n", irq);
203 spurious_irq_mask |= irqmask; 210 spurious_irq_mask |= irqmask;
204 } 211 }
205 atomic_inc(&irq_err_count); 212 atomic_inc(&irq_err_count);
@@ -290,17 +297,34 @@ void init_8259A(int auto_eoi)
290 * outb_pic - this has to work on a wide range of PC hardware. 297 * outb_pic - this has to work on a wide range of PC hardware.
291 */ 298 */
292 outb_pic(0x11, PIC_MASTER_CMD); /* ICW1: select 8259A-1 init */ 299 outb_pic(0x11, PIC_MASTER_CMD); /* ICW1: select 8259A-1 init */
300#ifndef CONFIG_X86_64
293 outb_pic(0x20 + 0, PIC_MASTER_IMR); /* ICW2: 8259A-1 IR0-7 mapped to 0x20-0x27 */ 301 outb_pic(0x20 + 0, PIC_MASTER_IMR); /* ICW2: 8259A-1 IR0-7 mapped to 0x20-0x27 */
294 outb_pic(1U << PIC_CASCADE_IR, PIC_MASTER_IMR); /* 8259A-1 (the master) has a slave on IR2 */ 302 outb_pic(1U << PIC_CASCADE_IR, PIC_MASTER_IMR); /* 8259A-1 (the master) has a slave on IR2 */
303#else /* CONFIG_X86_64 */
304 /* ICW2: 8259A-1 IR0-7 mapped to 0x30-0x37 */
305 outb_pic(IRQ0_VECTOR, PIC_MASTER_IMR);
306 /* 8259A-1 (the master) has a slave on IR2 */
307 outb_pic(0x04, PIC_MASTER_IMR);
308#endif /* CONFIG_X86_64 */
295 if (auto_eoi) /* master does Auto EOI */ 309 if (auto_eoi) /* master does Auto EOI */
296 outb_pic(MASTER_ICW4_DEFAULT | PIC_ICW4_AEOI, PIC_MASTER_IMR); 310 outb_pic(MASTER_ICW4_DEFAULT | PIC_ICW4_AEOI, PIC_MASTER_IMR);
297 else /* master expects normal EOI */ 311 else /* master expects normal EOI */
298 outb_pic(MASTER_ICW4_DEFAULT, PIC_MASTER_IMR); 312 outb_pic(MASTER_ICW4_DEFAULT, PIC_MASTER_IMR);
299 313
300 outb_pic(0x11, PIC_SLAVE_CMD); /* ICW1: select 8259A-2 init */ 314 outb_pic(0x11, PIC_SLAVE_CMD); /* ICW1: select 8259A-2 init */
315#ifndef CONFIG_X86_64
301 outb_pic(0x20 + 8, PIC_SLAVE_IMR); /* ICW2: 8259A-2 IR0-7 mapped to 0x28-0x2f */ 316 outb_pic(0x20 + 8, PIC_SLAVE_IMR); /* ICW2: 8259A-2 IR0-7 mapped to 0x28-0x2f */
302 outb_pic(PIC_CASCADE_IR, PIC_SLAVE_IMR); /* 8259A-2 is a slave on master's IR2 */ 317 outb_pic(PIC_CASCADE_IR, PIC_SLAVE_IMR); /* 8259A-2 is a slave on master's IR2 */
303 outb_pic(SLAVE_ICW4_DEFAULT, PIC_SLAVE_IMR); /* (slave's support for AEOI in flat mode is to be investigated) */ 318 outb_pic(SLAVE_ICW4_DEFAULT, PIC_SLAVE_IMR); /* (slave's support for AEOI in flat mode is to be investigated) */
319#else /* CONFIG_X86_64 */
320 /* ICW2: 8259A-2 IR0-7 mapped to 0x38-0x3f */
321 outb_pic(IRQ8_VECTOR, PIC_SLAVE_IMR);
322 /* 8259A-2 is a slave on master's IR2 */
323 outb_pic(PIC_CASCADE_IR, PIC_SLAVE_IMR);
324 /* (slave's support for AEOI in flat mode is to be investigated) */
325 outb_pic(SLAVE_ICW4_DEFAULT, PIC_SLAVE_IMR);
326
327#endif /* CONFIG_X86_64 */
304 if (auto_eoi) 328 if (auto_eoi)
305 /* 329 /*
306 * In AEOI mode we just have to mask the interrupt 330 * In AEOI mode we just have to mask the interrupt
@@ -317,93 +341,3 @@ void init_8259A(int auto_eoi)
317 341
318 spin_unlock_irqrestore(&i8259A_lock, flags); 342 spin_unlock_irqrestore(&i8259A_lock, flags);
319} 343}
320
321/*
322 * Note that on a 486, we don't want to do a SIGFPE on an irq13
323 * as the irq is unreliable, and exception 16 works correctly
324 * (ie as explained in the intel literature). On a 386, you
325 * can't use exception 16 due to bad IBM design, so we have to
326 * rely on the less exact irq13.
327 *
328 * Careful.. Not only is IRQ13 unreliable, but it is also
329 * leads to races. IBM designers who came up with it should
330 * be shot.
331 */
332
333
334static irqreturn_t math_error_irq(int cpl, void *dev_id)
335{
336 extern void math_error(void __user *);
337 outb(0,0xF0);
338 if (ignore_fpu_irq || !boot_cpu_data.hard_math)
339 return IRQ_NONE;
340 math_error((void __user *)get_irq_regs()->ip);
341 return IRQ_HANDLED;
342}
343
344/*
345 * New motherboards sometimes make IRQ 13 be a PCI interrupt,
346 * so allow interrupt sharing.
347 */
348static struct irqaction fpu_irq = {
349 .handler = math_error_irq,
350 .mask = CPU_MASK_NONE,
351 .name = "fpu",
352};
353
354void __init init_ISA_irqs (void)
355{
356 int i;
357
358#ifdef CONFIG_X86_LOCAL_APIC
359 init_bsp_APIC();
360#endif
361 init_8259A(0);
362
363 /*
364 * 16 old-style INTA-cycle interrupts:
365 */
366 for (i = 0; i < 16; i++) {
367 set_irq_chip_and_handler_name(i, &i8259A_chip,
368 handle_level_irq, "XT");
369 }
370}
371
372/* Overridden in paravirt.c */
373void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ")));
374
375void __init native_init_IRQ(void)
376{
377 int i;
378
379 /* all the set up before the call gates are initialised */
380 pre_intr_init_hook();
381
382 /*
383 * Cover the whole vector space, no vector can escape
384 * us. (some of these will be overridden and become
385 * 'special' SMP interrupts)
386 */
387 for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {
388 int vector = FIRST_EXTERNAL_VECTOR + i;
389 if (i >= NR_IRQS)
390 break;
391 /* SYSCALL_VECTOR was reserved in trap_init. */
392 if (!test_bit(vector, used_vectors))
393 set_intr_gate(vector, interrupt[i]);
394 }
395
396 /* setup after call gates are initialised (usually add in
397 * the architecture specific gates)
398 */
399 intr_init_hook();
400
401 /*
402 * External FPU? Set up irq13 if so, for
403 * original braindamaged IBM FERR coupling.
404 */
405 if (boot_cpu_data.hard_math && !cpu_has_fpu)
406 setup_irq(FPU_IRQ, &fpu_irq);
407
408 irq_ctx_init(smp_processor_id());
409}
diff --git a/arch/x86/kernel/i8259_64.c b/arch/x86/kernel/i8259_64.c
deleted file mode 100644
index fa57a1568508..000000000000
--- a/arch/x86/kernel/i8259_64.c
+++ /dev/null
@@ -1,512 +0,0 @@
1#include <linux/linkage.h>
2#include <linux/errno.h>
3#include <linux/signal.h>
4#include <linux/sched.h>
5#include <linux/ioport.h>
6#include <linux/interrupt.h>
7#include <linux/timex.h>
8#include <linux/slab.h>
9#include <linux/random.h>
10#include <linux/init.h>
11#include <linux/kernel_stat.h>
12#include <linux/sysdev.h>
13#include <linux/bitops.h>
14
15#include <asm/acpi.h>
16#include <asm/atomic.h>
17#include <asm/system.h>
18#include <asm/io.h>
19#include <asm/hw_irq.h>
20#include <asm/pgtable.h>
21#include <asm/delay.h>
22#include <asm/desc.h>
23#include <asm/apic.h>
24#include <asm/i8259.h>
25
26/*
27 * Common place to define all x86 IRQ vectors
28 *
29 * This builds up the IRQ handler stubs using some ugly macros in irq.h
30 *
31 * These macros create the low-level assembly IRQ routines that save
32 * register context and call do_IRQ(). do_IRQ() then does all the
33 * operations that are needed to keep the AT (or SMP IOAPIC)
34 * interrupt-controller happy.
35 */
36
37#define BI(x,y) \
38 BUILD_IRQ(x##y)
39
40#define BUILD_16_IRQS(x) \
41 BI(x,0) BI(x,1) BI(x,2) BI(x,3) \
42 BI(x,4) BI(x,5) BI(x,6) BI(x,7) \
43 BI(x,8) BI(x,9) BI(x,a) BI(x,b) \
44 BI(x,c) BI(x,d) BI(x,e) BI(x,f)
45
46/*
47 * ISA PIC or low IO-APIC triggered (INTA-cycle or APIC) interrupts:
48 * (these are usually mapped to vectors 0x30-0x3f)
49 */
50
51/*
52 * The IO-APIC gives us many more interrupt sources. Most of these
53 * are unused but an SMP system is supposed to have enough memory ...
54 * sometimes (mostly wrt. hw bugs) we get corrupted vectors all
55 * across the spectrum, so we really want to be prepared to get all
56 * of these. Plus, more powerful systems might have more than 64
57 * IO-APIC registers.
58 *
59 * (these are usually mapped into the 0x30-0xff vector range)
60 */
61 BUILD_16_IRQS(0x2) BUILD_16_IRQS(0x3)
62BUILD_16_IRQS(0x4) BUILD_16_IRQS(0x5) BUILD_16_IRQS(0x6) BUILD_16_IRQS(0x7)
63BUILD_16_IRQS(0x8) BUILD_16_IRQS(0x9) BUILD_16_IRQS(0xa) BUILD_16_IRQS(0xb)
64BUILD_16_IRQS(0xc) BUILD_16_IRQS(0xd) BUILD_16_IRQS(0xe) BUILD_16_IRQS(0xf)
65
66#undef BUILD_16_IRQS
67#undef BI
68
69
70#define IRQ(x,y) \
71 IRQ##x##y##_interrupt
72
73#define IRQLIST_16(x) \
74 IRQ(x,0), IRQ(x,1), IRQ(x,2), IRQ(x,3), \
75 IRQ(x,4), IRQ(x,5), IRQ(x,6), IRQ(x,7), \
76 IRQ(x,8), IRQ(x,9), IRQ(x,a), IRQ(x,b), \
77 IRQ(x,c), IRQ(x,d), IRQ(x,e), IRQ(x,f)
78
79/* for the irq vectors */
80static void (*__initdata interrupt[NR_VECTORS - FIRST_EXTERNAL_VECTOR])(void) = {
81 IRQLIST_16(0x2), IRQLIST_16(0x3),
82 IRQLIST_16(0x4), IRQLIST_16(0x5), IRQLIST_16(0x6), IRQLIST_16(0x7),
83 IRQLIST_16(0x8), IRQLIST_16(0x9), IRQLIST_16(0xa), IRQLIST_16(0xb),
84 IRQLIST_16(0xc), IRQLIST_16(0xd), IRQLIST_16(0xe), IRQLIST_16(0xf)
85};
86
87#undef IRQ
88#undef IRQLIST_16
89
90/*
91 * This is the 'legacy' 8259A Programmable Interrupt Controller,
92 * present in the majority of PC/AT boxes.
93 * plus some generic x86 specific things if generic specifics makes
94 * any sense at all.
95 * this file should become arch/i386/kernel/irq.c when the old irq.c
96 * moves to arch independent land
97 */
98
99static int i8259A_auto_eoi;
100DEFINE_SPINLOCK(i8259A_lock);
101static void mask_and_ack_8259A(unsigned int);
102
103static struct irq_chip i8259A_chip = {
104 .name = "XT-PIC",
105 .mask = disable_8259A_irq,
106 .disable = disable_8259A_irq,
107 .unmask = enable_8259A_irq,
108 .mask_ack = mask_and_ack_8259A,
109};
110
111/*
112 * 8259A PIC functions to handle ISA devices:
113 */
114
115/*
116 * This contains the irq mask for both 8259A irq controllers,
117 */
118unsigned int cached_irq_mask = 0xffff;
119
120/*
121 * Not all IRQs can be routed through the IO-APIC, eg. on certain (older)
122 * boards the timer interrupt is not really connected to any IO-APIC pin,
123 * it's fed to the master 8259A's IR0 line only.
124 *
125 * Any '1' bit in this mask means the IRQ is routed through the IO-APIC.
126 * this 'mixed mode' IRQ handling costs nothing because it's only used
127 * at IRQ setup time.
128 */
129unsigned long io_apic_irqs;
130
131void disable_8259A_irq(unsigned int irq)
132{
133 unsigned int mask = 1 << irq;
134 unsigned long flags;
135
136 spin_lock_irqsave(&i8259A_lock, flags);
137 cached_irq_mask |= mask;
138 if (irq & 8)
139 outb(cached_slave_mask, PIC_SLAVE_IMR);
140 else
141 outb(cached_master_mask, PIC_MASTER_IMR);
142 spin_unlock_irqrestore(&i8259A_lock, flags);
143}
144
145void enable_8259A_irq(unsigned int irq)
146{
147 unsigned int mask = ~(1 << irq);
148 unsigned long flags;
149
150 spin_lock_irqsave(&i8259A_lock, flags);
151 cached_irq_mask &= mask;
152 if (irq & 8)
153 outb(cached_slave_mask, PIC_SLAVE_IMR);
154 else
155 outb(cached_master_mask, PIC_MASTER_IMR);
156 spin_unlock_irqrestore(&i8259A_lock, flags);
157}
158
159int i8259A_irq_pending(unsigned int irq)
160{
161 unsigned int mask = 1<<irq;
162 unsigned long flags;
163 int ret;
164
165 spin_lock_irqsave(&i8259A_lock, flags);
166 if (irq < 8)
167 ret = inb(PIC_MASTER_CMD) & mask;
168 else
169 ret = inb(PIC_SLAVE_CMD) & (mask >> 8);
170 spin_unlock_irqrestore(&i8259A_lock, flags);
171
172 return ret;
173}
174
175void make_8259A_irq(unsigned int irq)
176{
177 disable_irq_nosync(irq);
178 io_apic_irqs &= ~(1<<irq);
179 set_irq_chip_and_handler_name(irq, &i8259A_chip, handle_level_irq,
180 "XT");
181 enable_irq(irq);
182}
183
184/*
185 * This function assumes to be called rarely. Switching between
186 * 8259A registers is slow.
187 * This has to be protected by the irq controller spinlock
188 * before being called.
189 */
190static inline int i8259A_irq_real(unsigned int irq)
191{
192 int value;
193 int irqmask = 1<<irq;
194
195 if (irq < 8) {
196 outb(0x0B,PIC_MASTER_CMD); /* ISR register */
197 value = inb(PIC_MASTER_CMD) & irqmask;
198 outb(0x0A,PIC_MASTER_CMD); /* back to the IRR register */
199 return value;
200 }
201 outb(0x0B,PIC_SLAVE_CMD); /* ISR register */
202 value = inb(PIC_SLAVE_CMD) & (irqmask >> 8);
203 outb(0x0A,PIC_SLAVE_CMD); /* back to the IRR register */
204 return value;
205}
206
207/*
208 * Careful! The 8259A is a fragile beast, it pretty
209 * much _has_ to be done exactly like this (mask it
210 * first, _then_ send the EOI, and the order of EOI
211 * to the two 8259s is important!
212 */
213static void mask_and_ack_8259A(unsigned int irq)
214{
215 unsigned int irqmask = 1 << irq;
216 unsigned long flags;
217
218 spin_lock_irqsave(&i8259A_lock, flags);
219 /*
220 * Lightweight spurious IRQ detection. We do not want
221 * to overdo spurious IRQ handling - it's usually a sign
222 * of hardware problems, so we only do the checks we can
223 * do without slowing down good hardware unnecessarily.
224 *
225 * Note that IRQ7 and IRQ15 (the two spurious IRQs
226 * usually resulting from the 8259A-1|2 PICs) occur
227 * even if the IRQ is masked in the 8259A. Thus we
228 * can check spurious 8259A IRQs without doing the
229 * quite slow i8259A_irq_real() call for every IRQ.
230 * This does not cover 100% of spurious interrupts,
231 * but should be enough to warn the user that there
232 * is something bad going on ...
233 */
234 if (cached_irq_mask & irqmask)
235 goto spurious_8259A_irq;
236 cached_irq_mask |= irqmask;
237
238handle_real_irq:
239 if (irq & 8) {
240 inb(PIC_SLAVE_IMR); /* DUMMY - (do we need this?) */
241 outb(cached_slave_mask, PIC_SLAVE_IMR);
242 /* 'Specific EOI' to slave */
243 outb(0x60+(irq&7),PIC_SLAVE_CMD);
244 /* 'Specific EOI' to master-IRQ2 */
245 outb(0x60+PIC_CASCADE_IR,PIC_MASTER_CMD);
246 } else {
247 inb(PIC_MASTER_IMR); /* DUMMY - (do we need this?) */
248 outb(cached_master_mask, PIC_MASTER_IMR);
249 /* 'Specific EOI' to master */
250 outb(0x60+irq,PIC_MASTER_CMD);
251 }
252 spin_unlock_irqrestore(&i8259A_lock, flags);
253 return;
254
255spurious_8259A_irq:
256 /*
257 * this is the slow path - should happen rarely.
258 */
259 if (i8259A_irq_real(irq))
260 /*
261 * oops, the IRQ _is_ in service according to the
262 * 8259A - not spurious, go handle it.
263 */
264 goto handle_real_irq;
265
266 {
267 static int spurious_irq_mask;
268 /*
269 * At this point we can be sure the IRQ is spurious,
270 * lets ACK and report it. [once per IRQ]
271 */
272 if (!(spurious_irq_mask & irqmask)) {
273 printk(KERN_DEBUG
274 "spurious 8259A interrupt: IRQ%d.\n", irq);
275 spurious_irq_mask |= irqmask;
276 }
277 atomic_inc(&irq_err_count);
278 /*
279 * Theoretically we do not have to handle this IRQ,
280 * but in Linux this does not cause problems and is
281 * simpler for us.
282 */
283 goto handle_real_irq;
284 }
285}
286
287static char irq_trigger[2];
288/**
289 * ELCR registers (0x4d0, 0x4d1) control edge/level of IRQ
290 */
291static void restore_ELCR(char *trigger)
292{
293 outb(trigger[0], 0x4d0);
294 outb(trigger[1], 0x4d1);
295}
296
297static void save_ELCR(char *trigger)
298{
299 /* IRQ 0,1,2,8,13 are marked as reserved */
300 trigger[0] = inb(0x4d0) & 0xF8;
301 trigger[1] = inb(0x4d1) & 0xDE;
302}
303
304static int i8259A_resume(struct sys_device *dev)
305{
306 init_8259A(i8259A_auto_eoi);
307 restore_ELCR(irq_trigger);
308 return 0;
309}
310
311static int i8259A_suspend(struct sys_device *dev, pm_message_t state)
312{
313 save_ELCR(irq_trigger);
314 return 0;
315}
316
317static int i8259A_shutdown(struct sys_device *dev)
318{
319 /* Put the i8259A into a quiescent state that
320 * the kernel initialization code can get it
321 * out of.
322 */
323 outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */
324 outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-1 */
325 return 0;
326}
327
328static struct sysdev_class i8259_sysdev_class = {
329 .name = "i8259",
330 .suspend = i8259A_suspend,
331 .resume = i8259A_resume,
332 .shutdown = i8259A_shutdown,
333};
334
335static struct sys_device device_i8259A = {
336 .id = 0,
337 .cls = &i8259_sysdev_class,
338};
339
340static int __init i8259A_init_sysfs(void)
341{
342 int error = sysdev_class_register(&i8259_sysdev_class);
343 if (!error)
344 error = sysdev_register(&device_i8259A);
345 return error;
346}
347
348device_initcall(i8259A_init_sysfs);
349
350void init_8259A(int auto_eoi)
351{
352 unsigned long flags;
353
354 i8259A_auto_eoi = auto_eoi;
355
356 spin_lock_irqsave(&i8259A_lock, flags);
357
358 outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */
359 outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */
360
361 /*
362 * outb_pic - this has to work on a wide range of PC hardware.
363 */
364 outb_pic(0x11, PIC_MASTER_CMD); /* ICW1: select 8259A-1 init */
365 /* ICW2: 8259A-1 IR0-7 mapped to 0x30-0x37 */
366 outb_pic(IRQ0_VECTOR, PIC_MASTER_IMR);
367 /* 8259A-1 (the master) has a slave on IR2 */
368 outb_pic(0x04, PIC_MASTER_IMR);
369 if (auto_eoi) /* master does Auto EOI */
370 outb_pic(MASTER_ICW4_DEFAULT | PIC_ICW4_AEOI, PIC_MASTER_IMR);
371 else /* master expects normal EOI */
372 outb_pic(MASTER_ICW4_DEFAULT, PIC_MASTER_IMR);
373
374 outb_pic(0x11, PIC_SLAVE_CMD); /* ICW1: select 8259A-2 init */
375 /* ICW2: 8259A-2 IR0-7 mapped to 0x38-0x3f */
376 outb_pic(IRQ8_VECTOR, PIC_SLAVE_IMR);
377 /* 8259A-2 is a slave on master's IR2 */
378 outb_pic(PIC_CASCADE_IR, PIC_SLAVE_IMR);
379 /* (slave's support for AEOI in flat mode is to be investigated) */
380 outb_pic(SLAVE_ICW4_DEFAULT, PIC_SLAVE_IMR);
381
382 if (auto_eoi)
383 /*
384 * In AEOI mode we just have to mask the interrupt
385 * when acking.
386 */
387 i8259A_chip.mask_ack = disable_8259A_irq;
388 else
389 i8259A_chip.mask_ack = mask_and_ack_8259A;
390
391 udelay(100); /* wait for 8259A to initialize */
392
393 outb(cached_master_mask, PIC_MASTER_IMR); /* restore master IRQ mask */
394 outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */
395
396 spin_unlock_irqrestore(&i8259A_lock, flags);
397}
398
399
400
401
402/*
403 * IRQ2 is cascade interrupt to second interrupt controller
404 */
405
406static struct irqaction irq2 = {
407 .handler = no_action,
408 .mask = CPU_MASK_NONE,
409 .name = "cascade",
410};
411DEFINE_PER_CPU(vector_irq_t, vector_irq) = {
412 [0 ... IRQ0_VECTOR - 1] = -1,
413 [IRQ0_VECTOR] = 0,
414 [IRQ1_VECTOR] = 1,
415 [IRQ2_VECTOR] = 2,
416 [IRQ3_VECTOR] = 3,
417 [IRQ4_VECTOR] = 4,
418 [IRQ5_VECTOR] = 5,
419 [IRQ6_VECTOR] = 6,
420 [IRQ7_VECTOR] = 7,
421 [IRQ8_VECTOR] = 8,
422 [IRQ9_VECTOR] = 9,
423 [IRQ10_VECTOR] = 10,
424 [IRQ11_VECTOR] = 11,
425 [IRQ12_VECTOR] = 12,
426 [IRQ13_VECTOR] = 13,
427 [IRQ14_VECTOR] = 14,
428 [IRQ15_VECTOR] = 15,
429 [IRQ15_VECTOR + 1 ... NR_VECTORS - 1] = -1
430};
431
432void __init init_ISA_irqs (void)
433{
434 int i;
435
436 init_bsp_APIC();
437 init_8259A(0);
438
439 for (i = 0; i < NR_IRQS; i++) {
440 irq_desc[i].status = IRQ_DISABLED;
441 irq_desc[i].action = NULL;
442 irq_desc[i].depth = 1;
443
444 if (i < 16) {
445 /*
446 * 16 old-style INTA-cycle interrupts:
447 */
448 set_irq_chip_and_handler_name(i, &i8259A_chip,
449 handle_level_irq, "XT");
450 } else {
451 /*
452 * 'high' PCI IRQs filled in on demand
453 */
454 irq_desc[i].chip = &no_irq_chip;
455 }
456 }
457}
458
459void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ")));
460
461void __init native_init_IRQ(void)
462{
463 int i;
464
465 init_ISA_irqs();
466 /*
467 * Cover the whole vector space, no vector can escape
468 * us. (some of these will be overridden and become
469 * 'special' SMP interrupts)
470 */
471 for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {
472 int vector = FIRST_EXTERNAL_VECTOR + i;
473 if (vector != IA32_SYSCALL_VECTOR)
474 set_intr_gate(vector, interrupt[i]);
475 }
476
477#ifdef CONFIG_SMP
478 /*
479 * The reschedule interrupt is a CPU-to-CPU reschedule-helper
480 * IPI, driven by wakeup.
481 */
482 set_intr_gate(RESCHEDULE_VECTOR, reschedule_interrupt);
483
484 /* IPIs for invalidation */
485 set_intr_gate(INVALIDATE_TLB_VECTOR_START+0, invalidate_interrupt0);
486 set_intr_gate(INVALIDATE_TLB_VECTOR_START+1, invalidate_interrupt1);
487 set_intr_gate(INVALIDATE_TLB_VECTOR_START+2, invalidate_interrupt2);
488 set_intr_gate(INVALIDATE_TLB_VECTOR_START+3, invalidate_interrupt3);
489 set_intr_gate(INVALIDATE_TLB_VECTOR_START+4, invalidate_interrupt4);
490 set_intr_gate(INVALIDATE_TLB_VECTOR_START+5, invalidate_interrupt5);
491 set_intr_gate(INVALIDATE_TLB_VECTOR_START+6, invalidate_interrupt6);
492 set_intr_gate(INVALIDATE_TLB_VECTOR_START+7, invalidate_interrupt7);
493
494 /* IPI for generic function call */
495 set_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt);
496
497 /* Low priority IPI to cleanup after moving an irq */
498 set_intr_gate(IRQ_MOVE_CLEANUP_VECTOR, irq_move_cleanup_interrupt);
499#endif
500 set_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt);
501 set_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt);
502
503 /* self generated IPI for local APIC timer */
504 set_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt);
505
506 /* IPI vectors for APIC spurious and error interrupts */
507 set_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt);
508 set_intr_gate(ERROR_APIC_VECTOR, error_interrupt);
509
510 if (!acpi_ioapic)
511 setup_irq(2, &irq2);
512}
diff --git a/arch/x86/kernel/io_apic_32.c b/arch/x86/kernel/io_apic_32.c
index 4dc8600d9d20..d4f9df2b022a 100644
--- a/arch/x86/kernel/io_apic_32.c
+++ b/arch/x86/kernel/io_apic_32.c
@@ -58,7 +58,7 @@ static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
58static DEFINE_SPINLOCK(ioapic_lock); 58static DEFINE_SPINLOCK(ioapic_lock);
59static DEFINE_SPINLOCK(vector_lock); 59static DEFINE_SPINLOCK(vector_lock);
60 60
61int timer_over_8254 __initdata = 1; 61int timer_through_8259 __initdata;
62 62
63/* 63/*
64 * Is the SiS APIC rmw bug present ? 64 * Is the SiS APIC rmw bug present ?
@@ -239,7 +239,7 @@ static void __init replace_pin_at_irq(unsigned int irq,
239 } 239 }
240} 240}
241 241
242static void __modify_IO_APIC_irq (unsigned int irq, unsigned long enable, unsigned long disable) 242static void __modify_IO_APIC_irq(unsigned int irq, unsigned long enable, unsigned long disable)
243{ 243{
244 struct irq_pin_list *entry = irq_2_pin + irq; 244 struct irq_pin_list *entry = irq_2_pin + irq;
245 unsigned int pin, reg; 245 unsigned int pin, reg;
@@ -259,30 +259,32 @@ static void __modify_IO_APIC_irq (unsigned int irq, unsigned long enable, unsign
259} 259}
260 260
261/* mask = 1 */ 261/* mask = 1 */
262static void __mask_IO_APIC_irq (unsigned int irq) 262static void __mask_IO_APIC_irq(unsigned int irq)
263{ 263{
264 __modify_IO_APIC_irq(irq, 0x00010000, 0); 264 __modify_IO_APIC_irq(irq, IO_APIC_REDIR_MASKED, 0);
265} 265}
266 266
267/* mask = 0 */ 267/* mask = 0 */
268static void __unmask_IO_APIC_irq (unsigned int irq) 268static void __unmask_IO_APIC_irq(unsigned int irq)
269{ 269{
270 __modify_IO_APIC_irq(irq, 0, 0x00010000); 270 __modify_IO_APIC_irq(irq, 0, IO_APIC_REDIR_MASKED);
271} 271}
272 272
273/* mask = 1, trigger = 0 */ 273/* mask = 1, trigger = 0 */
274static void __mask_and_edge_IO_APIC_irq (unsigned int irq) 274static void __mask_and_edge_IO_APIC_irq(unsigned int irq)
275{ 275{
276 __modify_IO_APIC_irq(irq, 0x00010000, 0x00008000); 276 __modify_IO_APIC_irq(irq, IO_APIC_REDIR_MASKED,
277 IO_APIC_REDIR_LEVEL_TRIGGER);
277} 278}
278 279
279/* mask = 0, trigger = 1 */ 280/* mask = 0, trigger = 1 */
280static void __unmask_and_level_IO_APIC_irq (unsigned int irq) 281static void __unmask_and_level_IO_APIC_irq(unsigned int irq)
281{ 282{
282 __modify_IO_APIC_irq(irq, 0x00008000, 0x00010000); 283 __modify_IO_APIC_irq(irq, IO_APIC_REDIR_LEVEL_TRIGGER,
284 IO_APIC_REDIR_MASKED);
283} 285}
284 286
285static void mask_IO_APIC_irq (unsigned int irq) 287static void mask_IO_APIC_irq(unsigned int irq)
286{ 288{
287 unsigned long flags; 289 unsigned long flags;
288 290
@@ -291,7 +293,7 @@ static void mask_IO_APIC_irq (unsigned int irq)
291 spin_unlock_irqrestore(&ioapic_lock, flags); 293 spin_unlock_irqrestore(&ioapic_lock, flags);
292} 294}
293 295
294static void unmask_IO_APIC_irq (unsigned int irq) 296static void unmask_IO_APIC_irq(unsigned int irq)
295{ 297{
296 unsigned long flags; 298 unsigned long flags;
297 299
@@ -303,7 +305,7 @@ static void unmask_IO_APIC_irq (unsigned int irq)
303static void clear_IO_APIC_pin(unsigned int apic, unsigned int pin) 305static void clear_IO_APIC_pin(unsigned int apic, unsigned int pin)
304{ 306{
305 struct IO_APIC_route_entry entry; 307 struct IO_APIC_route_entry entry;
306 308
307 /* Check delivery_mode to be sure we're not clearing an SMI pin */ 309 /* Check delivery_mode to be sure we're not clearing an SMI pin */
308 entry = ioapic_read_entry(apic, pin); 310 entry = ioapic_read_entry(apic, pin);
309 if (entry.delivery_mode == dest_SMI) 311 if (entry.delivery_mode == dest_SMI)
@@ -315,7 +317,7 @@ static void clear_IO_APIC_pin(unsigned int apic, unsigned int pin)
315 ioapic_mask_entry(apic, pin); 317 ioapic_mask_entry(apic, pin);
316} 318}
317 319
318static void clear_IO_APIC (void) 320static void clear_IO_APIC(void)
319{ 321{
320 int apic, pin; 322 int apic, pin;
321 323
@@ -332,7 +334,7 @@ static void set_ioapic_affinity_irq(unsigned int irq, cpumask_t cpumask)
332 struct irq_pin_list *entry = irq_2_pin + irq; 334 struct irq_pin_list *entry = irq_2_pin + irq;
333 unsigned int apicid_value; 335 unsigned int apicid_value;
334 cpumask_t tmp; 336 cpumask_t tmp;
335 337
336 cpus_and(tmp, cpumask, cpu_online_map); 338 cpus_and(tmp, cpumask, cpu_online_map);
337 if (cpus_empty(tmp)) 339 if (cpus_empty(tmp))
338 tmp = TARGET_CPUS; 340 tmp = TARGET_CPUS;
@@ -361,7 +363,7 @@ static void set_ioapic_affinity_irq(unsigned int irq, cpumask_t cpumask)
361# include <linux/kernel_stat.h> /* kstat */ 363# include <linux/kernel_stat.h> /* kstat */
362# include <linux/slab.h> /* kmalloc() */ 364# include <linux/slab.h> /* kmalloc() */
363# include <linux/timer.h> 365# include <linux/timer.h>
364 366
365#define IRQBALANCE_CHECK_ARCH -999 367#define IRQBALANCE_CHECK_ARCH -999
366#define MAX_BALANCED_IRQ_INTERVAL (5*HZ) 368#define MAX_BALANCED_IRQ_INTERVAL (5*HZ)
367#define MIN_BALANCED_IRQ_INTERVAL (HZ/2) 369#define MIN_BALANCED_IRQ_INTERVAL (HZ/2)
@@ -373,14 +375,14 @@ static int physical_balance __read_mostly;
373static long balanced_irq_interval __read_mostly = MAX_BALANCED_IRQ_INTERVAL; 375static long balanced_irq_interval __read_mostly = MAX_BALANCED_IRQ_INTERVAL;
374 376
375static struct irq_cpu_info { 377static struct irq_cpu_info {
376 unsigned long * last_irq; 378 unsigned long *last_irq;
377 unsigned long * irq_delta; 379 unsigned long *irq_delta;
378 unsigned long irq; 380 unsigned long irq;
379} irq_cpu_data[NR_CPUS]; 381} irq_cpu_data[NR_CPUS];
380 382
381#define CPU_IRQ(cpu) (irq_cpu_data[cpu].irq) 383#define CPU_IRQ(cpu) (irq_cpu_data[cpu].irq)
382#define LAST_CPU_IRQ(cpu,irq) (irq_cpu_data[cpu].last_irq[irq]) 384#define LAST_CPU_IRQ(cpu, irq) (irq_cpu_data[cpu].last_irq[irq])
383#define IRQ_DELTA(cpu,irq) (irq_cpu_data[cpu].irq_delta[irq]) 385#define IRQ_DELTA(cpu, irq) (irq_cpu_data[cpu].irq_delta[irq])
384 386
385#define IDLE_ENOUGH(cpu,now) \ 387#define IDLE_ENOUGH(cpu,now) \
386 (idle_cpu(cpu) && ((now) - per_cpu(irq_stat, (cpu)).idle_timestamp > 1)) 388 (idle_cpu(cpu) && ((now) - per_cpu(irq_stat, (cpu)).idle_timestamp > 1))
@@ -419,8 +421,8 @@ inside:
419 if (cpu == -1) 421 if (cpu == -1)
420 cpu = NR_CPUS-1; 422 cpu = NR_CPUS-1;
421 } 423 }
422 } while (!cpu_online(cpu) || !IRQ_ALLOWED(cpu,allowed_mask) || 424 } while (!cpu_online(cpu) || !IRQ_ALLOWED(cpu, allowed_mask) ||
423 (search_idle && !IDLE_ENOUGH(cpu,now))); 425 (search_idle && !IDLE_ENOUGH(cpu, now)));
424 426
425 return cpu; 427 return cpu;
426} 428}
@@ -430,15 +432,14 @@ static inline void balance_irq(int cpu, int irq)
430 unsigned long now = jiffies; 432 unsigned long now = jiffies;
431 cpumask_t allowed_mask; 433 cpumask_t allowed_mask;
432 unsigned int new_cpu; 434 unsigned int new_cpu;
433 435
434 if (irqbalance_disabled) 436 if (irqbalance_disabled)
435 return; 437 return;
436 438
437 cpus_and(allowed_mask, cpu_online_map, balance_irq_affinity[irq]); 439 cpus_and(allowed_mask, cpu_online_map, balance_irq_affinity[irq]);
438 new_cpu = move(cpu, allowed_mask, now, 1); 440 new_cpu = move(cpu, allowed_mask, now, 1);
439 if (cpu != new_cpu) { 441 if (cpu != new_cpu)
440 set_pending_irq(irq, cpumask_of_cpu(new_cpu)); 442 set_pending_irq(irq, cpumask_of_cpu(new_cpu));
441 }
442} 443}
443 444
444static inline void rotate_irqs_among_cpus(unsigned long useful_load_threshold) 445static inline void rotate_irqs_among_cpus(unsigned long useful_load_threshold)
@@ -450,14 +451,14 @@ static inline void rotate_irqs_among_cpus(unsigned long useful_load_threshold)
450 if (!irq_desc[j].action) 451 if (!irq_desc[j].action)
451 continue; 452 continue;
452 /* Is it a significant load ? */ 453 /* Is it a significant load ? */
453 if (IRQ_DELTA(CPU_TO_PACKAGEINDEX(i),j) < 454 if (IRQ_DELTA(CPU_TO_PACKAGEINDEX(i), j) <
454 useful_load_threshold) 455 useful_load_threshold)
455 continue; 456 continue;
456 balance_irq(i, j); 457 balance_irq(i, j);
457 } 458 }
458 } 459 }
459 balanced_irq_interval = max((long)MIN_BALANCED_IRQ_INTERVAL, 460 balanced_irq_interval = max((long)MIN_BALANCED_IRQ_INTERVAL,
460 balanced_irq_interval - BALANCED_IRQ_LESS_DELTA); 461 balanced_irq_interval - BALANCED_IRQ_LESS_DELTA);
461 return; 462 return;
462} 463}
463 464
@@ -486,22 +487,22 @@ static void do_irq_balance(void)
486 /* Is this an active IRQ or balancing disabled ? */ 487 /* Is this an active IRQ or balancing disabled ? */
487 if (!irq_desc[j].action || irq_balancing_disabled(j)) 488 if (!irq_desc[j].action || irq_balancing_disabled(j))
488 continue; 489 continue;
489 if ( package_index == i ) 490 if (package_index == i)
490 IRQ_DELTA(package_index,j) = 0; 491 IRQ_DELTA(package_index, j) = 0;
491 /* Determine the total count per processor per IRQ */ 492 /* Determine the total count per processor per IRQ */
492 value_now = (unsigned long) kstat_cpu(i).irqs[j]; 493 value_now = (unsigned long) kstat_cpu(i).irqs[j];
493 494
494 /* Determine the activity per processor per IRQ */ 495 /* Determine the activity per processor per IRQ */
495 delta = value_now - LAST_CPU_IRQ(i,j); 496 delta = value_now - LAST_CPU_IRQ(i, j);
496 497
497 /* Update last_cpu_irq[][] for the next time */ 498 /* Update last_cpu_irq[][] for the next time */
498 LAST_CPU_IRQ(i,j) = value_now; 499 LAST_CPU_IRQ(i, j) = value_now;
499 500
500 /* Ignore IRQs whose rate is less than the clock */ 501 /* Ignore IRQs whose rate is less than the clock */
501 if (delta < useful_load_threshold) 502 if (delta < useful_load_threshold)
502 continue; 503 continue;
503 /* update the load for the processor or package total */ 504 /* update the load for the processor or package total */
504 IRQ_DELTA(package_index,j) += delta; 505 IRQ_DELTA(package_index, j) += delta;
505 506
506 /* Keep track of the higher numbered sibling as well */ 507 /* Keep track of the higher numbered sibling as well */
507 if (i != package_index) 508 if (i != package_index)
@@ -527,7 +528,8 @@ static void do_irq_balance(void)
527 max_cpu_irq = ULONG_MAX; 528 max_cpu_irq = ULONG_MAX;
528 529
529tryanothercpu: 530tryanothercpu:
530 /* Look for heaviest loaded processor. 531 /*
532 * Look for heaviest loaded processor.
531 * We may come back to get the next heaviest loaded processor. 533 * We may come back to get the next heaviest loaded processor.
532 * Skip processors with trivial loads. 534 * Skip processors with trivial loads.
533 */ 535 */
@@ -536,7 +538,7 @@ tryanothercpu:
536 for_each_online_cpu(i) { 538 for_each_online_cpu(i) {
537 if (i != CPU_TO_PACKAGEINDEX(i)) 539 if (i != CPU_TO_PACKAGEINDEX(i))
538 continue; 540 continue;
539 if (max_cpu_irq <= CPU_IRQ(i)) 541 if (max_cpu_irq <= CPU_IRQ(i))
540 continue; 542 continue;
541 if (tmp_cpu_irq < CPU_IRQ(i)) { 543 if (tmp_cpu_irq < CPU_IRQ(i)) {
542 tmp_cpu_irq = CPU_IRQ(i); 544 tmp_cpu_irq = CPU_IRQ(i);
@@ -545,8 +547,9 @@ tryanothercpu:
545 } 547 }
546 548
547 if (tmp_loaded == -1) { 549 if (tmp_loaded == -1) {
548 /* In the case of small number of heavy interrupt sources, 550 /*
549 * loading some of the cpus too much. We use Ingo's original 551 * In the case of small number of heavy interrupt sources,
552 * loading some of the cpus too much. We use Ingo's original
550 * approach to rotate them around. 553 * approach to rotate them around.
551 */ 554 */
552 if (!first_attempt && imbalance >= useful_load_threshold) { 555 if (!first_attempt && imbalance >= useful_load_threshold) {
@@ -555,13 +558,14 @@ tryanothercpu:
555 } 558 }
556 goto not_worth_the_effort; 559 goto not_worth_the_effort;
557 } 560 }
558 561
559 first_attempt = 0; /* heaviest search */ 562 first_attempt = 0; /* heaviest search */
560 max_cpu_irq = tmp_cpu_irq; /* load */ 563 max_cpu_irq = tmp_cpu_irq; /* load */
561 max_loaded = tmp_loaded; /* processor */ 564 max_loaded = tmp_loaded; /* processor */
562 imbalance = (max_cpu_irq - min_cpu_irq) / 2; 565 imbalance = (max_cpu_irq - min_cpu_irq) / 2;
563 566
564 /* if imbalance is less than approx 10% of max load, then 567 /*
568 * if imbalance is less than approx 10% of max load, then
565 * observe diminishing returns action. - quit 569 * observe diminishing returns action. - quit
566 */ 570 */
567 if (imbalance < (max_cpu_irq >> 3)) 571 if (imbalance < (max_cpu_irq >> 3))
@@ -577,26 +581,25 @@ tryanotherirq:
577 /* Is this an active IRQ? */ 581 /* Is this an active IRQ? */
578 if (!irq_desc[j].action) 582 if (!irq_desc[j].action)
579 continue; 583 continue;
580 if (imbalance <= IRQ_DELTA(max_loaded,j)) 584 if (imbalance <= IRQ_DELTA(max_loaded, j))
581 continue; 585 continue;
582 /* Try to find the IRQ that is closest to the imbalance 586 /* Try to find the IRQ that is closest to the imbalance
583 * without going over. 587 * without going over.
584 */ 588 */
585 if (move_this_load < IRQ_DELTA(max_loaded,j)) { 589 if (move_this_load < IRQ_DELTA(max_loaded, j)) {
586 move_this_load = IRQ_DELTA(max_loaded,j); 590 move_this_load = IRQ_DELTA(max_loaded, j);
587 selected_irq = j; 591 selected_irq = j;
588 } 592 }
589 } 593 }
590 if (selected_irq == -1) { 594 if (selected_irq == -1)
591 goto tryanothercpu; 595 goto tryanothercpu;
592 }
593 596
594 imbalance = move_this_load; 597 imbalance = move_this_load;
595 598
596 /* For physical_balance case, we accumulated both load 599 /* For physical_balance case, we accumulated both load
597 * values in the one of the siblings cpu_irq[], 600 * values in the one of the siblings cpu_irq[],
598 * to use the same code for physical and logical processors 601 * to use the same code for physical and logical processors
599 * as much as possible. 602 * as much as possible.
600 * 603 *
601 * NOTE: the cpu_irq[] array holds the sum of the load for 604 * NOTE: the cpu_irq[] array holds the sum of the load for
602 * sibling A and sibling B in the slot for the lowest numbered 605 * sibling A and sibling B in the slot for the lowest numbered
@@ -625,11 +628,11 @@ tryanotherirq:
625 /* mark for change destination */ 628 /* mark for change destination */
626 set_pending_irq(selected_irq, cpumask_of_cpu(min_loaded)); 629 set_pending_irq(selected_irq, cpumask_of_cpu(min_loaded));
627 630
628 /* Since we made a change, come back sooner to 631 /* Since we made a change, come back sooner to
629 * check for more variation. 632 * check for more variation.
630 */ 633 */
631 balanced_irq_interval = max((long)MIN_BALANCED_IRQ_INTERVAL, 634 balanced_irq_interval = max((long)MIN_BALANCED_IRQ_INTERVAL,
632 balanced_irq_interval - BALANCED_IRQ_LESS_DELTA); 635 balanced_irq_interval - BALANCED_IRQ_LESS_DELTA);
633 return; 636 return;
634 } 637 }
635 goto tryanotherirq; 638 goto tryanotherirq;
@@ -640,7 +643,7 @@ not_worth_the_effort:
640 * upward 643 * upward
641 */ 644 */
642 balanced_irq_interval = min((long)MAX_BALANCED_IRQ_INTERVAL, 645 balanced_irq_interval = min((long)MAX_BALANCED_IRQ_INTERVAL,
643 balanced_irq_interval + BALANCED_IRQ_MORE_DELTA); 646 balanced_irq_interval + BALANCED_IRQ_MORE_DELTA);
644 return; 647 return;
645} 648}
646 649
@@ -679,13 +682,13 @@ static int __init balanced_irq_init(void)
679 cpumask_t tmp; 682 cpumask_t tmp;
680 683
681 cpus_shift_right(tmp, cpu_online_map, 2); 684 cpus_shift_right(tmp, cpu_online_map, 2);
682 c = &boot_cpu_data; 685 c = &boot_cpu_data;
683 /* When not overwritten by the command line ask subarchitecture. */ 686 /* When not overwritten by the command line ask subarchitecture. */
684 if (irqbalance_disabled == IRQBALANCE_CHECK_ARCH) 687 if (irqbalance_disabled == IRQBALANCE_CHECK_ARCH)
685 irqbalance_disabled = NO_BALANCE_IRQ; 688 irqbalance_disabled = NO_BALANCE_IRQ;
686 if (irqbalance_disabled) 689 if (irqbalance_disabled)
687 return 0; 690 return 0;
688 691
689 /* disable irqbalance completely if there is only one processor online */ 692 /* disable irqbalance completely if there is only one processor online */
690 if (num_online_cpus() < 2) { 693 if (num_online_cpus() < 2) {
691 irqbalance_disabled = 1; 694 irqbalance_disabled = 1;
@@ -699,16 +702,14 @@ static int __init balanced_irq_init(void)
699 physical_balance = 1; 702 physical_balance = 1;
700 703
701 for_each_online_cpu(i) { 704 for_each_online_cpu(i) {
702 irq_cpu_data[i].irq_delta = kmalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL); 705 irq_cpu_data[i].irq_delta = kzalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL);
703 irq_cpu_data[i].last_irq = kmalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL); 706 irq_cpu_data[i].last_irq = kzalloc(sizeof(unsigned long) * NR_IRQS, GFP_KERNEL);
704 if (irq_cpu_data[i].irq_delta == NULL || irq_cpu_data[i].last_irq == NULL) { 707 if (irq_cpu_data[i].irq_delta == NULL || irq_cpu_data[i].last_irq == NULL) {
705 printk(KERN_ERR "balanced_irq_init: out of memory"); 708 printk(KERN_ERR "balanced_irq_init: out of memory");
706 goto failed; 709 goto failed;
707 } 710 }
708 memset(irq_cpu_data[i].irq_delta,0,sizeof(unsigned long) * NR_IRQS);
709 memset(irq_cpu_data[i].last_irq,0,sizeof(unsigned long) * NR_IRQS);
710 } 711 }
711 712
712 printk(KERN_INFO "Starting balanced_irq\n"); 713 printk(KERN_INFO "Starting balanced_irq\n");
713 if (!IS_ERR(kthread_run(balanced_irq, NULL, "kirqd"))) 714 if (!IS_ERR(kthread_run(balanced_irq, NULL, "kirqd")))
714 return 0; 715 return 0;
@@ -843,7 +844,7 @@ static int __init find_isa_irq_apic(int irq, int type)
843 } 844 }
844 if (i < mp_irq_entries) { 845 if (i < mp_irq_entries) {
845 int apic; 846 int apic;
846 for(apic = 0; apic < nr_ioapics; apic++) { 847 for (apic = 0; apic < nr_ioapics; apic++) {
847 if (mp_ioapics[apic].mpc_apicid == mp_irqs[i].mpc_dstapic) 848 if (mp_ioapics[apic].mpc_apicid == mp_irqs[i].mpc_dstapic)
848 return apic; 849 return apic;
849 } 850 }
@@ -880,7 +881,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin)
880 !mp_irqs[i].mpc_irqtype && 881 !mp_irqs[i].mpc_irqtype &&
881 (bus == lbus) && 882 (bus == lbus) &&
882 (slot == ((mp_irqs[i].mpc_srcbusirq >> 2) & 0x1f))) { 883 (slot == ((mp_irqs[i].mpc_srcbusirq >> 2) & 0x1f))) {
883 int irq = pin_2_irq(i,apic,mp_irqs[i].mpc_dstirq); 884 int irq = pin_2_irq(i, apic, mp_irqs[i].mpc_dstirq);
884 885
885 if (!(apic || IO_APIC_IRQ(irq))) 886 if (!(apic || IO_APIC_IRQ(irq)))
886 continue; 887 continue;
@@ -900,7 +901,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin)
900EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector); 901EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
901 902
902/* 903/*
903 * This function currently is only a helper for the i386 smp boot process where 904 * This function currently is only a helper for the i386 smp boot process where
904 * we need to reprogram the ioredtbls to cater for the cpus which have come online 905 * we need to reprogram the ioredtbls to cater for the cpus which have come online
905 * so mask in all cases should simply be TARGET_CPUS 906 * so mask in all cases should simply be TARGET_CPUS
906 */ 907 */
@@ -975,37 +976,36 @@ static int MPBIOS_polarity(int idx)
975 /* 976 /*
976 * Determine IRQ line polarity (high active or low active): 977 * Determine IRQ line polarity (high active or low active):
977 */ 978 */
978 switch (mp_irqs[idx].mpc_irqflag & 3) 979 switch (mp_irqs[idx].mpc_irqflag & 3) {
980 case 0: /* conforms, ie. bus-type dependent polarity */
979 { 981 {
980 case 0: /* conforms, ie. bus-type dependent polarity */ 982 polarity = test_bit(bus, mp_bus_not_pci)?
981 { 983 default_ISA_polarity(idx):
982 polarity = test_bit(bus, mp_bus_not_pci)? 984 default_PCI_polarity(idx);
983 default_ISA_polarity(idx): 985 break;
984 default_PCI_polarity(idx); 986 }
985 break; 987 case 1: /* high active */
986 } 988 {
987 case 1: /* high active */ 989 polarity = 0;
988 { 990 break;
989 polarity = 0; 991 }
990 break; 992 case 2: /* reserved */
991 } 993 {
992 case 2: /* reserved */ 994 printk(KERN_WARNING "broken BIOS!!\n");
993 { 995 polarity = 1;
994 printk(KERN_WARNING "broken BIOS!!\n"); 996 break;
995 polarity = 1; 997 }
996 break; 998 case 3: /* low active */
997 } 999 {
998 case 3: /* low active */ 1000 polarity = 1;
999 { 1001 break;
1000 polarity = 1; 1002 }
1001 break; 1003 default: /* invalid */
1002 } 1004 {
1003 default: /* invalid */ 1005 printk(KERN_WARNING "broken BIOS!!\n");
1004 { 1006 polarity = 1;
1005 printk(KERN_WARNING "broken BIOS!!\n"); 1007 break;
1006 polarity = 1; 1008 }
1007 break;
1008 }
1009 } 1009 }
1010 return polarity; 1010 return polarity;
1011} 1011}
@@ -1018,69 +1018,67 @@ static int MPBIOS_trigger(int idx)
1018 /* 1018 /*
1019 * Determine IRQ trigger mode (edge or level sensitive): 1019 * Determine IRQ trigger mode (edge or level sensitive):
1020 */ 1020 */
1021 switch ((mp_irqs[idx].mpc_irqflag>>2) & 3) 1021 switch ((mp_irqs[idx].mpc_irqflag>>2) & 3) {
1022 case 0: /* conforms, ie. bus-type dependent */
1022 { 1023 {
1023 case 0: /* conforms, ie. bus-type dependent */ 1024 trigger = test_bit(bus, mp_bus_not_pci)?
1024 { 1025 default_ISA_trigger(idx):
1025 trigger = test_bit(bus, mp_bus_not_pci)? 1026 default_PCI_trigger(idx);
1026 default_ISA_trigger(idx):
1027 default_PCI_trigger(idx);
1028#if defined(CONFIG_EISA) || defined(CONFIG_MCA) 1027#if defined(CONFIG_EISA) || defined(CONFIG_MCA)
1029 switch (mp_bus_id_to_type[bus]) 1028 switch (mp_bus_id_to_type[bus]) {
1030 { 1029 case MP_BUS_ISA: /* ISA pin */
1031 case MP_BUS_ISA: /* ISA pin */ 1030 {
1032 { 1031 /* set before the switch */
1033 /* set before the switch */
1034 break;
1035 }
1036 case MP_BUS_EISA: /* EISA pin */
1037 {
1038 trigger = default_EISA_trigger(idx);
1039 break;
1040 }
1041 case MP_BUS_PCI: /* PCI pin */
1042 {
1043 /* set before the switch */
1044 break;
1045 }
1046 case MP_BUS_MCA: /* MCA pin */
1047 {
1048 trigger = default_MCA_trigger(idx);
1049 break;
1050 }
1051 default:
1052 {
1053 printk(KERN_WARNING "broken BIOS!!\n");
1054 trigger = 1;
1055 break;
1056 }
1057 }
1058#endif
1059 break; 1032 break;
1060 } 1033 }
1061 case 1: /* edge */ 1034 case MP_BUS_EISA: /* EISA pin */
1062 { 1035 {
1063 trigger = 0; 1036 trigger = default_EISA_trigger(idx);
1064 break; 1037 break;
1065 } 1038 }
1066 case 2: /* reserved */ 1039 case MP_BUS_PCI: /* PCI pin */
1067 { 1040 {
1068 printk(KERN_WARNING "broken BIOS!!\n"); 1041 /* set before the switch */
1069 trigger = 1;
1070 break; 1042 break;
1071 } 1043 }
1072 case 3: /* level */ 1044 case MP_BUS_MCA: /* MCA pin */
1073 { 1045 {
1074 trigger = 1; 1046 trigger = default_MCA_trigger(idx);
1075 break; 1047 break;
1076 } 1048 }
1077 default: /* invalid */ 1049 default:
1078 { 1050 {
1079 printk(KERN_WARNING "broken BIOS!!\n"); 1051 printk(KERN_WARNING "broken BIOS!!\n");
1080 trigger = 0; 1052 trigger = 1;
1081 break; 1053 break;
1082 } 1054 }
1083 } 1055 }
1056#endif
1057 break;
1058 }
1059 case 1: /* edge */
1060 {
1061 trigger = 0;
1062 break;
1063 }
1064 case 2: /* reserved */
1065 {
1066 printk(KERN_WARNING "broken BIOS!!\n");
1067 trigger = 1;
1068 break;
1069 }
1070 case 3: /* level */
1071 {
1072 trigger = 1;
1073 break;
1074 }
1075 default: /* invalid */
1076 {
1077 printk(KERN_WARNING "broken BIOS!!\n");
1078 trigger = 0;
1079 break;
1080 }
1081 }
1084 return trigger; 1082 return trigger;
1085} 1083}
1086 1084
@@ -1148,8 +1146,8 @@ static inline int IO_APIC_irq_trigger(int irq)
1148 1146
1149 for (apic = 0; apic < nr_ioapics; apic++) { 1147 for (apic = 0; apic < nr_ioapics; apic++) {
1150 for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) { 1148 for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {
1151 idx = find_irq_entry(apic,pin,mp_INT); 1149 idx = find_irq_entry(apic, pin, mp_INT);
1152 if ((idx != -1) && (irq == pin_2_irq(idx,apic,pin))) 1150 if ((idx != -1) && (irq == pin_2_irq(idx, apic, pin)))
1153 return irq_trigger(idx); 1151 return irq_trigger(idx);
1154 } 1152 }
1155 } 1153 }
@@ -1164,7 +1162,7 @@ static u8 irq_vector[NR_IRQ_VECTORS] __read_mostly = { FIRST_DEVICE_VECTOR , 0 }
1164 1162
1165static int __assign_irq_vector(int irq) 1163static int __assign_irq_vector(int irq)
1166{ 1164{
1167 static int current_vector = FIRST_DEVICE_VECTOR, current_offset = 0; 1165 static int current_vector = FIRST_DEVICE_VECTOR, current_offset;
1168 int vector, offset; 1166 int vector, offset;
1169 1167
1170 BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); 1168 BUG_ON((unsigned)irq >= NR_IRQ_VECTORS);
@@ -1237,15 +1235,15 @@ static void __init setup_IO_APIC_irqs(void)
1237 /* 1235 /*
1238 * add it to the IO-APIC irq-routing table: 1236 * add it to the IO-APIC irq-routing table:
1239 */ 1237 */
1240 memset(&entry,0,sizeof(entry)); 1238 memset(&entry, 0, sizeof(entry));
1241 1239
1242 entry.delivery_mode = INT_DELIVERY_MODE; 1240 entry.delivery_mode = INT_DELIVERY_MODE;
1243 entry.dest_mode = INT_DEST_MODE; 1241 entry.dest_mode = INT_DEST_MODE;
1244 entry.mask = 0; /* enable IRQ */ 1242 entry.mask = 0; /* enable IRQ */
1245 entry.dest.logical.logical_dest = 1243 entry.dest.logical.logical_dest =
1246 cpu_mask_to_apicid(TARGET_CPUS); 1244 cpu_mask_to_apicid(TARGET_CPUS);
1247 1245
1248 idx = find_irq_entry(apic,pin,mp_INT); 1246 idx = find_irq_entry(apic, pin, mp_INT);
1249 if (idx == -1) { 1247 if (idx == -1) {
1250 if (first_notcon) { 1248 if (first_notcon) {
1251 apic_printk(APIC_VERBOSE, KERN_DEBUG 1249 apic_printk(APIC_VERBOSE, KERN_DEBUG
@@ -1289,7 +1287,7 @@ static void __init setup_IO_APIC_irqs(void)
1289 vector = assign_irq_vector(irq); 1287 vector = assign_irq_vector(irq);
1290 entry.vector = vector; 1288 entry.vector = vector;
1291 ioapic_register_intr(irq, vector, IOAPIC_AUTO); 1289 ioapic_register_intr(irq, vector, IOAPIC_AUTO);
1292 1290
1293 if (!apic && (irq < 16)) 1291 if (!apic && (irq < 16))
1294 disable_8259A_irq(irq); 1292 disable_8259A_irq(irq);
1295 } 1293 }
@@ -1302,25 +1300,21 @@ static void __init setup_IO_APIC_irqs(void)
1302} 1300}
1303 1301
1304/* 1302/*
1305 * Set up the 8259A-master output pin: 1303 * Set up the timer pin, possibly with the 8259A-master behind.
1306 */ 1304 */
1307static void __init setup_ExtINT_IRQ0_pin(unsigned int apic, unsigned int pin, int vector) 1305static void __init setup_timer_IRQ0_pin(unsigned int apic, unsigned int pin,
1306 int vector)
1308{ 1307{
1309 struct IO_APIC_route_entry entry; 1308 struct IO_APIC_route_entry entry;
1310 1309
1311 memset(&entry,0,sizeof(entry)); 1310 memset(&entry, 0, sizeof(entry));
1312
1313 disable_8259A_irq(0);
1314
1315 /* mask LVT0 */
1316 apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
1317 1311
1318 /* 1312 /*
1319 * We use logical delivery to get the timer IRQ 1313 * We use logical delivery to get the timer IRQ
1320 * to the first CPU. 1314 * to the first CPU.
1321 */ 1315 */
1322 entry.dest_mode = INT_DEST_MODE; 1316 entry.dest_mode = INT_DEST_MODE;
1323 entry.mask = 0; /* unmask IRQ now */ 1317 entry.mask = 1; /* mask IRQ now */
1324 entry.dest.logical.logical_dest = cpu_mask_to_apicid(TARGET_CPUS); 1318 entry.dest.logical.logical_dest = cpu_mask_to_apicid(TARGET_CPUS);
1325 entry.delivery_mode = INT_DELIVERY_MODE; 1319 entry.delivery_mode = INT_DELIVERY_MODE;
1326 entry.polarity = 0; 1320 entry.polarity = 0;
@@ -1329,17 +1323,14 @@ static void __init setup_ExtINT_IRQ0_pin(unsigned int apic, unsigned int pin, in
1329 1323
1330 /* 1324 /*
1331 * The timer IRQ doesn't have to know that behind the 1325 * The timer IRQ doesn't have to know that behind the
1332 * scene we have a 8259A-master in AEOI mode ... 1326 * scene we may have a 8259A-master in AEOI mode ...
1333 */ 1327 */
1334 irq_desc[0].chip = &ioapic_chip; 1328 ioapic_register_intr(0, vector, IOAPIC_EDGE);
1335 set_irq_handler(0, handle_edge_irq);
1336 1329
1337 /* 1330 /*
1338 * Add it to the IO-APIC irq-routing table: 1331 * Add it to the IO-APIC irq-routing table:
1339 */ 1332 */
1340 ioapic_write_entry(apic, pin, entry); 1333 ioapic_write_entry(apic, pin, entry);
1341
1342 enable_8259A_irq(0);
1343} 1334}
1344 1335
1345void __init print_IO_APIC(void) 1336void __init print_IO_APIC(void)
@@ -1354,7 +1345,7 @@ void __init print_IO_APIC(void)
1354 if (apic_verbosity == APIC_QUIET) 1345 if (apic_verbosity == APIC_QUIET)
1355 return; 1346 return;
1356 1347
1357 printk(KERN_DEBUG "number of MP IRQ sources: %d.\n", mp_irq_entries); 1348 printk(KERN_DEBUG "number of MP IRQ sources: %d.\n", mp_irq_entries);
1358 for (i = 0; i < nr_ioapics; i++) 1349 for (i = 0; i < nr_ioapics; i++)
1359 printk(KERN_DEBUG "number of IO-APIC #%d registers: %d.\n", 1350 printk(KERN_DEBUG "number of IO-APIC #%d registers: %d.\n",
1360 mp_ioapics[i].mpc_apicid, nr_ioapic_registers[i]); 1351 mp_ioapics[i].mpc_apicid, nr_ioapic_registers[i]);
@@ -1459,7 +1450,7 @@ void __init print_IO_APIC(void)
1459 1450
1460#if 0 1451#if 0
1461 1452
1462static void print_APIC_bitfield (int base) 1453static void print_APIC_bitfield(int base)
1463{ 1454{
1464 unsigned int v; 1455 unsigned int v;
1465 int i, j; 1456 int i, j;
@@ -1480,7 +1471,7 @@ static void print_APIC_bitfield (int base)
1480 } 1471 }
1481} 1472}
1482 1473
1483void /*__init*/ print_local_APIC(void * dummy) 1474void /*__init*/ print_local_APIC(void *dummy)
1484{ 1475{
1485 unsigned int v, ver, maxlvt; 1476 unsigned int v, ver, maxlvt;
1486 1477
@@ -1489,6 +1480,7 @@ void /*__init*/ print_local_APIC(void * dummy)
1489 1480
1490 printk("\n" KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n", 1481 printk("\n" KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n",
1491 smp_processor_id(), hard_smp_processor_id()); 1482 smp_processor_id(), hard_smp_processor_id());
1483 v = apic_read(APIC_ID);
1492 printk(KERN_INFO "... APIC ID: %08x (%01x)\n", v, 1484 printk(KERN_INFO "... APIC ID: %08x (%01x)\n", v,
1493 GET_APIC_ID(read_apic_id())); 1485 GET_APIC_ID(read_apic_id()));
1494 v = apic_read(APIC_LVR); 1486 v = apic_read(APIC_LVR);
@@ -1563,7 +1555,7 @@ void /*__init*/ print_local_APIC(void * dummy)
1563 printk("\n"); 1555 printk("\n");
1564} 1556}
1565 1557
1566void print_all_local_APICs (void) 1558void print_all_local_APICs(void)
1567{ 1559{
1568 on_each_cpu(print_local_APIC, NULL, 1, 1); 1560 on_each_cpu(print_local_APIC, NULL, 1, 1);
1569} 1561}
@@ -1586,11 +1578,11 @@ void /*__init*/ print_PIC(void)
1586 v = inb(0xa0) << 8 | inb(0x20); 1578 v = inb(0xa0) << 8 | inb(0x20);
1587 printk(KERN_DEBUG "... PIC IRR: %04x\n", v); 1579 printk(KERN_DEBUG "... PIC IRR: %04x\n", v);
1588 1580
1589 outb(0x0b,0xa0); 1581 outb(0x0b, 0xa0);
1590 outb(0x0b,0x20); 1582 outb(0x0b, 0x20);
1591 v = inb(0xa0) << 8 | inb(0x20); 1583 v = inb(0xa0) << 8 | inb(0x20);
1592 outb(0x0a,0xa0); 1584 outb(0x0a, 0xa0);
1593 outb(0x0a,0x20); 1585 outb(0x0a, 0x20);
1594 1586
1595 spin_unlock_irqrestore(&i8259A_lock, flags); 1587 spin_unlock_irqrestore(&i8259A_lock, flags);
1596 1588
@@ -1626,7 +1618,7 @@ static void __init enable_IO_APIC(void)
1626 spin_unlock_irqrestore(&ioapic_lock, flags); 1618 spin_unlock_irqrestore(&ioapic_lock, flags);
1627 nr_ioapic_registers[apic] = reg_01.bits.entries+1; 1619 nr_ioapic_registers[apic] = reg_01.bits.entries+1;
1628 } 1620 }
1629 for(apic = 0; apic < nr_ioapics; apic++) { 1621 for (apic = 0; apic < nr_ioapics; apic++) {
1630 int pin; 1622 int pin;
1631 /* See if any of the pins is in ExtINT mode */ 1623 /* See if any of the pins is in ExtINT mode */
1632 for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) { 1624 for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {
@@ -1748,7 +1740,7 @@ static void __init setup_ioapic_ids_from_mpc(void)
1748 spin_lock_irqsave(&ioapic_lock, flags); 1740 spin_lock_irqsave(&ioapic_lock, flags);
1749 reg_00.raw = io_apic_read(apic, 0); 1741 reg_00.raw = io_apic_read(apic, 0);
1750 spin_unlock_irqrestore(&ioapic_lock, flags); 1742 spin_unlock_irqrestore(&ioapic_lock, flags);
1751 1743
1752 old_id = mp_ioapics[apic].mpc_apicid; 1744 old_id = mp_ioapics[apic].mpc_apicid;
1753 1745
1754 if (mp_ioapics[apic].mpc_apicid >= get_physical_broadcast()) { 1746 if (mp_ioapics[apic].mpc_apicid >= get_physical_broadcast()) {
@@ -1800,7 +1792,7 @@ static void __init setup_ioapic_ids_from_mpc(void)
1800 /* 1792 /*
1801 * Read the right value from the MPC table and 1793 * Read the right value from the MPC table and
1802 * write it into the ID register. 1794 * write it into the ID register.
1803 */ 1795 */
1804 apic_printk(APIC_VERBOSE, KERN_INFO 1796 apic_printk(APIC_VERBOSE, KERN_INFO
1805 "...changing IO-APIC physical APIC ID to %d ...", 1797 "...changing IO-APIC physical APIC ID to %d ...",
1806 mp_ioapics[apic].mpc_apicid); 1798 mp_ioapics[apic].mpc_apicid);
@@ -2020,7 +2012,7 @@ static void ack_apic(unsigned int irq)
2020 ack_APIC_irq(); 2012 ack_APIC_irq();
2021} 2013}
2022 2014
2023static void mask_lapic_irq (unsigned int irq) 2015static void mask_lapic_irq(unsigned int irq)
2024{ 2016{
2025 unsigned long v; 2017 unsigned long v;
2026 2018
@@ -2028,7 +2020,7 @@ static void mask_lapic_irq (unsigned int irq)
2028 apic_write_around(APIC_LVT0, v | APIC_LVT_MASKED); 2020 apic_write_around(APIC_LVT0, v | APIC_LVT_MASKED);
2029} 2021}
2030 2022
2031static void unmask_lapic_irq (unsigned int irq) 2023static void unmask_lapic_irq(unsigned int irq)
2032{ 2024{
2033 unsigned long v; 2025 unsigned long v;
2034 2026
@@ -2037,7 +2029,7 @@ static void unmask_lapic_irq (unsigned int irq)
2037} 2029}
2038 2030
2039static struct irq_chip lapic_chip __read_mostly = { 2031static struct irq_chip lapic_chip __read_mostly = {
2040 .name = "local-APIC-edge", 2032 .name = "local-APIC",
2041 .mask = mask_lapic_irq, 2033 .mask = mask_lapic_irq,
2042 .unmask = unmask_lapic_irq, 2034 .unmask = unmask_lapic_irq,
2043 .eoi = ack_apic, 2035 .eoi = ack_apic,
@@ -2046,14 +2038,14 @@ static struct irq_chip lapic_chip __read_mostly = {
2046static void __init setup_nmi(void) 2038static void __init setup_nmi(void)
2047{ 2039{
2048 /* 2040 /*
2049 * Dirty trick to enable the NMI watchdog ... 2041 * Dirty trick to enable the NMI watchdog ...
2050 * We put the 8259A master into AEOI mode and 2042 * We put the 8259A master into AEOI mode and
2051 * unmask on all local APICs LVT0 as NMI. 2043 * unmask on all local APICs LVT0 as NMI.
2052 * 2044 *
2053 * The idea to use the 8259A in AEOI mode ('8259A Virtual Wire') 2045 * The idea to use the 8259A in AEOI mode ('8259A Virtual Wire')
2054 * is from Maciej W. Rozycki - so we do not have to EOI from 2046 * is from Maciej W. Rozycki - so we do not have to EOI from
2055 * the NMI handler or the timer interrupt. 2047 * the NMI handler or the timer interrupt.
2056 */ 2048 */
2057 apic_printk(APIC_VERBOSE, KERN_INFO "activating NMI Watchdog ..."); 2049 apic_printk(APIC_VERBOSE, KERN_INFO "activating NMI Watchdog ...");
2058 2050
2059 enable_NMI_through_LVT0(); 2051 enable_NMI_through_LVT0();
@@ -2129,11 +2121,16 @@ static inline void __init unlock_ExtINT_logic(void)
2129static inline void __init check_timer(void) 2121static inline void __init check_timer(void)
2130{ 2122{
2131 int apic1, pin1, apic2, pin2; 2123 int apic1, pin1, apic2, pin2;
2124 int no_pin1 = 0;
2132 int vector; 2125 int vector;
2126 unsigned int ver;
2133 unsigned long flags; 2127 unsigned long flags;
2134 2128
2135 local_irq_save(flags); 2129 local_irq_save(flags);
2136 2130
2131 ver = apic_read(APIC_LVR);
2132 ver = GET_APIC_VERSION(ver);
2133
2137 /* 2134 /*
2138 * get/set the timer IRQ vector: 2135 * get/set the timer IRQ vector:
2139 */ 2136 */
@@ -2142,17 +2139,17 @@ static inline void __init check_timer(void)
2142 set_intr_gate(vector, interrupt[0]); 2139 set_intr_gate(vector, interrupt[0]);
2143 2140
2144 /* 2141 /*
2145 * Subtle, code in do_timer_interrupt() expects an AEOI 2142 * As IRQ0 is to be enabled in the 8259A, the virtual
2146 * mode for the 8259A whenever interrupts are routed 2143 * wire has to be disabled in the local APIC. Also
2147 * through I/O APICs. Also IRQ0 has to be enabled in 2144 * timer interrupts need to be acknowledged manually in
2148 * the 8259A which implies the virtual wire has to be 2145 * the 8259A for the i82489DX when using the NMI
2149 * disabled in the local APIC. 2146 * watchdog as that APIC treats NMIs as level-triggered.
2147 * The AEOI mode will finish them in the 8259A
2148 * automatically.
2150 */ 2149 */
2151 apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); 2150 apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
2152 init_8259A(1); 2151 init_8259A(1);
2153 timer_ack = 1; 2152 timer_ack = (nmi_watchdog == NMI_IO_APIC && !APIC_INTEGRATED(ver));
2154 if (timer_over_8254 > 0)
2155 enable_8259A_irq(0);
2156 2153
2157 pin1 = find_isa_irq_pin(0, mp_INT); 2154 pin1 = find_isa_irq_pin(0, mp_INT);
2158 apic1 = find_isa_irq_apic(0, mp_INT); 2155 apic1 = find_isa_irq_apic(0, mp_INT);
@@ -2162,14 +2159,33 @@ static inline void __init check_timer(void)
2162 printk(KERN_INFO "..TIMER: vector=0x%02X apic1=%d pin1=%d apic2=%d pin2=%d\n", 2159 printk(KERN_INFO "..TIMER: vector=0x%02X apic1=%d pin1=%d apic2=%d pin2=%d\n",
2163 vector, apic1, pin1, apic2, pin2); 2160 vector, apic1, pin1, apic2, pin2);
2164 2161
2162 /*
2163 * Some BIOS writers are clueless and report the ExtINTA
2164 * I/O APIC input from the cascaded 8259A as the timer
2165 * interrupt input. So just in case, if only one pin
2166 * was found above, try it both directly and through the
2167 * 8259A.
2168 */
2169 if (pin1 == -1) {
2170 pin1 = pin2;
2171 apic1 = apic2;
2172 no_pin1 = 1;
2173 } else if (pin2 == -1) {
2174 pin2 = pin1;
2175 apic2 = apic1;
2176 }
2177
2165 if (pin1 != -1) { 2178 if (pin1 != -1) {
2166 /* 2179 /*
2167 * Ok, does IRQ0 through the IOAPIC work? 2180 * Ok, does IRQ0 through the IOAPIC work?
2168 */ 2181 */
2182 if (no_pin1) {
2183 add_pin_to_irq(0, apic1, pin1);
2184 setup_timer_IRQ0_pin(apic1, pin1, vector);
2185 }
2169 unmask_IO_APIC_irq(0); 2186 unmask_IO_APIC_irq(0);
2170 if (timer_irq_works()) { 2187 if (timer_irq_works()) {
2171 if (nmi_watchdog == NMI_IO_APIC) { 2188 if (nmi_watchdog == NMI_IO_APIC) {
2172 disable_8259A_irq(0);
2173 setup_nmi(); 2189 setup_nmi();
2174 enable_8259A_irq(0); 2190 enable_8259A_irq(0);
2175 } 2191 }
@@ -2178,43 +2194,46 @@ static inline void __init check_timer(void)
2178 goto out; 2194 goto out;
2179 } 2195 }
2180 clear_IO_APIC_pin(apic1, pin1); 2196 clear_IO_APIC_pin(apic1, pin1);
2181 printk(KERN_ERR "..MP-BIOS bug: 8254 timer not connected to " 2197 if (!no_pin1)
2182 "IO-APIC\n"); 2198 printk(KERN_ERR "..MP-BIOS bug: "
2183 } 2199 "8254 timer not connected to IO-APIC\n");
2184 2200
2185 printk(KERN_INFO "...trying to set up timer (IRQ0) through the 8259A ... "); 2201 printk(KERN_INFO "...trying to set up timer (IRQ0) "
2186 if (pin2 != -1) { 2202 "through the 8259A ... ");
2187 printk("\n..... (found pin %d) ...", pin2); 2203 printk("\n..... (found pin %d) ...", pin2);
2188 /* 2204 /*
2189 * legacy devices should be connected to IO APIC #0 2205 * legacy devices should be connected to IO APIC #0
2190 */ 2206 */
2191 setup_ExtINT_IRQ0_pin(apic2, pin2, vector); 2207 replace_pin_at_irq(0, apic1, pin1, apic2, pin2);
2208 setup_timer_IRQ0_pin(apic2, pin2, vector);
2209 unmask_IO_APIC_irq(0);
2210 enable_8259A_irq(0);
2192 if (timer_irq_works()) { 2211 if (timer_irq_works()) {
2193 printk("works.\n"); 2212 printk("works.\n");
2194 if (pin1 != -1) 2213 timer_through_8259 = 1;
2195 replace_pin_at_irq(0, apic1, pin1, apic2, pin2);
2196 else
2197 add_pin_to_irq(0, apic2, pin2);
2198 if (nmi_watchdog == NMI_IO_APIC) { 2214 if (nmi_watchdog == NMI_IO_APIC) {
2215 disable_8259A_irq(0);
2199 setup_nmi(); 2216 setup_nmi();
2217 enable_8259A_irq(0);
2200 } 2218 }
2201 goto out; 2219 goto out;
2202 } 2220 }
2203 /* 2221 /*
2204 * Cleanup, just in case ... 2222 * Cleanup, just in case ...
2205 */ 2223 */
2224 disable_8259A_irq(0);
2206 clear_IO_APIC_pin(apic2, pin2); 2225 clear_IO_APIC_pin(apic2, pin2);
2226 printk(" failed.\n");
2207 } 2227 }
2208 printk(" failed.\n");
2209 2228
2210 if (nmi_watchdog == NMI_IO_APIC) { 2229 if (nmi_watchdog == NMI_IO_APIC) {
2211 printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n"); 2230 printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n");
2212 nmi_watchdog = 0; 2231 nmi_watchdog = NMI_NONE;
2213 } 2232 }
2233 timer_ack = 0;
2214 2234
2215 printk(KERN_INFO "...trying to set up timer as Virtual Wire IRQ..."); 2235 printk(KERN_INFO "...trying to set up timer as Virtual Wire IRQ...");
2216 2236
2217 disable_8259A_irq(0);
2218 set_irq_chip_and_handler_name(0, &lapic_chip, handle_fasteoi_irq, 2237 set_irq_chip_and_handler_name(0, &lapic_chip, handle_fasteoi_irq,
2219 "fasteoi"); 2238 "fasteoi");
2220 apic_write_around(APIC_LVT0, APIC_DM_FIXED | vector); /* Fixed mode */ 2239 apic_write_around(APIC_LVT0, APIC_DM_FIXED | vector); /* Fixed mode */
@@ -2224,12 +2243,12 @@ static inline void __init check_timer(void)
2224 printk(" works.\n"); 2243 printk(" works.\n");
2225 goto out; 2244 goto out;
2226 } 2245 }
2246 disable_8259A_irq(0);
2227 apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_FIXED | vector); 2247 apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_FIXED | vector);
2228 printk(" failed.\n"); 2248 printk(" failed.\n");
2229 2249
2230 printk(KERN_INFO "...trying to set up timer as ExtINT IRQ..."); 2250 printk(KERN_INFO "...trying to set up timer as ExtINT IRQ...");
2231 2251
2232 timer_ack = 0;
2233 init_8259A(0); 2252 init_8259A(0);
2234 make_8259A_irq(0); 2253 make_8259A_irq(0);
2235 apic_write_around(APIC_LVT0, APIC_DM_EXTINT); 2254 apic_write_around(APIC_LVT0, APIC_DM_EXTINT);
@@ -2286,28 +2305,14 @@ void __init setup_IO_APIC(void)
2286 print_IO_APIC(); 2305 print_IO_APIC();
2287} 2306}
2288 2307
2289static int __init setup_disable_8254_timer(char *s)
2290{
2291 timer_over_8254 = -1;
2292 return 1;
2293}
2294static int __init setup_enable_8254_timer(char *s)
2295{
2296 timer_over_8254 = 2;
2297 return 1;
2298}
2299
2300__setup("disable_8254_timer", setup_disable_8254_timer);
2301__setup("enable_8254_timer", setup_enable_8254_timer);
2302
2303/* 2308/*
2304 * Called after all the initialization is done. If we didnt find any 2309 * Called after all the initialization is done. If we didnt find any
2305 * APIC bugs then we can allow the modify fast path 2310 * APIC bugs then we can allow the modify fast path
2306 */ 2311 */
2307 2312
2308static int __init io_apic_bug_finalize(void) 2313static int __init io_apic_bug_finalize(void)
2309{ 2314{
2310 if(sis_apic_bug == -1) 2315 if (sis_apic_bug == -1)
2311 sis_apic_bug = 0; 2316 sis_apic_bug = 0;
2312 return 0; 2317 return 0;
2313} 2318}
@@ -2318,17 +2323,17 @@ struct sysfs_ioapic_data {
2318 struct sys_device dev; 2323 struct sys_device dev;
2319 struct IO_APIC_route_entry entry[0]; 2324 struct IO_APIC_route_entry entry[0];
2320}; 2325};
2321static struct sysfs_ioapic_data * mp_ioapic_data[MAX_IO_APICS]; 2326static struct sysfs_ioapic_data *mp_ioapic_data[MAX_IO_APICS];
2322 2327
2323static int ioapic_suspend(struct sys_device *dev, pm_message_t state) 2328static int ioapic_suspend(struct sys_device *dev, pm_message_t state)
2324{ 2329{
2325 struct IO_APIC_route_entry *entry; 2330 struct IO_APIC_route_entry *entry;
2326 struct sysfs_ioapic_data *data; 2331 struct sysfs_ioapic_data *data;
2327 int i; 2332 int i;
2328 2333
2329 data = container_of(dev, struct sysfs_ioapic_data, dev); 2334 data = container_of(dev, struct sysfs_ioapic_data, dev);
2330 entry = data->entry; 2335 entry = data->entry;
2331 for (i = 0; i < nr_ioapic_registers[dev->id]; i ++) 2336 for (i = 0; i < nr_ioapic_registers[dev->id]; i++)
2332 entry[i] = ioapic_read_entry(dev->id, i); 2337 entry[i] = ioapic_read_entry(dev->id, i);
2333 2338
2334 return 0; 2339 return 0;
@@ -2341,7 +2346,7 @@ static int ioapic_resume(struct sys_device *dev)
2341 unsigned long flags; 2346 unsigned long flags;
2342 union IO_APIC_reg_00 reg_00; 2347 union IO_APIC_reg_00 reg_00;
2343 int i; 2348 int i;
2344 2349
2345 data = container_of(dev, struct sysfs_ioapic_data, dev); 2350 data = container_of(dev, struct sysfs_ioapic_data, dev);
2346 entry = data->entry; 2351 entry = data->entry;
2347 2352
@@ -2352,7 +2357,7 @@ static int ioapic_resume(struct sys_device *dev)
2352 io_apic_write(dev->id, 0, reg_00.raw); 2357 io_apic_write(dev->id, 0, reg_00.raw);
2353 } 2358 }
2354 spin_unlock_irqrestore(&ioapic_lock, flags); 2359 spin_unlock_irqrestore(&ioapic_lock, flags);
2355 for (i = 0; i < nr_ioapic_registers[dev->id]; i ++) 2360 for (i = 0; i < nr_ioapic_registers[dev->id]; i++)
2356 ioapic_write_entry(dev->id, i, entry[i]); 2361 ioapic_write_entry(dev->id, i, entry[i]);
2357 2362
2358 return 0; 2363 return 0;
@@ -2366,24 +2371,23 @@ static struct sysdev_class ioapic_sysdev_class = {
2366 2371
2367static int __init ioapic_init_sysfs(void) 2372static int __init ioapic_init_sysfs(void)
2368{ 2373{
2369 struct sys_device * dev; 2374 struct sys_device *dev;
2370 int i, size, error = 0; 2375 int i, size, error = 0;
2371 2376
2372 error = sysdev_class_register(&ioapic_sysdev_class); 2377 error = sysdev_class_register(&ioapic_sysdev_class);
2373 if (error) 2378 if (error)
2374 return error; 2379 return error;
2375 2380
2376 for (i = 0; i < nr_ioapics; i++ ) { 2381 for (i = 0; i < nr_ioapics; i++) {
2377 size = sizeof(struct sys_device) + nr_ioapic_registers[i] 2382 size = sizeof(struct sys_device) + nr_ioapic_registers[i]
2378 * sizeof(struct IO_APIC_route_entry); 2383 * sizeof(struct IO_APIC_route_entry);
2379 mp_ioapic_data[i] = kmalloc(size, GFP_KERNEL); 2384 mp_ioapic_data[i] = kzalloc(size, GFP_KERNEL);
2380 if (!mp_ioapic_data[i]) { 2385 if (!mp_ioapic_data[i]) {
2381 printk(KERN_ERR "Can't suspend/resume IOAPIC %d\n", i); 2386 printk(KERN_ERR "Can't suspend/resume IOAPIC %d\n", i);
2382 continue; 2387 continue;
2383 } 2388 }
2384 memset(mp_ioapic_data[i], 0, size);
2385 dev = &mp_ioapic_data[i]->dev; 2389 dev = &mp_ioapic_data[i]->dev;
2386 dev->id = i; 2390 dev->id = i;
2387 dev->cls = &ioapic_sysdev_class; 2391 dev->cls = &ioapic_sysdev_class;
2388 error = sysdev_register(dev); 2392 error = sysdev_register(dev);
2389 if (error) { 2393 if (error) {
@@ -2458,7 +2462,7 @@ static int msi_compose_msg(struct pci_dev *pdev, unsigned int irq, struct msi_ms
2458 msg->address_lo = 2462 msg->address_lo =
2459 MSI_ADDR_BASE_LO | 2463 MSI_ADDR_BASE_LO |
2460 ((INT_DEST_MODE == 0) ? 2464 ((INT_DEST_MODE == 0) ?
2461 MSI_ADDR_DEST_MODE_PHYSICAL: 2465MSI_ADDR_DEST_MODE_PHYSICAL:
2462 MSI_ADDR_DEST_MODE_LOGICAL) | 2466 MSI_ADDR_DEST_MODE_LOGICAL) |
2463 ((INT_DELIVERY_MODE != dest_LowestPrio) ? 2467 ((INT_DELIVERY_MODE != dest_LowestPrio) ?
2464 MSI_ADDR_REDIRECTION_CPU: 2468 MSI_ADDR_REDIRECTION_CPU:
@@ -2469,7 +2473,7 @@ static int msi_compose_msg(struct pci_dev *pdev, unsigned int irq, struct msi_ms
2469 MSI_DATA_TRIGGER_EDGE | 2473 MSI_DATA_TRIGGER_EDGE |
2470 MSI_DATA_LEVEL_ASSERT | 2474 MSI_DATA_LEVEL_ASSERT |
2471 ((INT_DELIVERY_MODE != dest_LowestPrio) ? 2475 ((INT_DELIVERY_MODE != dest_LowestPrio) ?
2472 MSI_DATA_DELIVERY_FIXED: 2476MSI_DATA_DELIVERY_FIXED:
2473 MSI_DATA_DELIVERY_LOWPRI) | 2477 MSI_DATA_DELIVERY_LOWPRI) |
2474 MSI_DATA_VECTOR(vector); 2478 MSI_DATA_VECTOR(vector);
2475 } 2479 }
@@ -2640,12 +2644,12 @@ int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev)
2640#endif /* CONFIG_HT_IRQ */ 2644#endif /* CONFIG_HT_IRQ */
2641 2645
2642/* -------------------------------------------------------------------------- 2646/* --------------------------------------------------------------------------
2643 ACPI-based IOAPIC Configuration 2647 ACPI-based IOAPIC Configuration
2644 -------------------------------------------------------------------------- */ 2648 -------------------------------------------------------------------------- */
2645 2649
2646#ifdef CONFIG_ACPI 2650#ifdef CONFIG_ACPI
2647 2651
2648int __init io_apic_get_unique_id (int ioapic, int apic_id) 2652int __init io_apic_get_unique_id(int ioapic, int apic_id)
2649{ 2653{
2650 union IO_APIC_reg_00 reg_00; 2654 union IO_APIC_reg_00 reg_00;
2651 static physid_mask_t apic_id_map = PHYSID_MASK_NONE; 2655 static physid_mask_t apic_id_map = PHYSID_MASK_NONE;
@@ -2654,10 +2658,10 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
2654 int i = 0; 2658 int i = 0;
2655 2659
2656 /* 2660 /*
2657 * The P4 platform supports up to 256 APIC IDs on two separate APIC 2661 * The P4 platform supports up to 256 APIC IDs on two separate APIC
2658 * buses (one for LAPICs, one for IOAPICs), where predecessors only 2662 * buses (one for LAPICs, one for IOAPICs), where predecessors only
2659 * supports up to 16 on one shared APIC bus. 2663 * supports up to 16 on one shared APIC bus.
2660 * 2664 *
2661 * TBD: Expand LAPIC/IOAPIC support on P4-class systems to take full 2665 * TBD: Expand LAPIC/IOAPIC support on P4-class systems to take full
2662 * advantage of new APIC bus architecture. 2666 * advantage of new APIC bus architecture.
2663 */ 2667 */
@@ -2676,7 +2680,7 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
2676 } 2680 }
2677 2681
2678 /* 2682 /*
2679 * Every APIC in a system must have a unique ID or we get lots of nice 2683 * Every APIC in a system must have a unique ID or we get lots of nice
2680 * 'stuck on smp_invalidate_needed IPI wait' messages. 2684 * 'stuck on smp_invalidate_needed IPI wait' messages.
2681 */ 2685 */
2682 if (check_apicid_used(apic_id_map, apic_id)) { 2686 if (check_apicid_used(apic_id_map, apic_id)) {
@@ -2693,7 +2697,7 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
2693 "trying %d\n", ioapic, apic_id, i); 2697 "trying %d\n", ioapic, apic_id, i);
2694 2698
2695 apic_id = i; 2699 apic_id = i;
2696 } 2700 }
2697 2701
2698 tmp = apicid_to_cpu_present(apic_id); 2702 tmp = apicid_to_cpu_present(apic_id);
2699 physids_or(apic_id_map, apic_id_map, tmp); 2703 physids_or(apic_id_map, apic_id_map, tmp);
@@ -2720,7 +2724,7 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
2720} 2724}
2721 2725
2722 2726
2723int __init io_apic_get_version (int ioapic) 2727int __init io_apic_get_version(int ioapic)
2724{ 2728{
2725 union IO_APIC_reg_01 reg_01; 2729 union IO_APIC_reg_01 reg_01;
2726 unsigned long flags; 2730 unsigned long flags;
@@ -2733,7 +2737,7 @@ int __init io_apic_get_version (int ioapic)
2733} 2737}
2734 2738
2735 2739
2736int __init io_apic_get_redir_entries (int ioapic) 2740int __init io_apic_get_redir_entries(int ioapic)
2737{ 2741{
2738 union IO_APIC_reg_01 reg_01; 2742 union IO_APIC_reg_01 reg_01;
2739 unsigned long flags; 2743 unsigned long flags;
@@ -2746,7 +2750,7 @@ int __init io_apic_get_redir_entries (int ioapic)
2746} 2750}
2747 2751
2748 2752
2749int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int active_high_low) 2753int io_apic_set_pci_routing(int ioapic, int pin, int irq, int edge_level, int active_high_low)
2750{ 2754{
2751 struct IO_APIC_route_entry entry; 2755 struct IO_APIC_route_entry entry;
2752 2756
@@ -2762,7 +2766,7 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int a
2762 * corresponding device driver registers for this IRQ. 2766 * corresponding device driver registers for this IRQ.
2763 */ 2767 */
2764 2768
2765 memset(&entry,0,sizeof(entry)); 2769 memset(&entry, 0, sizeof(entry));
2766 2770
2767 entry.delivery_mode = INT_DELIVERY_MODE; 2771 entry.delivery_mode = INT_DELIVERY_MODE;
2768 entry.dest_mode = INT_DEST_MODE; 2772 entry.dest_mode = INT_DEST_MODE;
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
index ef1a8dfcc529..e5ef60303562 100644
--- a/arch/x86/kernel/io_apic_64.c
+++ b/arch/x86/kernel/io_apic_64.c
@@ -61,7 +61,7 @@ struct irq_cfg {
61}; 61};
62 62
63/* irq_cfg is indexed by the sum of all RTEs in all I/O APICs. */ 63/* irq_cfg is indexed by the sum of all RTEs in all I/O APICs. */
64struct irq_cfg irq_cfg[NR_IRQS] __read_mostly = { 64static struct irq_cfg irq_cfg[NR_IRQS] __read_mostly = {
65 [0] = { .domain = CPU_MASK_ALL, .vector = IRQ0_VECTOR, }, 65 [0] = { .domain = CPU_MASK_ALL, .vector = IRQ0_VECTOR, },
66 [1] = { .domain = CPU_MASK_ALL, .vector = IRQ1_VECTOR, }, 66 [1] = { .domain = CPU_MASK_ALL, .vector = IRQ1_VECTOR, },
67 [2] = { .domain = CPU_MASK_ALL, .vector = IRQ2_VECTOR, }, 67 [2] = { .domain = CPU_MASK_ALL, .vector = IRQ2_VECTOR, },
@@ -90,7 +90,7 @@ static int no_timer_check;
90 90
91static int disable_timer_pin_1 __initdata; 91static int disable_timer_pin_1 __initdata;
92 92
93int timer_over_8254 __initdata = 1; 93int timer_through_8259 __initdata;
94 94
95/* Where if anywhere is the i8259 connect in external int mode */ 95/* Where if anywhere is the i8259 connect in external int mode */
96static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; 96static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
@@ -183,7 +183,7 @@ static bool io_apic_level_ack_pending(unsigned int irq)
183 break; 183 break;
184 reg = io_apic_read(entry->apic, 0x10 + pin*2); 184 reg = io_apic_read(entry->apic, 0x10 + pin*2);
185 /* Is the remote IRR bit set? */ 185 /* Is the remote IRR bit set? */
186 if ((reg >> 14) & 1) { 186 if (reg & IO_APIC_REDIR_REMOTE_IRR) {
187 spin_unlock_irqrestore(&ioapic_lock, flags); 187 spin_unlock_irqrestore(&ioapic_lock, flags);
188 return true; 188 return true;
189 } 189 }
@@ -298,7 +298,7 @@ static void __target_IO_APIC_irq(unsigned int irq, unsigned int dest, u8 vector)
298 break; 298 break;
299 io_apic_write(apic, 0x11 + pin*2, dest); 299 io_apic_write(apic, 0x11 + pin*2, dest);
300 reg = io_apic_read(apic, 0x10 + pin*2); 300 reg = io_apic_read(apic, 0x10 + pin*2);
301 reg &= ~0x000000ff; 301 reg &= ~IO_APIC_REDIR_VECTOR_MASK;
302 reg |= vector; 302 reg |= vector;
303 io_apic_modify(apic, reg); 303 io_apic_modify(apic, reg);
304 if (!entry->next) 304 if (!entry->next)
@@ -360,16 +360,37 @@ static void add_pin_to_irq(unsigned int irq, int apic, int pin)
360 entry->pin = pin; 360 entry->pin = pin;
361} 361}
362 362
363/*
364 * Reroute an IRQ to a different pin.
365 */
366static void __init replace_pin_at_irq(unsigned int irq,
367 int oldapic, int oldpin,
368 int newapic, int newpin)
369{
370 struct irq_pin_list *entry = irq_2_pin + irq;
371
372 while (1) {
373 if (entry->apic == oldapic && entry->pin == oldpin) {
374 entry->apic = newapic;
375 entry->pin = newpin;
376 }
377 if (!entry->next)
378 break;
379 entry = irq_2_pin + entry->next;
380 }
381}
382
363 383
364#define DO_ACTION(name,R,ACTION, FINAL) \ 384#define DO_ACTION(name,R,ACTION, FINAL) \
365 \ 385 \
366 static void name##_IO_APIC_irq (unsigned int irq) \ 386 static void name##_IO_APIC_irq (unsigned int irq) \
367 __DO_ACTION(R, ACTION, FINAL) 387 __DO_ACTION(R, ACTION, FINAL)
368 388
369DO_ACTION( __mask, 0, |= 0x00010000, io_apic_sync(entry->apic) ) 389/* mask = 1 */
370 /* mask = 1 */ 390DO_ACTION(__mask, 0, |= IO_APIC_REDIR_MASKED, io_apic_sync(entry->apic))
371DO_ACTION( __unmask, 0, &= 0xfffeffff, ) 391
372 /* mask = 0 */ 392/* mask = 0 */
393DO_ACTION(__unmask, 0, &= ~IO_APIC_REDIR_MASKED, )
373 394
374static void mask_IO_APIC_irq (unsigned int irq) 395static void mask_IO_APIC_irq (unsigned int irq)
375{ 396{
@@ -430,20 +451,6 @@ static int __init disable_timer_pin_setup(char *arg)
430} 451}
431__setup("disable_timer_pin_1", disable_timer_pin_setup); 452__setup("disable_timer_pin_1", disable_timer_pin_setup);
432 453
433static int __init setup_disable_8254_timer(char *s)
434{
435 timer_over_8254 = -1;
436 return 1;
437}
438static int __init setup_enable_8254_timer(char *s)
439{
440 timer_over_8254 = 2;
441 return 1;
442}
443
444__setup("disable_8254_timer", setup_disable_8254_timer);
445__setup("enable_8254_timer", setup_enable_8254_timer);
446
447 454
448/* 455/*
449 * Find the IRQ entry number of a certain pin. 456 * Find the IRQ entry number of a certain pin.
@@ -911,26 +918,21 @@ static void __init setup_IO_APIC_irqs(void)
911} 918}
912 919
913/* 920/*
914 * Set up the 8259A-master output pin as broadcast to all 921 * Set up the timer pin, possibly with the 8259A-master behind.
915 * CPUs.
916 */ 922 */
917static void __init setup_ExtINT_IRQ0_pin(unsigned int apic, unsigned int pin, int vector) 923static void __init setup_timer_IRQ0_pin(unsigned int apic, unsigned int pin,
924 int vector)
918{ 925{
919 struct IO_APIC_route_entry entry; 926 struct IO_APIC_route_entry entry;
920 927
921 memset(&entry, 0, sizeof(entry)); 928 memset(&entry, 0, sizeof(entry));
922 929
923 disable_8259A_irq(0);
924
925 /* mask LVT0 */
926 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
927
928 /* 930 /*
929 * We use logical delivery to get the timer IRQ 931 * We use logical delivery to get the timer IRQ
930 * to the first CPU. 932 * to the first CPU.
931 */ 933 */
932 entry.dest_mode = INT_DEST_MODE; 934 entry.dest_mode = INT_DEST_MODE;
933 entry.mask = 0; /* unmask IRQ now */ 935 entry.mask = 1; /* mask IRQ now */
934 entry.dest = cpu_mask_to_apicid(TARGET_CPUS); 936 entry.dest = cpu_mask_to_apicid(TARGET_CPUS);
935 entry.delivery_mode = INT_DELIVERY_MODE; 937 entry.delivery_mode = INT_DELIVERY_MODE;
936 entry.polarity = 0; 938 entry.polarity = 0;
@@ -939,7 +941,7 @@ static void __init setup_ExtINT_IRQ0_pin(unsigned int apic, unsigned int pin, in
939 941
940 /* 942 /*
941 * The timer IRQ doesn't have to know that behind the 943 * The timer IRQ doesn't have to know that behind the
942 * scene we have a 8259A-master in AEOI mode ... 944 * scene we may have a 8259A-master in AEOI mode ...
943 */ 945 */
944 set_irq_chip_and_handler_name(0, &ioapic_chip, handle_edge_irq, "edge"); 946 set_irq_chip_and_handler_name(0, &ioapic_chip, handle_edge_irq, "edge");
945 947
@@ -947,8 +949,6 @@ static void __init setup_ExtINT_IRQ0_pin(unsigned int apic, unsigned int pin, in
947 * Add it to the IO-APIC irq-routing table: 949 * Add it to the IO-APIC irq-routing table:
948 */ 950 */
949 ioapic_write_entry(apic, pin, entry); 951 ioapic_write_entry(apic, pin, entry);
950
951 enable_8259A_irq(0);
952} 952}
953 953
954void __apicdebuginit print_IO_APIC(void) 954void __apicdebuginit print_IO_APIC(void)
@@ -1077,6 +1077,7 @@ void __apicdebuginit print_local_APIC(void * dummy)
1077 1077
1078 printk("\n" KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n", 1078 printk("\n" KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n",
1079 smp_processor_id(), hard_smp_processor_id()); 1079 smp_processor_id(), hard_smp_processor_id());
1080 v = apic_read(APIC_ID);
1080 printk(KERN_INFO "... APIC ID: %08x (%01x)\n", v, GET_APIC_ID(read_apic_id())); 1081 printk(KERN_INFO "... APIC ID: %08x (%01x)\n", v, GET_APIC_ID(read_apic_id()));
1081 v = apic_read(APIC_LVR); 1082 v = apic_read(APIC_LVR);
1082 printk(KERN_INFO "... APIC VERSION: %08x\n", v); 1083 printk(KERN_INFO "... APIC VERSION: %08x\n", v);
@@ -1659,6 +1660,7 @@ static inline void __init check_timer(void)
1659 struct irq_cfg *cfg = irq_cfg + 0; 1660 struct irq_cfg *cfg = irq_cfg + 0;
1660 int apic1, pin1, apic2, pin2; 1661 int apic1, pin1, apic2, pin2;
1661 unsigned long flags; 1662 unsigned long flags;
1663 int no_pin1 = 0;
1662 1664
1663 local_irq_save(flags); 1665 local_irq_save(flags);
1664 1666
@@ -1669,16 +1671,11 @@ static inline void __init check_timer(void)
1669 assign_irq_vector(0, TARGET_CPUS); 1671 assign_irq_vector(0, TARGET_CPUS);
1670 1672
1671 /* 1673 /*
1672 * Subtle, code in do_timer_interrupt() expects an AEOI 1674 * As IRQ0 is to be enabled in the 8259A, the virtual
1673 * mode for the 8259A whenever interrupts are routed 1675 * wire has to be disabled in the local APIC.
1674 * through I/O APICs. Also IRQ0 has to be enabled in
1675 * the 8259A which implies the virtual wire has to be
1676 * disabled in the local APIC.
1677 */ 1676 */
1678 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); 1677 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
1679 init_8259A(1); 1678 init_8259A(1);
1680 if (timer_over_8254 > 0)
1681 enable_8259A_irq(0);
1682 1679
1683 pin1 = find_isa_irq_pin(0, mp_INT); 1680 pin1 = find_isa_irq_pin(0, mp_INT);
1684 apic1 = find_isa_irq_apic(0, mp_INT); 1681 apic1 = find_isa_irq_apic(0, mp_INT);
@@ -1688,15 +1685,39 @@ static inline void __init check_timer(void)
1688 apic_printk(APIC_VERBOSE,KERN_INFO "..TIMER: vector=0x%02X apic1=%d pin1=%d apic2=%d pin2=%d\n", 1685 apic_printk(APIC_VERBOSE,KERN_INFO "..TIMER: vector=0x%02X apic1=%d pin1=%d apic2=%d pin2=%d\n",
1689 cfg->vector, apic1, pin1, apic2, pin2); 1686 cfg->vector, apic1, pin1, apic2, pin2);
1690 1687
1688 /*
1689 * Some BIOS writers are clueless and report the ExtINTA
1690 * I/O APIC input from the cascaded 8259A as the timer
1691 * interrupt input. So just in case, if only one pin
1692 * was found above, try it both directly and through the
1693 * 8259A.
1694 */
1695 if (pin1 == -1) {
1696 pin1 = pin2;
1697 apic1 = apic2;
1698 no_pin1 = 1;
1699 } else if (pin2 == -1) {
1700 pin2 = pin1;
1701 apic2 = apic1;
1702 }
1703
1704 replace_pin_at_irq(0, 0, 0, apic1, pin1);
1705 apic1 = 0;
1706 pin1 = 0;
1707 setup_timer_IRQ0_pin(apic1, pin1, cfg->vector);
1708
1691 if (pin1 != -1) { 1709 if (pin1 != -1) {
1692 /* 1710 /*
1693 * Ok, does IRQ0 through the IOAPIC work? 1711 * Ok, does IRQ0 through the IOAPIC work?
1694 */ 1712 */
1713 if (no_pin1) {
1714 add_pin_to_irq(0, apic1, pin1);
1715 setup_timer_IRQ0_pin(apic1, pin1, cfg->vector);
1716 }
1695 unmask_IO_APIC_irq(0); 1717 unmask_IO_APIC_irq(0);
1696 if (!no_timer_check && timer_irq_works()) { 1718 if (!no_timer_check && timer_irq_works()) {
1697 nmi_watchdog_default(); 1719 nmi_watchdog_default();
1698 if (nmi_watchdog == NMI_IO_APIC) { 1720 if (nmi_watchdog == NMI_IO_APIC) {
1699 disable_8259A_irq(0);
1700 setup_nmi(); 1721 setup_nmi();
1701 enable_8259A_irq(0); 1722 enable_8259A_irq(0);
1702 } 1723 }
@@ -1705,42 +1726,48 @@ static inline void __init check_timer(void)
1705 goto out; 1726 goto out;
1706 } 1727 }
1707 clear_IO_APIC_pin(apic1, pin1); 1728 clear_IO_APIC_pin(apic1, pin1);
1708 apic_printk(APIC_QUIET,KERN_ERR "..MP-BIOS bug: 8254 timer not " 1729 if (!no_pin1)
1709 "connected to IO-APIC\n"); 1730 apic_printk(APIC_QUIET,KERN_ERR "..MP-BIOS bug: "
1710 } 1731 "8254 timer not connected to IO-APIC\n");
1711 1732
1712 apic_printk(APIC_VERBOSE,KERN_INFO "...trying to set up timer (IRQ0) " 1733 apic_printk(APIC_VERBOSE,KERN_INFO
1713 "through the 8259A ... "); 1734 "...trying to set up timer (IRQ0) "
1714 if (pin2 != -1) { 1735 "through the 8259A ... ");
1715 apic_printk(APIC_VERBOSE,"\n..... (found apic %d pin %d) ...", 1736 apic_printk(APIC_VERBOSE,"\n..... (found apic %d pin %d) ...",
1716 apic2, pin2); 1737 apic2, pin2);
1717 /* 1738 /*
1718 * legacy devices should be connected to IO APIC #0 1739 * legacy devices should be connected to IO APIC #0
1719 */ 1740 */
1720 setup_ExtINT_IRQ0_pin(apic2, pin2, cfg->vector); 1741 replace_pin_at_irq(0, apic1, pin1, apic2, pin2);
1742 setup_timer_IRQ0_pin(apic2, pin2, cfg->vector);
1743 unmask_IO_APIC_irq(0);
1744 enable_8259A_irq(0);
1721 if (timer_irq_works()) { 1745 if (timer_irq_works()) {
1722 apic_printk(APIC_VERBOSE," works.\n"); 1746 apic_printk(APIC_VERBOSE," works.\n");
1747 timer_through_8259 = 1;
1723 nmi_watchdog_default(); 1748 nmi_watchdog_default();
1724 if (nmi_watchdog == NMI_IO_APIC) { 1749 if (nmi_watchdog == NMI_IO_APIC) {
1750 disable_8259A_irq(0);
1725 setup_nmi(); 1751 setup_nmi();
1752 enable_8259A_irq(0);
1726 } 1753 }
1727 goto out; 1754 goto out;
1728 } 1755 }
1729 /* 1756 /*
1730 * Cleanup, just in case ... 1757 * Cleanup, just in case ...
1731 */ 1758 */
1759 disable_8259A_irq(0);
1732 clear_IO_APIC_pin(apic2, pin2); 1760 clear_IO_APIC_pin(apic2, pin2);
1761 apic_printk(APIC_VERBOSE," failed.\n");
1733 } 1762 }
1734 apic_printk(APIC_VERBOSE," failed.\n");
1735 1763
1736 if (nmi_watchdog == NMI_IO_APIC) { 1764 if (nmi_watchdog == NMI_IO_APIC) {
1737 printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n"); 1765 printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n");
1738 nmi_watchdog = 0; 1766 nmi_watchdog = NMI_NONE;
1739 } 1767 }
1740 1768
1741 apic_printk(APIC_VERBOSE, KERN_INFO "...trying to set up timer as Virtual Wire IRQ..."); 1769 apic_printk(APIC_VERBOSE, KERN_INFO "...trying to set up timer as Virtual Wire IRQ...");
1742 1770
1743 disable_8259A_irq(0);
1744 irq_desc[0].chip = &lapic_irq_type; 1771 irq_desc[0].chip = &lapic_irq_type;
1745 apic_write(APIC_LVT0, APIC_DM_FIXED | cfg->vector); /* Fixed mode */ 1772 apic_write(APIC_LVT0, APIC_DM_FIXED | cfg->vector); /* Fixed mode */
1746 enable_8259A_irq(0); 1773 enable_8259A_irq(0);
@@ -1749,6 +1776,7 @@ static inline void __init check_timer(void)
1749 apic_printk(APIC_VERBOSE," works.\n"); 1776 apic_printk(APIC_VERBOSE," works.\n");
1750 goto out; 1777 goto out;
1751 } 1778 }
1779 disable_8259A_irq(0);
1752 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_FIXED | cfg->vector); 1780 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_FIXED | cfg->vector);
1753 apic_printk(APIC_VERBOSE," failed.\n"); 1781 apic_printk(APIC_VERBOSE," failed.\n");
1754 1782
diff --git a/arch/x86/kernel/ipi.c b/arch/x86/kernel/ipi.c
index c0df7b89ca23..9d98cda39ad9 100644
--- a/arch/x86/kernel/ipi.c
+++ b/arch/x86/kernel/ipi.c
@@ -8,7 +8,6 @@
8#include <linux/kernel_stat.h> 8#include <linux/kernel_stat.h>
9#include <linux/mc146818rtc.h> 9#include <linux/mc146818rtc.h>
10#include <linux/cache.h> 10#include <linux/cache.h>
11#include <linux/interrupt.h>
12#include <linux/cpu.h> 11#include <linux/cpu.h>
13#include <linux/module.h> 12#include <linux/module.h>
14 13
diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c
index 147352df28b9..468acd04aa2e 100644
--- a/arch/x86/kernel/irq_32.c
+++ b/arch/x86/kernel/irq_32.c
@@ -313,16 +313,20 @@ skip:
313 per_cpu(irq_stat,j).irq_tlb_count); 313 per_cpu(irq_stat,j).irq_tlb_count);
314 seq_printf(p, " TLB shootdowns\n"); 314 seq_printf(p, " TLB shootdowns\n");
315#endif 315#endif
316#ifdef CONFIG_X86_MCE
316 seq_printf(p, "TRM: "); 317 seq_printf(p, "TRM: ");
317 for_each_online_cpu(j) 318 for_each_online_cpu(j)
318 seq_printf(p, "%10u ", 319 seq_printf(p, "%10u ",
319 per_cpu(irq_stat,j).irq_thermal_count); 320 per_cpu(irq_stat,j).irq_thermal_count);
320 seq_printf(p, " Thermal event interrupts\n"); 321 seq_printf(p, " Thermal event interrupts\n");
322#endif
323#ifdef CONFIG_X86_LOCAL_APIC
321 seq_printf(p, "SPU: "); 324 seq_printf(p, "SPU: ");
322 for_each_online_cpu(j) 325 for_each_online_cpu(j)
323 seq_printf(p, "%10u ", 326 seq_printf(p, "%10u ",
324 per_cpu(irq_stat,j).irq_spurious_count); 327 per_cpu(irq_stat,j).irq_spurious_count);
325 seq_printf(p, " Spurious interrupts\n"); 328 seq_printf(p, " Spurious interrupts\n");
329#endif
326 seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count)); 330 seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count));
327#if defined(CONFIG_X86_IO_APIC) 331#if defined(CONFIG_X86_IO_APIC)
328 seq_printf(p, "MIS: %10u\n", atomic_read(&irq_mis_count)); 332 seq_printf(p, "MIS: %10u\n", atomic_read(&irq_mis_count));
@@ -331,6 +335,40 @@ skip:
331 return 0; 335 return 0;
332} 336}
333 337
338/*
339 * /proc/stat helpers
340 */
341u64 arch_irq_stat_cpu(unsigned int cpu)
342{
343 u64 sum = nmi_count(cpu);
344
345#ifdef CONFIG_X86_LOCAL_APIC
346 sum += per_cpu(irq_stat, cpu).apic_timer_irqs;
347#endif
348#ifdef CONFIG_SMP
349 sum += per_cpu(irq_stat, cpu).irq_resched_count;
350 sum += per_cpu(irq_stat, cpu).irq_call_count;
351 sum += per_cpu(irq_stat, cpu).irq_tlb_count;
352#endif
353#ifdef CONFIG_X86_MCE
354 sum += per_cpu(irq_stat, cpu).irq_thermal_count;
355#endif
356#ifdef CONFIG_X86_LOCAL_APIC
357 sum += per_cpu(irq_stat, cpu).irq_spurious_count;
358#endif
359 return sum;
360}
361
362u64 arch_irq_stat(void)
363{
364 u64 sum = atomic_read(&irq_err_count);
365
366#ifdef CONFIG_X86_IO_APIC
367 sum += atomic_read(&irq_mis_count);
368#endif
369 return sum;
370}
371
334#ifdef CONFIG_HOTPLUG_CPU 372#ifdef CONFIG_HOTPLUG_CPU
335#include <mach_apic.h> 373#include <mach_apic.h>
336 374
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
index 3aac15466a91..1f78b238d8d2 100644
--- a/arch/x86/kernel/irq_64.c
+++ b/arch/x86/kernel/irq_64.c
@@ -135,6 +135,7 @@ skip:
135 seq_printf(p, "%10u ", cpu_pda(j)->irq_tlb_count); 135 seq_printf(p, "%10u ", cpu_pda(j)->irq_tlb_count);
136 seq_printf(p, " TLB shootdowns\n"); 136 seq_printf(p, " TLB shootdowns\n");
137#endif 137#endif
138#ifdef CONFIG_X86_MCE
138 seq_printf(p, "TRM: "); 139 seq_printf(p, "TRM: ");
139 for_each_online_cpu(j) 140 for_each_online_cpu(j)
140 seq_printf(p, "%10u ", cpu_pda(j)->irq_thermal_count); 141 seq_printf(p, "%10u ", cpu_pda(j)->irq_thermal_count);
@@ -143,6 +144,7 @@ skip:
143 for_each_online_cpu(j) 144 for_each_online_cpu(j)
144 seq_printf(p, "%10u ", cpu_pda(j)->irq_threshold_count); 145 seq_printf(p, "%10u ", cpu_pda(j)->irq_threshold_count);
145 seq_printf(p, " Threshold APIC interrupts\n"); 146 seq_printf(p, " Threshold APIC interrupts\n");
147#endif
146 seq_printf(p, "SPU: "); 148 seq_printf(p, "SPU: ");
147 for_each_online_cpu(j) 149 for_each_online_cpu(j)
148 seq_printf(p, "%10u ", cpu_pda(j)->irq_spurious_count); 150 seq_printf(p, "%10u ", cpu_pda(j)->irq_spurious_count);
@@ -153,6 +155,32 @@ skip:
153} 155}
154 156
155/* 157/*
158 * /proc/stat helpers
159 */
160u64 arch_irq_stat_cpu(unsigned int cpu)
161{
162 u64 sum = cpu_pda(cpu)->__nmi_count;
163
164 sum += cpu_pda(cpu)->apic_timer_irqs;
165#ifdef CONFIG_SMP
166 sum += cpu_pda(cpu)->irq_resched_count;
167 sum += cpu_pda(cpu)->irq_call_count;
168 sum += cpu_pda(cpu)->irq_tlb_count;
169#endif
170#ifdef CONFIG_X86_MCE
171 sum += cpu_pda(cpu)->irq_thermal_count;
172 sum += cpu_pda(cpu)->irq_threshold_count;
173#endif
174 sum += cpu_pda(cpu)->irq_spurious_count;
175 return sum;
176}
177
178u64 arch_irq_stat(void)
179{
180 return atomic_read(&irq_err_count);
181}
182
183/*
156 * do_IRQ handles all normal device IRQ's (the special 184 * do_IRQ handles all normal device IRQ's (the special
157 * SMP cross-CPU interrupts have their own specific 185 * SMP cross-CPU interrupts have their own specific
158 * handlers). 186 * handlers).
diff --git a/arch/x86/kernel/irqinit_32.c b/arch/x86/kernel/irqinit_32.c
new file mode 100644
index 000000000000..d66914287ee1
--- /dev/null
+++ b/arch/x86/kernel/irqinit_32.c
@@ -0,0 +1,114 @@
1#include <linux/errno.h>
2#include <linux/signal.h>
3#include <linux/sched.h>
4#include <linux/ioport.h>
5#include <linux/interrupt.h>
6#include <linux/slab.h>
7#include <linux/random.h>
8#include <linux/init.h>
9#include <linux/kernel_stat.h>
10#include <linux/sysdev.h>
11#include <linux/bitops.h>
12
13#include <asm/atomic.h>
14#include <asm/system.h>
15#include <asm/io.h>
16#include <asm/timer.h>
17#include <asm/pgtable.h>
18#include <asm/delay.h>
19#include <asm/desc.h>
20#include <asm/apic.h>
21#include <asm/arch_hooks.h>
22#include <asm/i8259.h>
23
24
25
26/*
27 * Note that on a 486, we don't want to do a SIGFPE on an irq13
28 * as the irq is unreliable, and exception 16 works correctly
29 * (ie as explained in the intel literature). On a 386, you
30 * can't use exception 16 due to bad IBM design, so we have to
31 * rely on the less exact irq13.
32 *
33 * Careful.. Not only is IRQ13 unreliable, but it is also
34 * leads to races. IBM designers who came up with it should
35 * be shot.
36 */
37
38
39static irqreturn_t math_error_irq(int cpl, void *dev_id)
40{
41 extern void math_error(void __user *);
42 outb(0,0xF0);
43 if (ignore_fpu_irq || !boot_cpu_data.hard_math)
44 return IRQ_NONE;
45 math_error((void __user *)get_irq_regs()->ip);
46 return IRQ_HANDLED;
47}
48
49/*
50 * New motherboards sometimes make IRQ 13 be a PCI interrupt,
51 * so allow interrupt sharing.
52 */
53static struct irqaction fpu_irq = {
54 .handler = math_error_irq,
55 .mask = CPU_MASK_NONE,
56 .name = "fpu",
57};
58
59void __init init_ISA_irqs (void)
60{
61 int i;
62
63#ifdef CONFIG_X86_LOCAL_APIC
64 init_bsp_APIC();
65#endif
66 init_8259A(0);
67
68 /*
69 * 16 old-style INTA-cycle interrupts:
70 */
71 for (i = 0; i < 16; i++) {
72 set_irq_chip_and_handler_name(i, &i8259A_chip,
73 handle_level_irq, "XT");
74 }
75}
76
77/* Overridden in paravirt.c */
78void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ")));
79
80void __init native_init_IRQ(void)
81{
82 int i;
83
84 /* all the set up before the call gates are initialised */
85 pre_intr_init_hook();
86
87 /*
88 * Cover the whole vector space, no vector can escape
89 * us. (some of these will be overridden and become
90 * 'special' SMP interrupts)
91 */
92 for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {
93 int vector = FIRST_EXTERNAL_VECTOR + i;
94 if (i >= NR_IRQS)
95 break;
96 /* SYSCALL_VECTOR was reserved in trap_init. */
97 if (!test_bit(vector, used_vectors))
98 set_intr_gate(vector, interrupt[i]);
99 }
100
101 /* setup after call gates are initialised (usually add in
102 * the architecture specific gates)
103 */
104 intr_init_hook();
105
106 /*
107 * External FPU? Set up irq13 if so, for
108 * original braindamaged IBM FERR coupling.
109 */
110 if (boot_cpu_data.hard_math && !cpu_has_fpu)
111 setup_irq(FPU_IRQ, &fpu_irq);
112
113 irq_ctx_init(smp_processor_id());
114}
diff --git a/arch/x86/kernel/irqinit_64.c b/arch/x86/kernel/irqinit_64.c
new file mode 100644
index 000000000000..64bc0f14285f
--- /dev/null
+++ b/arch/x86/kernel/irqinit_64.c
@@ -0,0 +1,203 @@
1#include <linux/linkage.h>
2#include <linux/errno.h>
3#include <linux/signal.h>
4#include <linux/sched.h>
5#include <linux/ioport.h>
6#include <linux/interrupt.h>
7#include <linux/timex.h>
8#include <linux/slab.h>
9#include <linux/random.h>
10#include <linux/init.h>
11#include <linux/kernel_stat.h>
12#include <linux/sysdev.h>
13#include <linux/bitops.h>
14
15#include <asm/acpi.h>
16#include <asm/atomic.h>
17#include <asm/system.h>
18#include <asm/io.h>
19#include <asm/hw_irq.h>
20#include <asm/pgtable.h>
21#include <asm/delay.h>
22#include <asm/desc.h>
23#include <asm/apic.h>
24#include <asm/i8259.h>
25
26/*
27 * Common place to define all x86 IRQ vectors
28 *
29 * This builds up the IRQ handler stubs using some ugly macros in irq.h
30 *
31 * These macros create the low-level assembly IRQ routines that save
32 * register context and call do_IRQ(). do_IRQ() then does all the
33 * operations that are needed to keep the AT (or SMP IOAPIC)
34 * interrupt-controller happy.
35 */
36
37#define BI(x,y) \
38 BUILD_IRQ(x##y)
39
40#define BUILD_16_IRQS(x) \
41 BI(x,0) BI(x,1) BI(x,2) BI(x,3) \
42 BI(x,4) BI(x,5) BI(x,6) BI(x,7) \
43 BI(x,8) BI(x,9) BI(x,a) BI(x,b) \
44 BI(x,c) BI(x,d) BI(x,e) BI(x,f)
45
46/*
47 * ISA PIC or low IO-APIC triggered (INTA-cycle or APIC) interrupts:
48 * (these are usually mapped to vectors 0x30-0x3f)
49 */
50
51/*
52 * The IO-APIC gives us many more interrupt sources. Most of these
53 * are unused but an SMP system is supposed to have enough memory ...
54 * sometimes (mostly wrt. hw bugs) we get corrupted vectors all
55 * across the spectrum, so we really want to be prepared to get all
56 * of these. Plus, more powerful systems might have more than 64
57 * IO-APIC registers.
58 *
59 * (these are usually mapped into the 0x30-0xff vector range)
60 */
61 BUILD_16_IRQS(0x2) BUILD_16_IRQS(0x3)
62BUILD_16_IRQS(0x4) BUILD_16_IRQS(0x5) BUILD_16_IRQS(0x6) BUILD_16_IRQS(0x7)
63BUILD_16_IRQS(0x8) BUILD_16_IRQS(0x9) BUILD_16_IRQS(0xa) BUILD_16_IRQS(0xb)
64BUILD_16_IRQS(0xc) BUILD_16_IRQS(0xd) BUILD_16_IRQS(0xe) BUILD_16_IRQS(0xf)
65
66#undef BUILD_16_IRQS
67#undef BI
68
69
70#define IRQ(x,y) \
71 IRQ##x##y##_interrupt
72
73#define IRQLIST_16(x) \
74 IRQ(x,0), IRQ(x,1), IRQ(x,2), IRQ(x,3), \
75 IRQ(x,4), IRQ(x,5), IRQ(x,6), IRQ(x,7), \
76 IRQ(x,8), IRQ(x,9), IRQ(x,a), IRQ(x,b), \
77 IRQ(x,c), IRQ(x,d), IRQ(x,e), IRQ(x,f)
78
79/* for the irq vectors */
80static void (*__initdata interrupt[NR_VECTORS - FIRST_EXTERNAL_VECTOR])(void) = {
81 IRQLIST_16(0x2), IRQLIST_16(0x3),
82 IRQLIST_16(0x4), IRQLIST_16(0x5), IRQLIST_16(0x6), IRQLIST_16(0x7),
83 IRQLIST_16(0x8), IRQLIST_16(0x9), IRQLIST_16(0xa), IRQLIST_16(0xb),
84 IRQLIST_16(0xc), IRQLIST_16(0xd), IRQLIST_16(0xe), IRQLIST_16(0xf)
85};
86
87#undef IRQ
88#undef IRQLIST_16
89
90
91
92
93/*
94 * IRQ2 is cascade interrupt to second interrupt controller
95 */
96
97static struct irqaction irq2 = {
98 .handler = no_action,
99 .mask = CPU_MASK_NONE,
100 .name = "cascade",
101};
102DEFINE_PER_CPU(vector_irq_t, vector_irq) = {
103 [0 ... IRQ0_VECTOR - 1] = -1,
104 [IRQ0_VECTOR] = 0,
105 [IRQ1_VECTOR] = 1,
106 [IRQ2_VECTOR] = 2,
107 [IRQ3_VECTOR] = 3,
108 [IRQ4_VECTOR] = 4,
109 [IRQ5_VECTOR] = 5,
110 [IRQ6_VECTOR] = 6,
111 [IRQ7_VECTOR] = 7,
112 [IRQ8_VECTOR] = 8,
113 [IRQ9_VECTOR] = 9,
114 [IRQ10_VECTOR] = 10,
115 [IRQ11_VECTOR] = 11,
116 [IRQ12_VECTOR] = 12,
117 [IRQ13_VECTOR] = 13,
118 [IRQ14_VECTOR] = 14,
119 [IRQ15_VECTOR] = 15,
120 [IRQ15_VECTOR + 1 ... NR_VECTORS - 1] = -1
121};
122
123static void __init init_ISA_irqs (void)
124{
125 int i;
126
127 init_bsp_APIC();
128 init_8259A(0);
129
130 for (i = 0; i < NR_IRQS; i++) {
131 irq_desc[i].status = IRQ_DISABLED;
132 irq_desc[i].action = NULL;
133 irq_desc[i].depth = 1;
134
135 if (i < 16) {
136 /*
137 * 16 old-style INTA-cycle interrupts:
138 */
139 set_irq_chip_and_handler_name(i, &i8259A_chip,
140 handle_level_irq, "XT");
141 } else {
142 /*
143 * 'high' PCI IRQs filled in on demand
144 */
145 irq_desc[i].chip = &no_irq_chip;
146 }
147 }
148}
149
150void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ")));
151
152void __init native_init_IRQ(void)
153{
154 int i;
155
156 init_ISA_irqs();
157 /*
158 * Cover the whole vector space, no vector can escape
159 * us. (some of these will be overridden and become
160 * 'special' SMP interrupts)
161 */
162 for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {
163 int vector = FIRST_EXTERNAL_VECTOR + i;
164 if (vector != IA32_SYSCALL_VECTOR)
165 set_intr_gate(vector, interrupt[i]);
166 }
167
168#ifdef CONFIG_SMP
169 /*
170 * The reschedule interrupt is a CPU-to-CPU reschedule-helper
171 * IPI, driven by wakeup.
172 */
173 set_intr_gate(RESCHEDULE_VECTOR, reschedule_interrupt);
174
175 /* IPIs for invalidation */
176 set_intr_gate(INVALIDATE_TLB_VECTOR_START+0, invalidate_interrupt0);
177 set_intr_gate(INVALIDATE_TLB_VECTOR_START+1, invalidate_interrupt1);
178 set_intr_gate(INVALIDATE_TLB_VECTOR_START+2, invalidate_interrupt2);
179 set_intr_gate(INVALIDATE_TLB_VECTOR_START+3, invalidate_interrupt3);
180 set_intr_gate(INVALIDATE_TLB_VECTOR_START+4, invalidate_interrupt4);
181 set_intr_gate(INVALIDATE_TLB_VECTOR_START+5, invalidate_interrupt5);
182 set_intr_gate(INVALIDATE_TLB_VECTOR_START+6, invalidate_interrupt6);
183 set_intr_gate(INVALIDATE_TLB_VECTOR_START+7, invalidate_interrupt7);
184
185 /* IPI for generic function call */
186 set_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt);
187
188 /* Low priority IPI to cleanup after moving an irq */
189 set_intr_gate(IRQ_MOVE_CLEANUP_VECTOR, irq_move_cleanup_interrupt);
190#endif
191 set_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt);
192 set_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt);
193
194 /* self generated IPI for local APIC timer */
195 set_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt);
196
197 /* IPI vectors for APIC spurious and error interrupts */
198 set_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt);
199 set_intr_gate(ERROR_APIC_VECTOR, error_interrupt);
200
201 if (!acpi_ioapic)
202 setup_irq(2, &irq2);
203}
diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
index 08a30986d472..87edf1ceb1df 100644
--- a/arch/x86/kernel/kvmclock.c
+++ b/arch/x86/kernel/kvmclock.c
@@ -18,6 +18,7 @@
18 18
19#include <linux/clocksource.h> 19#include <linux/clocksource.h>
20#include <linux/kvm_para.h> 20#include <linux/kvm_para.h>
21#include <asm/pvclock.h>
21#include <asm/arch_hooks.h> 22#include <asm/arch_hooks.h>
22#include <asm/msr.h> 23#include <asm/msr.h>
23#include <asm/apic.h> 24#include <asm/apic.h>
@@ -36,18 +37,9 @@ static int parse_no_kvmclock(char *arg)
36early_param("no-kvmclock", parse_no_kvmclock); 37early_param("no-kvmclock", parse_no_kvmclock);
37 38
38/* The hypervisor will put information about time periodically here */ 39/* The hypervisor will put information about time periodically here */
39static DEFINE_PER_CPU_SHARED_ALIGNED(struct kvm_vcpu_time_info, hv_clock); 40static DEFINE_PER_CPU_SHARED_ALIGNED(struct pvclock_vcpu_time_info, hv_clock);
40#define get_clock(cpu, field) per_cpu(hv_clock, cpu).field 41static struct pvclock_wall_clock wall_clock;
41 42
42static inline u64 kvm_get_delta(u64 last_tsc)
43{
44 int cpu = smp_processor_id();
45 u64 delta = native_read_tsc() - last_tsc;
46 return (delta * get_clock(cpu, tsc_to_system_mul)) >> KVM_SCALE;
47}
48
49static struct kvm_wall_clock wall_clock;
50static cycle_t kvm_clock_read(void);
51/* 43/*
52 * The wallclock is the time of day when we booted. Since then, some time may 44 * The wallclock is the time of day when we booted. Since then, some time may
53 * have elapsed since the hypervisor wrote the data. So we try to account for 45 * have elapsed since the hypervisor wrote the data. So we try to account for
@@ -55,64 +47,37 @@ static cycle_t kvm_clock_read(void);
55 */ 47 */
56static unsigned long kvm_get_wallclock(void) 48static unsigned long kvm_get_wallclock(void)
57{ 49{
58 u32 wc_sec, wc_nsec; 50 struct pvclock_vcpu_time_info *vcpu_time;
59 u64 delta;
60 struct timespec ts; 51 struct timespec ts;
61 int version, nsec;
62 int low, high; 52 int low, high;
63 53
64 low = (int)__pa(&wall_clock); 54 low = (int)__pa(&wall_clock);
65 high = ((u64)__pa(&wall_clock) >> 32); 55 high = ((u64)__pa(&wall_clock) >> 32);
56 native_write_msr(MSR_KVM_WALL_CLOCK, low, high);
66 57
67 delta = kvm_clock_read(); 58 vcpu_time = &get_cpu_var(hv_clock);
59 pvclock_read_wallclock(&wall_clock, vcpu_time, &ts);
60 put_cpu_var(hv_clock);
68 61
69 native_write_msr(MSR_KVM_WALL_CLOCK, low, high); 62 return ts.tv_sec;
70 do {
71 version = wall_clock.wc_version;
72 rmb();
73 wc_sec = wall_clock.wc_sec;
74 wc_nsec = wall_clock.wc_nsec;
75 rmb();
76 } while ((wall_clock.wc_version != version) || (version & 1));
77
78 delta = kvm_clock_read() - delta;
79 delta += wc_nsec;
80 nsec = do_div(delta, NSEC_PER_SEC);
81 set_normalized_timespec(&ts, wc_sec + delta, nsec);
82 /*
83 * Of all mechanisms of time adjustment I've tested, this one
84 * was the champion!
85 */
86 return ts.tv_sec + 1;
87} 63}
88 64
89static int kvm_set_wallclock(unsigned long now) 65static int kvm_set_wallclock(unsigned long now)
90{ 66{
91 return 0; 67 return -1;
92} 68}
93 69
94/*
95 * This is our read_clock function. The host puts an tsc timestamp each time
96 * it updates a new time. Without the tsc adjustment, we can have a situation
97 * in which a vcpu starts to run earlier (smaller system_time), but probes
98 * time later (compared to another vcpu), leading to backwards time
99 */
100static cycle_t kvm_clock_read(void) 70static cycle_t kvm_clock_read(void)
101{ 71{
102 u64 last_tsc, now; 72 struct pvclock_vcpu_time_info *src;
103 int cpu; 73 cycle_t ret;
104 74
105 preempt_disable(); 75 src = &get_cpu_var(hv_clock);
106 cpu = smp_processor_id(); 76 ret = pvclock_clocksource_read(src);
107 77 put_cpu_var(hv_clock);
108 last_tsc = get_clock(cpu, tsc_timestamp); 78 return ret;
109 now = get_clock(cpu, system_time);
110
111 now += kvm_get_delta(last_tsc);
112 preempt_enable();
113
114 return now;
115} 79}
80
116static struct clocksource kvm_clock = { 81static struct clocksource kvm_clock = {
117 .name = "kvm-clock", 82 .name = "kvm-clock",
118 .read = kvm_clock_read, 83 .read = kvm_clock_read,
@@ -123,13 +88,14 @@ static struct clocksource kvm_clock = {
123 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 88 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
124}; 89};
125 90
126static int kvm_register_clock(void) 91static int kvm_register_clock(char *txt)
127{ 92{
128 int cpu = smp_processor_id(); 93 int cpu = smp_processor_id();
129 int low, high; 94 int low, high;
130 low = (int)__pa(&per_cpu(hv_clock, cpu)) | 1; 95 low = (int)__pa(&per_cpu(hv_clock, cpu)) | 1;
131 high = ((u64)__pa(&per_cpu(hv_clock, cpu)) >> 32); 96 high = ((u64)__pa(&per_cpu(hv_clock, cpu)) >> 32);
132 97 printk(KERN_INFO "kvm-clock: cpu %d, msr %x:%x, %s\n",
98 cpu, high, low, txt);
133 return native_write_msr_safe(MSR_KVM_SYSTEM_TIME, low, high); 99 return native_write_msr_safe(MSR_KVM_SYSTEM_TIME, low, high);
134} 100}
135 101
@@ -140,12 +106,20 @@ static void kvm_setup_secondary_clock(void)
140 * Now that the first cpu already had this clocksource initialized, 106 * Now that the first cpu already had this clocksource initialized,
141 * we shouldn't fail. 107 * we shouldn't fail.
142 */ 108 */
143 WARN_ON(kvm_register_clock()); 109 WARN_ON(kvm_register_clock("secondary cpu clock"));
144 /* ok, done with our trickery, call native */ 110 /* ok, done with our trickery, call native */
145 setup_secondary_APIC_clock(); 111 setup_secondary_APIC_clock();
146} 112}
147#endif 113#endif
148 114
115#ifdef CONFIG_SMP
116void __init kvm_smp_prepare_boot_cpu(void)
117{
118 WARN_ON(kvm_register_clock("primary cpu clock"));
119 native_smp_prepare_boot_cpu();
120}
121#endif
122
149/* 123/*
150 * After the clock is registered, the host will keep writing to the 124 * After the clock is registered, the host will keep writing to the
151 * registered memory location. If the guest happens to shutdown, this memory 125 * registered memory location. If the guest happens to shutdown, this memory
@@ -174,7 +148,7 @@ void __init kvmclock_init(void)
174 return; 148 return;
175 149
176 if (kvmclock && kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE)) { 150 if (kvmclock && kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE)) {
177 if (kvm_register_clock()) 151 if (kvm_register_clock("boot clock"))
178 return; 152 return;
179 pv_time_ops.get_wallclock = kvm_get_wallclock; 153 pv_time_ops.get_wallclock = kvm_get_wallclock;
180 pv_time_ops.set_wallclock = kvm_set_wallclock; 154 pv_time_ops.set_wallclock = kvm_set_wallclock;
@@ -182,6 +156,9 @@ void __init kvmclock_init(void)
182#ifdef CONFIG_X86_LOCAL_APIC 156#ifdef CONFIG_X86_LOCAL_APIC
183 pv_apic_ops.setup_secondary_clock = kvm_setup_secondary_clock; 157 pv_apic_ops.setup_secondary_clock = kvm_setup_secondary_clock;
184#endif 158#endif
159#ifdef CONFIG_SMP
160 smp_ops.smp_prepare_boot_cpu = kvm_smp_prepare_boot_cpu;
161#endif
185 machine_ops.shutdown = kvm_shutdown; 162 machine_ops.shutdown = kvm_shutdown;
186#ifdef CONFIG_KEXEC 163#ifdef CONFIG_KEXEC
187 machine_ops.crash_shutdown = kvm_crash_shutdown; 164 machine_ops.crash_shutdown = kvm_crash_shutdown;
diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
index 0224c3637c73..21f2bae98c15 100644
--- a/arch/x86/kernel/ldt.c
+++ b/arch/x86/kernel/ldt.c
@@ -20,9 +20,9 @@
20#include <asm/mmu_context.h> 20#include <asm/mmu_context.h>
21 21
22#ifdef CONFIG_SMP 22#ifdef CONFIG_SMP
23static void flush_ldt(void *null) 23static void flush_ldt(void *current_mm)
24{ 24{
25 if (current->active_mm) 25 if (current->active_mm == current_mm)
26 load_LDT(&current->active_mm->context); 26 load_LDT(&current->active_mm->context);
27} 27}
28#endif 28#endif
@@ -68,7 +68,7 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload)
68 load_LDT(pc); 68 load_LDT(pc);
69 mask = cpumask_of_cpu(smp_processor_id()); 69 mask = cpumask_of_cpu(smp_processor_id());
70 if (!cpus_equal(current->mm->cpu_vm_mask, mask)) 70 if (!cpus_equal(current->mm->cpu_vm_mask, mask))
71 smp_call_function(flush_ldt, NULL, 1, 1); 71 smp_call_function(flush_ldt, current->mm, 1, 1);
72 preempt_enable(); 72 preempt_enable();
73#else 73#else
74 load_LDT(pc); 74 load_LDT(pc);
diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
index d0b234c9fc31..f4960171bc66 100644
--- a/arch/x86/kernel/machine_kexec_32.c
+++ b/arch/x86/kernel/machine_kexec_32.c
@@ -39,7 +39,7 @@ static void set_idt(void *newidt, __u16 limit)
39 curidt.address = (unsigned long)newidt; 39 curidt.address = (unsigned long)newidt;
40 40
41 load_idt(&curidt); 41 load_idt(&curidt);
42}; 42}
43 43
44 44
45static void set_gdt(void *newgdt, __u16 limit) 45static void set_gdt(void *newgdt, __u16 limit)
@@ -51,7 +51,7 @@ static void set_gdt(void *newgdt, __u16 limit)
51 curgdt.address = (unsigned long)newgdt; 51 curgdt.address = (unsigned long)newgdt;
52 52
53 load_gdt(&curgdt); 53 load_gdt(&curgdt);
54}; 54}
55 55
56static void load_segments(void) 56static void load_segments(void)
57{ 57{
diff --git a/arch/x86/kernel/microcode.c b/arch/x86/kernel/microcode.c
index 69729e38b78a..9758fea87c5b 100644
--- a/arch/x86/kernel/microcode.c
+++ b/arch/x86/kernel/microcode.c
@@ -5,13 +5,14 @@
5 * 2006 Shaohua Li <shaohua.li@intel.com> 5 * 2006 Shaohua Li <shaohua.li@intel.com>
6 * 6 *
7 * This driver allows to upgrade microcode on Intel processors 7 * This driver allows to upgrade microcode on Intel processors
8 * belonging to IA-32 family - PentiumPro, Pentium II, 8 * belonging to IA-32 family - PentiumPro, Pentium II,
9 * Pentium III, Xeon, Pentium 4, etc. 9 * Pentium III, Xeon, Pentium 4, etc.
10 * 10 *
11 * Reference: Section 8.10 of Volume III, Intel Pentium 4 Manual, 11 * Reference: Section 8.11 of Volume 3a, IA-32 Intel? Architecture
12 * Order Number 245472 or free download from: 12 * Software Developer's Manual
13 * 13 * Order Number 253668 or free download from:
14 * http://developer.intel.com/design/pentium4/manuals/245472.htm 14 *
15 * http://developer.intel.com/design/pentium4/manuals/253668.htm
15 * 16 *
16 * For more information, go to http://www.urbanmyth.org/microcode 17 * For more information, go to http://www.urbanmyth.org/microcode
17 * 18 *
@@ -58,12 +59,12 @@
58 * nature of implementation. 59 * nature of implementation.
59 * 1.11 22 Mar 2002 Tigran Aivazian <tigran@veritas.com> 60 * 1.11 22 Mar 2002 Tigran Aivazian <tigran@veritas.com>
60 * Fix the panic when writing zero-length microcode chunk. 61 * Fix the panic when writing zero-length microcode chunk.
61 * 1.12 29 Sep 2003 Nitin Kamble <nitin.a.kamble@intel.com>, 62 * 1.12 29 Sep 2003 Nitin Kamble <nitin.a.kamble@intel.com>,
62 * Jun Nakajima <jun.nakajima@intel.com> 63 * Jun Nakajima <jun.nakajima@intel.com>
63 * Support for the microcode updates in the new format. 64 * Support for the microcode updates in the new format.
64 * 1.13 10 Oct 2003 Tigran Aivazian <tigran@veritas.com> 65 * 1.13 10 Oct 2003 Tigran Aivazian <tigran@veritas.com>
65 * Removed ->read() method and obsoleted MICROCODE_IOCFREE ioctl 66 * Removed ->read() method and obsoleted MICROCODE_IOCFREE ioctl
66 * because we no longer hold a copy of applied microcode 67 * because we no longer hold a copy of applied microcode
67 * in kernel memory. 68 * in kernel memory.
68 * 1.14 25 Jun 2004 Tigran Aivazian <tigran@veritas.com> 69 * 1.14 25 Jun 2004 Tigran Aivazian <tigran@veritas.com>
69 * Fix sigmatch() macro to handle old CPUs with pf == 0. 70 * Fix sigmatch() macro to handle old CPUs with pf == 0.
@@ -320,11 +321,11 @@ static void apply_microcode(int cpu)
320 return; 321 return;
321 322
322 /* serialize access to the physical write to MSR 0x79 */ 323 /* serialize access to the physical write to MSR 0x79 */
323 spin_lock_irqsave(&microcode_update_lock, flags); 324 spin_lock_irqsave(&microcode_update_lock, flags);
324 325
325 /* write microcode via MSR 0x79 */ 326 /* write microcode via MSR 0x79 */
326 wrmsr(MSR_IA32_UCODE_WRITE, 327 wrmsr(MSR_IA32_UCODE_WRITE,
327 (unsigned long) uci->mc->bits, 328 (unsigned long) uci->mc->bits,
328 (unsigned long) uci->mc->bits >> 16 >> 16); 329 (unsigned long) uci->mc->bits >> 16 >> 16);
329 wrmsr(MSR_IA32_UCODE_REV, 0, 0); 330 wrmsr(MSR_IA32_UCODE_REV, 0, 0);
330 331
@@ -341,7 +342,7 @@ static void apply_microcode(int cpu)
341 return; 342 return;
342 } 343 }
343 printk(KERN_INFO "microcode: CPU%d updated from revision " 344 printk(KERN_INFO "microcode: CPU%d updated from revision "
344 "0x%x to 0x%x, date = %08x \n", 345 "0x%x to 0x%x, date = %08x \n",
345 cpu_num, uci->rev, val[1], uci->mc->hdr.date); 346 cpu_num, uci->rev, val[1], uci->mc->hdr.date);
346 uci->rev = val[1]; 347 uci->rev = val[1];
347} 348}
@@ -534,7 +535,7 @@ static int cpu_request_microcode(int cpu)
534 c->x86, c->x86_model, c->x86_mask); 535 c->x86, c->x86_model, c->x86_mask);
535 error = request_firmware(&firmware, name, &microcode_pdev->dev); 536 error = request_firmware(&firmware, name, &microcode_pdev->dev);
536 if (error) { 537 if (error) {
537 pr_debug("microcode: ucode data file %s load failed\n", name); 538 pr_debug("microcode: data file %s load failed\n", name);
538 return error; 539 return error;
539 } 540 }
540 buf = firmware->data; 541 buf = firmware->data;
@@ -805,6 +806,9 @@ static int __init microcode_init (void)
805{ 806{
806 int error; 807 int error;
807 808
809 printk(KERN_INFO
810 "IA-32 Microcode Update Driver: v" MICROCODE_VERSION " <tigran@aivazian.fsnet.co.uk>\n");
811
808 error = microcode_dev_init(); 812 error = microcode_dev_init();
809 if (error) 813 if (error)
810 return error; 814 return error;
@@ -825,9 +829,6 @@ static int __init microcode_init (void)
825 } 829 }
826 830
827 register_hotcpu_notifier(&mc_cpu_notifier); 831 register_hotcpu_notifier(&mc_cpu_notifier);
828
829 printk(KERN_INFO
830 "IA-32 Microcode Update Driver: v" MICROCODE_VERSION " <tigran@aivazian.fsnet.co.uk>\n");
831 return 0; 832 return 0;
832} 833}
833 834
diff --git a/arch/x86/kernel/mmconf-fam10h_64.c b/arch/x86/kernel/mmconf-fam10h_64.c
index edc5fbfe85c0..fdfdc550b366 100644
--- a/arch/x86/kernel/mmconf-fam10h_64.c
+++ b/arch/x86/kernel/mmconf-fam10h_64.c
@@ -12,6 +12,7 @@
12#include <asm/io.h> 12#include <asm/io.h>
13#include <asm/msr.h> 13#include <asm/msr.h>
14#include <asm/acpi.h> 14#include <asm/acpi.h>
15#include <asm/mmconfig.h>
15 16
16#include "../pci/pci.h" 17#include "../pci/pci.h"
17 18
diff --git a/arch/x86/kernel/nmi_32.c b/arch/x86/kernel/nmi_32.c
index 84160f74eeb0..6580dae46277 100644
--- a/arch/x86/kernel/nmi_32.c
+++ b/arch/x86/kernel/nmi_32.c
@@ -24,8 +24,11 @@
24#include <linux/kdebug.h> 24#include <linux/kdebug.h>
25#include <linux/slab.h> 25#include <linux/slab.h>
26 26
27#include <asm/i8259.h>
28#include <asm/io_apic.h>
27#include <asm/smp.h> 29#include <asm/smp.h>
28#include <asm/nmi.h> 30#include <asm/nmi.h>
31#include <asm/timer.h>
29 32
30#include "mach_traps.h" 33#include "mach_traps.h"
31 34
@@ -81,7 +84,7 @@ int __init check_nmi_watchdog(void)
81 84
82 prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL); 85 prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL);
83 if (!prev_nmi_count) 86 if (!prev_nmi_count)
84 return -1; 87 goto error;
85 88
86 printk(KERN_INFO "Testing NMI watchdog ... "); 89 printk(KERN_INFO "Testing NMI watchdog ... ");
87 90
@@ -118,7 +121,7 @@ int __init check_nmi_watchdog(void)
118 if (!atomic_read(&nmi_active)) { 121 if (!atomic_read(&nmi_active)) {
119 kfree(prev_nmi_count); 122 kfree(prev_nmi_count);
120 atomic_set(&nmi_active, -1); 123 atomic_set(&nmi_active, -1);
121 return -1; 124 goto error;
122 } 125 }
123 printk("OK.\n"); 126 printk("OK.\n");
124 127
@@ -129,6 +132,12 @@ int __init check_nmi_watchdog(void)
129 132
130 kfree(prev_nmi_count); 133 kfree(prev_nmi_count);
131 return 0; 134 return 0;
135error:
136 if (nmi_watchdog == NMI_IO_APIC && !timer_through_8259)
137 disable_8259A_irq(0);
138 timer_ack = 0;
139
140 return -1;
132} 141}
133 142
134static int __init setup_nmi_watchdog(char *str) 143static int __init setup_nmi_watchdog(char *str)
diff --git a/arch/x86/kernel/nmi_64.c b/arch/x86/kernel/nmi_64.c
index 5a29ded994fa..0060e44e8989 100644
--- a/arch/x86/kernel/nmi_64.c
+++ b/arch/x86/kernel/nmi_64.c
@@ -21,6 +21,8 @@
21#include <linux/cpumask.h> 21#include <linux/cpumask.h>
22#include <linux/kdebug.h> 22#include <linux/kdebug.h>
23 23
24#include <asm/i8259.h>
25#include <asm/io_apic.h>
24#include <asm/smp.h> 26#include <asm/smp.h>
25#include <asm/nmi.h> 27#include <asm/nmi.h>
26#include <asm/proto.h> 28#include <asm/proto.h>
@@ -90,7 +92,7 @@ int __init check_nmi_watchdog(void)
90 92
91 prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL); 93 prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL);
92 if (!prev_nmi_count) 94 if (!prev_nmi_count)
93 return -1; 95 goto error;
94 96
95 printk(KERN_INFO "Testing NMI watchdog ... "); 97 printk(KERN_INFO "Testing NMI watchdog ... ");
96 98
@@ -121,7 +123,7 @@ int __init check_nmi_watchdog(void)
121 if (!atomic_read(&nmi_active)) { 123 if (!atomic_read(&nmi_active)) {
122 kfree(prev_nmi_count); 124 kfree(prev_nmi_count);
123 atomic_set(&nmi_active, -1); 125 atomic_set(&nmi_active, -1);
124 return -1; 126 goto error;
125 } 127 }
126 printk("OK.\n"); 128 printk("OK.\n");
127 129
@@ -132,6 +134,11 @@ int __init check_nmi_watchdog(void)
132 134
133 kfree(prev_nmi_count); 135 kfree(prev_nmi_count);
134 return 0; 136 return 0;
137error:
138 if (nmi_watchdog == NMI_IO_APIC && !timer_through_8259)
139 disable_8259A_irq(0);
140
141 return -1;
135} 142}
136 143
137static int __init setup_nmi_watchdog(char *str) 144static int __init setup_nmi_watchdog(char *str)
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index 74f0c5ea2a03..f1ab0f727007 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -380,6 +380,9 @@ struct pv_mmu_ops pv_mmu_ops = {
380 .pte_update = paravirt_nop, 380 .pte_update = paravirt_nop,
381 .pte_update_defer = paravirt_nop, 381 .pte_update_defer = paravirt_nop,
382 382
383 .ptep_modify_prot_start = __ptep_modify_prot_start,
384 .ptep_modify_prot_commit = __ptep_modify_prot_commit,
385
383#ifdef CONFIG_HIGHPTE 386#ifdef CONFIG_HIGHPTE
384 .kmap_atomic_pte = kmap_atomic, 387 .kmap_atomic_pte = kmap_atomic,
385#endif 388#endif
@@ -403,6 +406,7 @@ struct pv_mmu_ops pv_mmu_ops = {
403#endif /* PAGETABLE_LEVELS >= 3 */ 406#endif /* PAGETABLE_LEVELS >= 3 */
404 407
405 .pte_val = native_pte_val, 408 .pte_val = native_pte_val,
409 .pte_flags = native_pte_val,
406 .pgd_val = native_pgd_val, 410 .pgd_val = native_pgd_val,
407 411
408 .make_pte = native_make_pte, 412 .make_pte = native_make_pte,
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index dc00a1331ace..3c43109ba054 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -77,10 +77,14 @@ void __init dma32_reserve_bootmem(void)
77 if (end_pfn <= MAX_DMA32_PFN) 77 if (end_pfn <= MAX_DMA32_PFN)
78 return; 78 return;
79 79
80 /*
81 * check aperture_64.c allocate_aperture() for reason about
82 * using 512M as goal
83 */
80 align = 64ULL<<20; 84 align = 64ULL<<20;
81 size = round_up(dma32_bootmem_size, align); 85 size = round_up(dma32_bootmem_size, align);
82 dma32_bootmem_ptr = __alloc_bootmem_nopanic(size, align, 86 dma32_bootmem_ptr = __alloc_bootmem_nopanic(size, align,
83 __pa(MAX_DMA_ADDRESS)); 87 512ULL<<20);
84 if (dma32_bootmem_ptr) 88 if (dma32_bootmem_ptr)
85 dma32_bootmem_size = size; 89 dma32_bootmem_size = size;
86 else 90 else
@@ -88,7 +92,6 @@ void __init dma32_reserve_bootmem(void)
88} 92}
89static void __init dma32_free_bootmem(void) 93static void __init dma32_free_bootmem(void)
90{ 94{
91 int node;
92 95
93 if (end_pfn <= MAX_DMA32_PFN) 96 if (end_pfn <= MAX_DMA32_PFN)
94 return; 97 return;
@@ -96,9 +99,7 @@ static void __init dma32_free_bootmem(void)
96 if (!dma32_bootmem_ptr) 99 if (!dma32_bootmem_ptr)
97 return; 100 return;
98 101
99 for_each_online_node(node) 102 free_bootmem(__pa(dma32_bootmem_ptr), dma32_bootmem_size);
100 free_bootmem_node(NODE_DATA(node), __pa(dma32_bootmem_ptr),
101 dma32_bootmem_size);
102 103
103 dma32_bootmem_ptr = NULL; 104 dma32_bootmem_ptr = NULL;
104 dma32_bootmem_size = 0; 105 dma32_bootmem_size = 0;
@@ -357,7 +358,7 @@ int dma_supported(struct device *dev, u64 mask)
357EXPORT_SYMBOL(dma_supported); 358EXPORT_SYMBOL(dma_supported);
358 359
359/* Allocate DMA memory on node near device */ 360/* Allocate DMA memory on node near device */
360noinline struct page * 361static noinline struct page *
361dma_alloc_pages(struct device *dev, gfp_t gfp, unsigned order) 362dma_alloc_pages(struct device *dev, gfp_t gfp, unsigned order)
362{ 363{
363 int node; 364 int node;
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
index aa8ec928caa8..021f3c684a62 100644
--- a/arch/x86/kernel/pci-gart_64.c
+++ b/arch/x86/kernel/pci-gart_64.c
@@ -104,7 +104,6 @@ static unsigned long alloc_iommu(struct device *dev, int size)
104 size, base_index, boundary_size, 0); 104 size, base_index, boundary_size, 0);
105 } 105 }
106 if (offset != -1) { 106 if (offset != -1) {
107 set_bit_string(iommu_gart_bitmap, offset, size);
108 next_bit = offset+size; 107 next_bit = offset+size;
109 if (next_bit >= iommu_pages) { 108 if (next_bit >= iommu_pages) {
110 next_bit = 0; 109 next_bit = 0;
@@ -534,8 +533,8 @@ static __init unsigned read_aperture(struct pci_dev *dev, u32 *size)
534 unsigned aper_size = 0, aper_base_32, aper_order; 533 unsigned aper_size = 0, aper_base_32, aper_order;
535 u64 aper_base; 534 u64 aper_base;
536 535
537 pci_read_config_dword(dev, 0x94, &aper_base_32); 536 pci_read_config_dword(dev, AMD64_GARTAPERTUREBASE, &aper_base_32);
538 pci_read_config_dword(dev, 0x90, &aper_order); 537 pci_read_config_dword(dev, AMD64_GARTAPERTURECTL, &aper_order);
539 aper_order = (aper_order >> 1) & 7; 538 aper_order = (aper_order >> 1) & 7;
540 539
541 aper_base = aper_base_32 & 0x7fff; 540 aper_base = aper_base_32 & 0x7fff;
@@ -549,14 +548,63 @@ static __init unsigned read_aperture(struct pci_dev *dev, u32 *size)
549 return aper_base; 548 return aper_base;
550} 549}
551 550
551static void enable_gart_translations(void)
552{
553 int i;
554
555 for (i = 0; i < num_k8_northbridges; i++) {
556 struct pci_dev *dev = k8_northbridges[i];
557
558 enable_gart_translation(dev, __pa(agp_gatt_table));
559 }
560}
561
562/*
563 * If fix_up_north_bridges is set, the north bridges have to be fixed up on
564 * resume in the same way as they are handled in gart_iommu_hole_init().
565 */
566static bool fix_up_north_bridges;
567static u32 aperture_order;
568static u32 aperture_alloc;
569
570void set_up_gart_resume(u32 aper_order, u32 aper_alloc)
571{
572 fix_up_north_bridges = true;
573 aperture_order = aper_order;
574 aperture_alloc = aper_alloc;
575}
576
552static int gart_resume(struct sys_device *dev) 577static int gart_resume(struct sys_device *dev)
553{ 578{
579 printk(KERN_INFO "PCI-DMA: Resuming GART IOMMU\n");
580
581 if (fix_up_north_bridges) {
582 int i;
583
584 printk(KERN_INFO "PCI-DMA: Restoring GART aperture settings\n");
585
586 for (i = 0; i < num_k8_northbridges; i++) {
587 struct pci_dev *dev = k8_northbridges[i];
588
589 /*
590 * Don't enable translations just yet. That is the next
591 * step. Restore the pre-suspend aperture settings.
592 */
593 pci_write_config_dword(dev, AMD64_GARTAPERTURECTL,
594 aperture_order << 1);
595 pci_write_config_dword(dev, AMD64_GARTAPERTUREBASE,
596 aperture_alloc >> 25);
597 }
598 }
599
600 enable_gart_translations();
601
554 return 0; 602 return 0;
555} 603}
556 604
557static int gart_suspend(struct sys_device *dev, pm_message_t state) 605static int gart_suspend(struct sys_device *dev, pm_message_t state)
558{ 606{
559 return -EINVAL; 607 return 0;
560} 608}
561 609
562static struct sysdev_class gart_sysdev_class = { 610static struct sysdev_class gart_sysdev_class = {
@@ -614,27 +662,14 @@ static __init int init_k8_gatt(struct agp_kern_info *info)
614 memset(gatt, 0, gatt_size); 662 memset(gatt, 0, gatt_size);
615 agp_gatt_table = gatt; 663 agp_gatt_table = gatt;
616 664
617 for (i = 0; i < num_k8_northbridges; i++) { 665 enable_gart_translations();
618 u32 gatt_reg;
619 u32 ctl;
620
621 dev = k8_northbridges[i];
622 gatt_reg = __pa(gatt) >> 12;
623 gatt_reg <<= 4;
624 pci_write_config_dword(dev, 0x98, gatt_reg);
625 pci_read_config_dword(dev, 0x90, &ctl);
626
627 ctl |= 1;
628 ctl &= ~((1<<4) | (1<<5));
629
630 pci_write_config_dword(dev, 0x90, ctl);
631 }
632 666
633 error = sysdev_class_register(&gart_sysdev_class); 667 error = sysdev_class_register(&gart_sysdev_class);
634 if (!error) 668 if (!error)
635 error = sysdev_register(&device_gart); 669 error = sysdev_register(&device_gart);
636 if (error) 670 if (error)
637 panic("Could not register gart_sysdev -- would corrupt data on next suspend"); 671 panic("Could not register gart_sysdev -- would corrupt data on next suspend");
672
638 flush_gart(); 673 flush_gart();
639 674
640 printk(KERN_INFO "PCI-DMA: aperture base @ %x size %u KB\n", 675 printk(KERN_INFO "PCI-DMA: aperture base @ %x size %u KB\n",
@@ -677,11 +712,11 @@ void gart_iommu_shutdown(void)
677 u32 ctl; 712 u32 ctl;
678 713
679 dev = k8_northbridges[i]; 714 dev = k8_northbridges[i];
680 pci_read_config_dword(dev, 0x90, &ctl); 715 pci_read_config_dword(dev, AMD64_GARTAPERTURECTL, &ctl);
681 716
682 ctl &= ~1; 717 ctl &= ~GARTEN;
683 718
684 pci_write_config_dword(dev, 0x90, ctl); 719 pci_write_config_dword(dev, AMD64_GARTAPERTURECTL, ctl);
685 } 720 }
686} 721}
687 722
@@ -788,10 +823,10 @@ void __init gart_iommu_init(void)
788 wbinvd(); 823 wbinvd();
789 824
790 /* 825 /*
791 * Try to workaround a bug (thanks to BenH) 826 * Try to workaround a bug (thanks to BenH):
792 * Set unmapped entries to a scratch page instead of 0. 827 * Set unmapped entries to a scratch page instead of 0.
793 * Any prefetches that hit unmapped entries won't get an bus abort 828 * Any prefetches that hit unmapped entries won't get an bus abort
794 * then. 829 * then. (P2P bridge may be prefetching on DMA reads).
795 */ 830 */
796 scratch = get_zeroed_page(GFP_KERNEL); 831 scratch = get_zeroed_page(GFP_KERNEL);
797 if (!scratch) 832 if (!scratch)
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index ba370dc8685b..4061d63aabe7 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -6,6 +6,7 @@
6#include <linux/sched.h> 6#include <linux/sched.h>
7#include <linux/module.h> 7#include <linux/module.h>
8#include <linux/pm.h> 8#include <linux/pm.h>
9#include <linux/clockchips.h>
9 10
10struct kmem_cache *task_xstate_cachep; 11struct kmem_cache *task_xstate_cachep;
11 12
@@ -45,6 +46,76 @@ void arch_task_cache_init(void)
45 SLAB_PANIC, NULL); 46 SLAB_PANIC, NULL);
46} 47}
47 48
49/*
50 * Idle related variables and functions
51 */
52unsigned long boot_option_idle_override = 0;
53EXPORT_SYMBOL(boot_option_idle_override);
54
55/*
56 * Powermanagement idle function, if any..
57 */
58void (*pm_idle)(void);
59EXPORT_SYMBOL(pm_idle);
60
61#ifdef CONFIG_X86_32
62/*
63 * This halt magic was a workaround for ancient floppy DMA
64 * wreckage. It should be safe to remove.
65 */
66static int hlt_counter;
67void disable_hlt(void)
68{
69 hlt_counter++;
70}
71EXPORT_SYMBOL(disable_hlt);
72
73void enable_hlt(void)
74{
75 hlt_counter--;
76}
77EXPORT_SYMBOL(enable_hlt);
78
79static inline int hlt_use_halt(void)
80{
81 return (!hlt_counter && boot_cpu_data.hlt_works_ok);
82}
83#else
84static inline int hlt_use_halt(void)
85{
86 return 1;
87}
88#endif
89
90/*
91 * We use this if we don't have any better
92 * idle routine..
93 */
94void default_idle(void)
95{
96 if (hlt_use_halt()) {
97 current_thread_info()->status &= ~TS_POLLING;
98 /*
99 * TS_POLLING-cleared state must be visible before we
100 * test NEED_RESCHED:
101 */
102 smp_mb();
103
104 if (!need_resched())
105 safe_halt(); /* enables interrupts racelessly */
106 else
107 local_irq_enable();
108 current_thread_info()->status |= TS_POLLING;
109 } else {
110 local_irq_enable();
111 /* loop is done by the caller */
112 cpu_relax();
113 }
114}
115#ifdef CONFIG_APM_MODULE
116EXPORT_SYMBOL(default_idle);
117#endif
118
48static void do_nothing(void *unused) 119static void do_nothing(void *unused)
49{ 120{
50} 121}
@@ -122,44 +193,129 @@ static void poll_idle(void)
122 * 193 *
123 * idle=mwait overrides this decision and forces the usage of mwait. 194 * idle=mwait overrides this decision and forces the usage of mwait.
124 */ 195 */
196
197#define MWAIT_INFO 0x05
198#define MWAIT_ECX_EXTENDED_INFO 0x01
199#define MWAIT_EDX_C1 0xf0
200
125static int __cpuinit mwait_usable(const struct cpuinfo_x86 *c) 201static int __cpuinit mwait_usable(const struct cpuinfo_x86 *c)
126{ 202{
203 u32 eax, ebx, ecx, edx;
204
127 if (force_mwait) 205 if (force_mwait)
128 return 1; 206 return 1;
129 207
130 if (c->x86_vendor == X86_VENDOR_AMD) { 208 if (c->cpuid_level < MWAIT_INFO)
131 switch(c->x86) { 209 return 0;
132 case 0x10: 210
133 case 0x11: 211 cpuid(MWAIT_INFO, &eax, &ebx, &ecx, &edx);
134 return 0; 212 /* Check, whether EDX has extended info about MWAIT */
135 } 213 if (!(ecx & MWAIT_ECX_EXTENDED_INFO))
136 } 214 return 1;
215
216 /*
217 * edx enumeratios MONITOR/MWAIT extensions. Check, whether
218 * C1 supports MWAIT
219 */
220 return (edx & MWAIT_EDX_C1);
221}
222
223/*
224 * Check for AMD CPUs, which have potentially C1E support
225 */
226static int __cpuinit check_c1e_idle(const struct cpuinfo_x86 *c)
227{
228 if (c->x86_vendor != X86_VENDOR_AMD)
229 return 0;
230
231 if (c->x86 < 0x0F)
232 return 0;
233
234 /* Family 0x0f models < rev F do not have C1E */
235 if (c->x86 == 0x0f && c->x86_model < 0x40)
236 return 0;
237
137 return 1; 238 return 1;
138} 239}
139 240
140void __cpuinit select_idle_routine(const struct cpuinfo_x86 *c) 241/*
242 * C1E aware idle routine. We check for C1E active in the interrupt
243 * pending message MSR. If we detect C1E, then we handle it the same
244 * way as C3 power states (local apic timer and TSC stop)
245 */
246static void c1e_idle(void)
141{ 247{
142 static int selected; 248 static cpumask_t c1e_mask = CPU_MASK_NONE;
249 static int c1e_detected;
143 250
144 if (selected) 251 if (need_resched())
145 return; 252 return;
253
254 if (!c1e_detected) {
255 u32 lo, hi;
256
257 rdmsr(MSR_K8_INT_PENDING_MSG, lo, hi);
258 if (lo & K8_INTP_C1E_ACTIVE_MASK) {
259 c1e_detected = 1;
260 mark_tsc_unstable("TSC halt in C1E");
261 printk(KERN_INFO "System has C1E enabled\n");
262 }
263 }
264
265 if (c1e_detected) {
266 int cpu = smp_processor_id();
267
268 if (!cpu_isset(cpu, c1e_mask)) {
269 cpu_set(cpu, c1e_mask);
270 /*
271 * Force broadcast so ACPI can not interfere. Needs
272 * to run with interrupts enabled as it uses
273 * smp_function_call.
274 */
275 local_irq_enable();
276 clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_FORCE,
277 &cpu);
278 printk(KERN_INFO "Switch to broadcast mode on CPU%d\n",
279 cpu);
280 local_irq_disable();
281 }
282 clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &cpu);
283
284 default_idle();
285
286 /*
287 * The switch back from broadcast mode needs to be
288 * called with interrupts disabled.
289 */
290 local_irq_disable();
291 clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &cpu);
292 local_irq_enable();
293 } else
294 default_idle();
295}
296
297void __cpuinit select_idle_routine(const struct cpuinfo_x86 *c)
298{
146#ifdef CONFIG_X86_SMP 299#ifdef CONFIG_X86_SMP
147 if (pm_idle == poll_idle && smp_num_siblings > 1) { 300 if (pm_idle == poll_idle && smp_num_siblings > 1) {
148 printk(KERN_WARNING "WARNING: polling idle and HT enabled," 301 printk(KERN_WARNING "WARNING: polling idle and HT enabled,"
149 " performance may degrade.\n"); 302 " performance may degrade.\n");
150 } 303 }
151#endif 304#endif
305 if (pm_idle)
306 return;
307
152 if (cpu_has(c, X86_FEATURE_MWAIT) && mwait_usable(c)) { 308 if (cpu_has(c, X86_FEATURE_MWAIT) && mwait_usable(c)) {
153 /* 309 /*
154 * Skip, if setup has overridden idle.
155 * One CPU supports mwait => All CPUs supports mwait 310 * One CPU supports mwait => All CPUs supports mwait
156 */ 311 */
157 if (!pm_idle) { 312 printk(KERN_INFO "using mwait in idle threads.\n");
158 printk(KERN_INFO "using mwait in idle threads.\n"); 313 pm_idle = mwait_idle;
159 pm_idle = mwait_idle; 314 } else if (check_c1e_idle(c)) {
160 } 315 printk(KERN_INFO "using C1E aware idle routine\n");
161 } 316 pm_idle = c1e_idle;
162 selected = 1; 317 } else
318 pm_idle = default_idle;
163} 319}
164 320
165static int __init idle_setup(char *str) 321static int __init idle_setup(char *str)
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
index 6d5483356e74..c2a11d77b1b5 100644
--- a/arch/x86/kernel/process_32.c
+++ b/arch/x86/kernel/process_32.c
@@ -58,11 +58,6 @@
58 58
59asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); 59asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
60 60
61static int hlt_counter;
62
63unsigned long boot_option_idle_override = 0;
64EXPORT_SYMBOL(boot_option_idle_override);
65
66DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task; 61DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task;
67EXPORT_PER_CPU_SYMBOL(current_task); 62EXPORT_PER_CPU_SYMBOL(current_task);
68 63
@@ -77,55 +72,6 @@ unsigned long thread_saved_pc(struct task_struct *tsk)
77 return ((unsigned long *)tsk->thread.sp)[3]; 72 return ((unsigned long *)tsk->thread.sp)[3];
78} 73}
79 74
80/*
81 * Powermanagement idle function, if any..
82 */
83void (*pm_idle)(void);
84EXPORT_SYMBOL(pm_idle);
85
86void disable_hlt(void)
87{
88 hlt_counter++;
89}
90
91EXPORT_SYMBOL(disable_hlt);
92
93void enable_hlt(void)
94{
95 hlt_counter--;
96}
97
98EXPORT_SYMBOL(enable_hlt);
99
100/*
101 * We use this if we don't have any better
102 * idle routine..
103 */
104void default_idle(void)
105{
106 if (!hlt_counter && boot_cpu_data.hlt_works_ok) {
107 current_thread_info()->status &= ~TS_POLLING;
108 /*
109 * TS_POLLING-cleared state must be visible before we
110 * test NEED_RESCHED:
111 */
112 smp_mb();
113
114 if (!need_resched())
115 safe_halt(); /* enables interrupts racelessly */
116 else
117 local_irq_enable();
118 current_thread_info()->status |= TS_POLLING;
119 } else {
120 local_irq_enable();
121 /* loop is done by the caller */
122 cpu_relax();
123 }
124}
125#ifdef CONFIG_APM_MODULE
126EXPORT_SYMBOL(default_idle);
127#endif
128
129#ifdef CONFIG_HOTPLUG_CPU 75#ifdef CONFIG_HOTPLUG_CPU
130#include <asm/nmi.h> 76#include <asm/nmi.h>
131/* We don't actually take CPU down, just spin without interrupts. */ 77/* We don't actually take CPU down, just spin without interrupts. */
@@ -168,24 +114,19 @@ void cpu_idle(void)
168 while (1) { 114 while (1) {
169 tick_nohz_stop_sched_tick(); 115 tick_nohz_stop_sched_tick();
170 while (!need_resched()) { 116 while (!need_resched()) {
171 void (*idle)(void);
172 117
173 check_pgt_cache(); 118 check_pgt_cache();
174 rmb(); 119 rmb();
175 idle = pm_idle;
176 120
177 if (rcu_pending(cpu)) 121 if (rcu_pending(cpu))
178 rcu_check_callbacks(cpu, 0); 122 rcu_check_callbacks(cpu, 0);
179 123
180 if (!idle)
181 idle = default_idle;
182
183 if (cpu_is_offline(cpu)) 124 if (cpu_is_offline(cpu))
184 play_dead(); 125 play_dead();
185 126
186 local_irq_disable(); 127 local_irq_disable();
187 __get_cpu_var(irq_stat).idle_timestamp = jiffies; 128 __get_cpu_var(irq_stat).idle_timestamp = jiffies;
188 idle(); 129 pm_idle();
189 } 130 }
190 tick_nohz_restart_sched_tick(); 131 tick_nohz_restart_sched_tick();
191 preempt_enable_no_resched(); 132 preempt_enable_no_resched();
@@ -333,6 +274,7 @@ void flush_thread(void)
333 /* 274 /*
334 * Forget coprocessor state.. 275 * Forget coprocessor state..
335 */ 276 */
277 tsk->fpu_counter = 0;
336 clear_fpu(tsk); 278 clear_fpu(tsk);
337 clear_used_math(); 279 clear_used_math();
338} 280}
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index ac54ff56df80..290183e9731a 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -56,15 +56,6 @@ asmlinkage extern void ret_from_fork(void);
56 56
57unsigned long kernel_thread_flags = CLONE_VM | CLONE_UNTRACED; 57unsigned long kernel_thread_flags = CLONE_VM | CLONE_UNTRACED;
58 58
59unsigned long boot_option_idle_override = 0;
60EXPORT_SYMBOL(boot_option_idle_override);
61
62/*
63 * Powermanagement idle function, if any..
64 */
65void (*pm_idle)(void);
66EXPORT_SYMBOL(pm_idle);
67
68static ATOMIC_NOTIFIER_HEAD(idle_notifier); 59static ATOMIC_NOTIFIER_HEAD(idle_notifier);
69 60
70void idle_notifier_register(struct notifier_block *n) 61void idle_notifier_register(struct notifier_block *n)
@@ -94,25 +85,6 @@ void exit_idle(void)
94 __exit_idle(); 85 __exit_idle();
95} 86}
96 87
97/*
98 * We use this if we don't have any better
99 * idle routine..
100 */
101void default_idle(void)
102{
103 current_thread_info()->status &= ~TS_POLLING;
104 /*
105 * TS_POLLING-cleared state must be visible before we
106 * test NEED_RESCHED:
107 */
108 smp_mb();
109 if (!need_resched())
110 safe_halt(); /* enables interrupts racelessly */
111 else
112 local_irq_enable();
113 current_thread_info()->status |= TS_POLLING;
114}
115
116#ifdef CONFIG_HOTPLUG_CPU 88#ifdef CONFIG_HOTPLUG_CPU
117DECLARE_PER_CPU(int, cpu_state); 89DECLARE_PER_CPU(int, cpu_state);
118 90
@@ -150,12 +122,9 @@ void cpu_idle(void)
150 while (1) { 122 while (1) {
151 tick_nohz_stop_sched_tick(); 123 tick_nohz_stop_sched_tick();
152 while (!need_resched()) { 124 while (!need_resched()) {
153 void (*idle)(void);
154 125
155 rmb(); 126 rmb();
156 idle = pm_idle; 127
157 if (!idle)
158 idle = default_idle;
159 if (cpu_is_offline(smp_processor_id())) 128 if (cpu_is_offline(smp_processor_id()))
160 play_dead(); 129 play_dead();
161 /* 130 /*
@@ -165,7 +134,7 @@ void cpu_idle(void)
165 */ 134 */
166 local_irq_disable(); 135 local_irq_disable();
167 enter_idle(); 136 enter_idle();
168 idle(); 137 pm_idle();
169 /* In many cases the interrupt that ended idle 138 /* In many cases the interrupt that ended idle
170 has already called exit_idle. But some idle 139 has already called exit_idle. But some idle
171 loops can be woken up without interrupt. */ 140 loops can be woken up without interrupt. */
@@ -294,6 +263,7 @@ void flush_thread(void)
294 /* 263 /*
295 * Forget coprocessor state.. 264 * Forget coprocessor state..
296 */ 265 */
266 tsk->fpu_counter = 0;
297 clear_fpu(tsk); 267 clear_fpu(tsk);
298 clear_used_math(); 268 clear_used_math();
299} 269}
diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c
new file mode 100644
index 000000000000..05fbe9a0325a
--- /dev/null
+++ b/arch/x86/kernel/pvclock.c
@@ -0,0 +1,141 @@
1/* paravirtual clock -- common code used by kvm/xen
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16*/
17
18#include <linux/kernel.h>
19#include <linux/percpu.h>
20#include <asm/pvclock.h>
21
22/*
23 * These are perodically updated
24 * xen: magic shared_info page
25 * kvm: gpa registered via msr
26 * and then copied here.
27 */
28struct pvclock_shadow_time {
29 u64 tsc_timestamp; /* TSC at last update of time vals. */
30 u64 system_timestamp; /* Time, in nanosecs, since boot. */
31 u32 tsc_to_nsec_mul;
32 int tsc_shift;
33 u32 version;
34};
35
36/*
37 * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction,
38 * yielding a 64-bit result.
39 */
40static inline u64 scale_delta(u64 delta, u32 mul_frac, int shift)
41{
42 u64 product;
43#ifdef __i386__
44 u32 tmp1, tmp2;
45#endif
46
47 if (shift < 0)
48 delta >>= -shift;
49 else
50 delta <<= shift;
51
52#ifdef __i386__
53 __asm__ (
54 "mul %5 ; "
55 "mov %4,%%eax ; "
56 "mov %%edx,%4 ; "
57 "mul %5 ; "
58 "xor %5,%5 ; "
59 "add %4,%%eax ; "
60 "adc %5,%%edx ; "
61 : "=A" (product), "=r" (tmp1), "=r" (tmp2)
62 : "a" ((u32)delta), "1" ((u32)(delta >> 32)), "2" (mul_frac) );
63#elif __x86_64__
64 __asm__ (
65 "mul %%rdx ; shrd $32,%%rdx,%%rax"
66 : "=a" (product) : "0" (delta), "d" ((u64)mul_frac) );
67#else
68#error implement me!
69#endif
70
71 return product;
72}
73
74static u64 pvclock_get_nsec_offset(struct pvclock_shadow_time *shadow)
75{
76 u64 delta = native_read_tsc() - shadow->tsc_timestamp;
77 return scale_delta(delta, shadow->tsc_to_nsec_mul, shadow->tsc_shift);
78}
79
80/*
81 * Reads a consistent set of time-base values from hypervisor,
82 * into a shadow data area.
83 */
84static unsigned pvclock_get_time_values(struct pvclock_shadow_time *dst,
85 struct pvclock_vcpu_time_info *src)
86{
87 do {
88 dst->version = src->version;
89 rmb(); /* fetch version before data */
90 dst->tsc_timestamp = src->tsc_timestamp;
91 dst->system_timestamp = src->system_time;
92 dst->tsc_to_nsec_mul = src->tsc_to_system_mul;
93 dst->tsc_shift = src->tsc_shift;
94 rmb(); /* test version after fetching data */
95 } while ((src->version & 1) || (dst->version != src->version));
96
97 return dst->version;
98}
99
100cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src)
101{
102 struct pvclock_shadow_time shadow;
103 unsigned version;
104 cycle_t ret, offset;
105
106 do {
107 version = pvclock_get_time_values(&shadow, src);
108 barrier();
109 offset = pvclock_get_nsec_offset(&shadow);
110 ret = shadow.system_timestamp + offset;
111 barrier();
112 } while (version != src->version);
113
114 return ret;
115}
116
117void pvclock_read_wallclock(struct pvclock_wall_clock *wall_clock,
118 struct pvclock_vcpu_time_info *vcpu_time,
119 struct timespec *ts)
120{
121 u32 version;
122 u64 delta;
123 struct timespec now;
124
125 /* get wallclock at system boot */
126 do {
127 version = wall_clock->version;
128 rmb(); /* fetch version before time */
129 now.tv_sec = wall_clock->sec;
130 now.tv_nsec = wall_clock->nsec;
131 rmb(); /* fetch time before checking version */
132 } while ((wall_clock->version & 1) || (version != wall_clock->version));
133
134 delta = pvclock_clocksource_read(vcpu_time); /* time since system boot */
135 delta += now.tv_sec * (u64)NSEC_PER_SEC + now.tv_nsec;
136
137 now.tv_nsec = do_div(delta, NSEC_PER_SEC);
138 now.tv_sec = delta;
139
140 set_normalized_timespec(ts, now.tv_sec, now.tv_nsec);
141}
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index d89a648fe710..79bdcd11c66e 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -65,6 +65,7 @@ static enum {
65 ICH_FORCE_HPET_RESUME, 65 ICH_FORCE_HPET_RESUME,
66 VT8237_FORCE_HPET_RESUME, 66 VT8237_FORCE_HPET_RESUME,
67 NVIDIA_FORCE_HPET_RESUME, 67 NVIDIA_FORCE_HPET_RESUME,
68 ATI_FORCE_HPET_RESUME,
68} force_hpet_resume_type; 69} force_hpet_resume_type;
69 70
70static void __iomem *rcba_base; 71static void __iomem *rcba_base;
@@ -158,6 +159,8 @@ static void ich_force_enable_hpet(struct pci_dev *dev)
158 159
159DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_0, 160DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_0,
160 ich_force_enable_hpet); 161 ich_force_enable_hpet);
162DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_0,
163 ich_force_enable_hpet);
161DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, 164DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1,
162 ich_force_enable_hpet); 165 ich_force_enable_hpet);
163DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_0, 166DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_0,
@@ -174,6 +177,12 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9_7,
174 177
175static struct pci_dev *cached_dev; 178static struct pci_dev *cached_dev;
176 179
180static void hpet_print_force_info(void)
181{
182 printk(KERN_INFO "HPET not enabled in BIOS. "
183 "You might try hpet=force boot option\n");
184}
185
177static void old_ich_force_hpet_resume(void) 186static void old_ich_force_hpet_resume(void)
178{ 187{
179 u32 val; 188 u32 val;
@@ -253,6 +262,8 @@ static void old_ich_force_enable_hpet_user(struct pci_dev *dev)
253{ 262{
254 if (hpet_force_user) 263 if (hpet_force_user)
255 old_ich_force_enable_hpet(dev); 264 old_ich_force_enable_hpet(dev);
265 else
266 hpet_print_force_info();
256} 267}
257 268
258DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0, 269DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0,
@@ -290,8 +301,13 @@ static void vt8237_force_enable_hpet(struct pci_dev *dev)
290{ 301{
291 u32 uninitialized_var(val); 302 u32 uninitialized_var(val);
292 303
293 if (!hpet_force_user || hpet_address || force_hpet_address) 304 if (hpet_address || force_hpet_address)
305 return;
306
307 if (!hpet_force_user) {
308 hpet_print_force_info();
294 return; 309 return;
310 }
295 311
296 pci_read_config_dword(dev, 0x68, &val); 312 pci_read_config_dword(dev, 0x68, &val);
297 /* 313 /*
@@ -330,6 +346,36 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235,
330DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, 346DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237,
331 vt8237_force_enable_hpet); 347 vt8237_force_enable_hpet);
332 348
349static void ati_force_hpet_resume(void)
350{
351 pci_write_config_dword(cached_dev, 0x14, 0xfed00000);
352 printk(KERN_DEBUG "Force enabled HPET at resume\n");
353}
354
355static void ati_force_enable_hpet(struct pci_dev *dev)
356{
357 u32 uninitialized_var(val);
358
359 if (hpet_address || force_hpet_address)
360 return;
361
362 if (!hpet_force_user) {
363 hpet_print_force_info();
364 return;
365 }
366
367 pci_write_config_dword(dev, 0x14, 0xfed00000);
368 pci_read_config_dword(dev, 0x14, &val);
369 force_hpet_address = val;
370 force_hpet_resume_type = ATI_FORCE_HPET_RESUME;
371 dev_printk(KERN_DEBUG, &dev->dev, "Force enabled HPET at 0x%lx\n",
372 force_hpet_address);
373 cached_dev = dev;
374 return;
375}
376DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_SMBUS,
377 ati_force_enable_hpet);
378
333/* 379/*
334 * Undocumented chipset feature taken from LinuxBIOS. 380 * Undocumented chipset feature taken from LinuxBIOS.
335 */ 381 */
@@ -343,8 +389,13 @@ static void nvidia_force_enable_hpet(struct pci_dev *dev)
343{ 389{
344 u32 uninitialized_var(val); 390 u32 uninitialized_var(val);
345 391
346 if (!hpet_force_user || hpet_address || force_hpet_address) 392 if (hpet_address || force_hpet_address)
393 return;
394
395 if (!hpet_force_user) {
396 hpet_print_force_info();
347 return; 397 return;
398 }
348 399
349 pci_write_config_dword(dev, 0x44, 0xfed00001); 400 pci_write_config_dword(dev, 0x44, 0xfed00001);
350 pci_read_config_dword(dev, 0x44, &val); 401 pci_read_config_dword(dev, 0x44, &val);
@@ -397,6 +448,9 @@ void force_hpet_resume(void)
397 case NVIDIA_FORCE_HPET_RESUME: 448 case NVIDIA_FORCE_HPET_RESUME:
398 nvidia_force_hpet_resume(); 449 nvidia_force_hpet_resume();
399 return; 450 return;
451 case ATI_FORCE_HPET_RESUME:
452 ati_force_hpet_resume();
453 return;
400 default: 454 default:
401 break; 455 break;
402 } 456 }
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index f6be7d5f82f8..f8a62160e151 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -27,7 +27,7 @@
27void (*pm_power_off)(void); 27void (*pm_power_off)(void);
28EXPORT_SYMBOL(pm_power_off); 28EXPORT_SYMBOL(pm_power_off);
29 29
30static long no_idt[3]; 30static const struct desc_ptr no_idt = {};
31static int reboot_mode; 31static int reboot_mode;
32enum reboot_type reboot_type = BOOT_KBD; 32enum reboot_type reboot_type = BOOT_KBD;
33int reboot_force; 33int reboot_force;
@@ -201,15 +201,15 @@ core_initcall(reboot_init);
201 controller to pulse the CPU reset line, which is more thorough, but 201 controller to pulse the CPU reset line, which is more thorough, but
202 doesn't work with at least one type of 486 motherboard. It is easy 202 doesn't work with at least one type of 486 motherboard. It is easy
203 to stop this code working; hence the copious comments. */ 203 to stop this code working; hence the copious comments. */
204static unsigned long long 204static const unsigned long long
205real_mode_gdt_entries [3] = 205real_mode_gdt_entries [3] =
206{ 206{
207 0x0000000000000000ULL, /* Null descriptor */ 207 0x0000000000000000ULL, /* Null descriptor */
208 0x00009a000000ffffULL, /* 16-bit real-mode 64k code at 0x00000000 */ 208 0x00009b000000ffffULL, /* 16-bit real-mode 64k code at 0x00000000 */
209 0x000092000100ffffULL /* 16-bit real-mode 64k data at 0x00000100 */ 209 0x000093000100ffffULL /* 16-bit real-mode 64k data at 0x00000100 */
210}; 210};
211 211
212static struct desc_ptr 212static const struct desc_ptr
213real_mode_gdt = { sizeof (real_mode_gdt_entries) - 1, (long)real_mode_gdt_entries }, 213real_mode_gdt = { sizeof (real_mode_gdt_entries) - 1, (long)real_mode_gdt_entries },
214real_mode_idt = { 0x3ff, 0 }; 214real_mode_idt = { 0x3ff, 0 };
215 215
@@ -231,7 +231,7 @@ real_mode_idt = { 0x3ff, 0 };
231 231
232 More could be done here to set up the registers as if a CPU reset had 232 More could be done here to set up the registers as if a CPU reset had
233 occurred; hopefully real BIOSs don't assume much. */ 233 occurred; hopefully real BIOSs don't assume much. */
234static unsigned char real_mode_switch [] = 234static const unsigned char real_mode_switch [] =
235{ 235{
236 0x66, 0x0f, 0x20, 0xc0, /* movl %cr0,%eax */ 236 0x66, 0x0f, 0x20, 0xc0, /* movl %cr0,%eax */
237 0x66, 0x83, 0xe0, 0x11, /* andl $0x00000011,%eax */ 237 0x66, 0x83, 0xe0, 0x11, /* andl $0x00000011,%eax */
@@ -245,7 +245,7 @@ static unsigned char real_mode_switch [] =
245 0x24, 0x10, /* f: andb $0x10,al */ 245 0x24, 0x10, /* f: andb $0x10,al */
246 0x66, 0x0f, 0x22, 0xc0 /* movl %eax,%cr0 */ 246 0x66, 0x0f, 0x22, 0xc0 /* movl %eax,%cr0 */
247}; 247};
248static unsigned char jump_to_bios [] = 248static const unsigned char jump_to_bios [] =
249{ 249{
250 0xea, 0x00, 0x00, 0xff, 0xff /* ljmp $0xffff,$0x0000 */ 250 0xea, 0x00, 0x00, 0xff, 0xff /* ljmp $0xffff,$0x0000 */
251}; 251};
@@ -255,7 +255,7 @@ static unsigned char jump_to_bios [] =
255 * specified by the code and length parameters. 255 * specified by the code and length parameters.
256 * We assume that length will aways be less that 100! 256 * We assume that length will aways be less that 100!
257 */ 257 */
258void machine_real_restart(unsigned char *code, int length) 258void machine_real_restart(const unsigned char *code, int length)
259{ 259{
260 local_irq_disable(); 260 local_irq_disable();
261 261
@@ -368,7 +368,7 @@ static void native_machine_emergency_restart(void)
368 } 368 }
369 369
370 case BOOT_TRIPLE: 370 case BOOT_TRIPLE:
371 load_idt((const struct desc_ptr *)&no_idt); 371 load_idt(&no_idt);
372 __asm__ __volatile__("int3"); 372 __asm__ __volatile__("int3");
373 373
374 reboot_type = BOOT_KBD; 374 reboot_type = BOOT_KBD;
diff --git a/arch/x86/kernel/reboot_fixups_32.c b/arch/x86/kernel/reboot_fixups_32.c
index dec0b5ec25c2..61a837743fe5 100644
--- a/arch/x86/kernel/reboot_fixups_32.c
+++ b/arch/x86/kernel/reboot_fixups_32.c
@@ -49,7 +49,7 @@ struct device_fixup {
49 void (*reboot_fixup)(struct pci_dev *); 49 void (*reboot_fixup)(struct pci_dev *);
50}; 50};
51 51
52static struct device_fixup fixups_table[] = { 52static const struct device_fixup fixups_table[] = {
53{ PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset }, 53{ PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset },
54{ PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset }, 54{ PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset },
55{ PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SC1100_BRIDGE, cs5530a_warm_reset }, 55{ PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SC1100_BRIDGE, cs5530a_warm_reset },
@@ -64,7 +64,7 @@ static struct device_fixup fixups_table[] = {
64 */ 64 */
65void mach_reboot_fixups(void) 65void mach_reboot_fixups(void)
66{ 66{
67 struct device_fixup *cur; 67 const struct device_fixup *cur;
68 struct pci_dev *dev; 68 struct pci_dev *dev;
69 int i; 69 int i;
70 70
diff --git a/arch/x86/kernel/setup_32.c b/arch/x86/kernel/setup_32.c
index 2c5f8b213e86..5a2f8e063887 100644
--- a/arch/x86/kernel/setup_32.c
+++ b/arch/x86/kernel/setup_32.c
@@ -532,10 +532,16 @@ static void __init reserve_crashkernel(void)
532 (unsigned long)(crash_size >> 20), 532 (unsigned long)(crash_size >> 20),
533 (unsigned long)(crash_base >> 20), 533 (unsigned long)(crash_base >> 20),
534 (unsigned long)(total_mem >> 20)); 534 (unsigned long)(total_mem >> 20));
535
536 if (reserve_bootmem(crash_base, crash_size,
537 BOOTMEM_EXCLUSIVE) < 0) {
538 printk(KERN_INFO "crashkernel reservation "
539 "failed - memory is in use\n");
540 return;
541 }
542
535 crashk_res.start = crash_base; 543 crashk_res.start = crash_base;
536 crashk_res.end = crash_base + crash_size - 1; 544 crashk_res.end = crash_base + crash_size - 1;
537 reserve_bootmem(crash_base, crash_size,
538 BOOTMEM_DEFAULT);
539 } else 545 } else
540 printk(KERN_INFO "crashkernel reservation failed - " 546 printk(KERN_INFO "crashkernel reservation failed - "
541 "you have to specify a base address\n"); 547 "you have to specify a base address\n");
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c
index 6dff1286ad8a..545440e471b2 100644
--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -71,6 +71,7 @@
71#include <asm/topology.h> 71#include <asm/topology.h>
72#include <asm/trampoline.h> 72#include <asm/trampoline.h>
73#include <asm/pat.h> 73#include <asm/pat.h>
74#include <asm/mmconfig.h>
74 75
75#include <mach_apic.h> 76#include <mach_apic.h>
76#ifdef CONFIG_PARAVIRT 77#ifdef CONFIG_PARAVIRT
@@ -79,6 +80,8 @@
79#define ARCH_SETUP 80#define ARCH_SETUP
80#endif 81#endif
81 82
83#include "cpu/cpu.h"
84
82/* 85/*
83 * Machine setup.. 86 * Machine setup..
84 */ 87 */
@@ -95,8 +98,6 @@ int bootloader_type;
95 98
96unsigned long saved_video_mode; 99unsigned long saved_video_mode;
97 100
98int force_mwait __cpuinitdata;
99
100/* 101/*
101 * Early DMI memory 102 * Early DMI memory
102 */ 103 */
@@ -118,7 +119,7 @@ EXPORT_SYMBOL_GPL(edid_info);
118 119
119extern int root_mountflags; 120extern int root_mountflags;
120 121
121char __initdata command_line[COMMAND_LINE_SIZE]; 122static char __initdata command_line[COMMAND_LINE_SIZE];
122 123
123static struct resource standard_io_resources[] = { 124static struct resource standard_io_resources[] = {
124 { .name = "dma1", .start = 0x00, .end = 0x1f, 125 { .name = "dma1", .start = 0x00, .end = 0x1f,
@@ -164,6 +165,7 @@ static struct resource bss_resource = {
164 .flags = IORESOURCE_RAM, 165 .flags = IORESOURCE_RAM,
165}; 166};
166 167
168static void __init early_cpu_init(void);
167static void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c); 169static void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c);
168 170
169#ifdef CONFIG_PROC_VMCORE 171#ifdef CONFIG_PROC_VMCORE
@@ -293,18 +295,6 @@ static void __init parse_setup_data(void)
293 } 295 }
294} 296}
295 297
296#ifdef CONFIG_PCI_MMCONFIG
297extern void __cpuinit fam10h_check_enable_mmcfg(void);
298extern void __init check_enable_amd_mmconf_dmi(void);
299#else
300void __cpuinit fam10h_check_enable_mmcfg(void)
301{
302}
303void __init check_enable_amd_mmconf_dmi(void)
304{
305}
306#endif
307
308/* 298/*
309 * setup_arch - architecture-specific boot-time initializations 299 * setup_arch - architecture-specific boot-time initializations
310 * 300 *
@@ -352,6 +342,7 @@ void __init setup_arch(char **cmdline_p)
352 bss_resource.start = virt_to_phys(&__bss_start); 342 bss_resource.start = virt_to_phys(&__bss_start);
353 bss_resource.end = virt_to_phys(&__bss_stop)-1; 343 bss_resource.end = virt_to_phys(&__bss_stop)-1;
354 344
345 early_cpu_init();
355 early_identify_cpu(&boot_cpu_data); 346 early_identify_cpu(&boot_cpu_data);
356 347
357 strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); 348 strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
@@ -537,7 +528,20 @@ void __init setup_arch(char **cmdline_p)
537 check_enable_amd_mmconf_dmi(); 528 check_enable_amd_mmconf_dmi();
538} 529}
539 530
540static int __cpuinit get_model_name(struct cpuinfo_x86 *c) 531struct cpu_dev *cpu_devs[X86_VENDOR_NUM] = {};
532
533static void __cpuinit default_init(struct cpuinfo_x86 *c)
534{
535 display_cacheinfo(c);
536}
537
538static struct cpu_dev __cpuinitdata default_cpu = {
539 .c_init = default_init,
540 .c_vendor = "Unknown",
541};
542static struct cpu_dev *this_cpu __cpuinitdata = &default_cpu;
543
544int __cpuinit get_model_name(struct cpuinfo_x86 *c)
541{ 545{
542 unsigned int *v; 546 unsigned int *v;
543 547
@@ -553,7 +557,7 @@ static int __cpuinit get_model_name(struct cpuinfo_x86 *c)
553} 557}
554 558
555 559
556static void __cpuinit display_cacheinfo(struct cpuinfo_x86 *c) 560void __cpuinit display_cacheinfo(struct cpuinfo_x86 *c)
557{ 561{
558 unsigned int n, dummy, eax, ebx, ecx, edx; 562 unsigned int n, dummy, eax, ebx, ecx, edx;
559 563
@@ -585,228 +589,6 @@ static void __cpuinit display_cacheinfo(struct cpuinfo_x86 *c)
585 } 589 }
586} 590}
587 591
588#ifdef CONFIG_NUMA
589static int __cpuinit nearby_node(int apicid)
590{
591 int i, node;
592
593 for (i = apicid - 1; i >= 0; i--) {
594 node = apicid_to_node[i];
595 if (node != NUMA_NO_NODE && node_online(node))
596 return node;
597 }
598 for (i = apicid + 1; i < MAX_LOCAL_APIC; i++) {
599 node = apicid_to_node[i];
600 if (node != NUMA_NO_NODE && node_online(node))
601 return node;
602 }
603 return first_node(node_online_map); /* Shouldn't happen */
604}
605#endif
606
607/*
608 * On a AMD dual core setup the lower bits of the APIC id distingush the cores.
609 * Assumes number of cores is a power of two.
610 */
611static void __cpuinit amd_detect_cmp(struct cpuinfo_x86 *c)
612{
613#ifdef CONFIG_SMP
614 unsigned bits;
615#ifdef CONFIG_NUMA
616 int cpu = smp_processor_id();
617 int node = 0;
618 unsigned apicid = hard_smp_processor_id();
619#endif
620 bits = c->x86_coreid_bits;
621
622 /* Low order bits define the core id (index of core in socket) */
623 c->cpu_core_id = c->initial_apicid & ((1 << bits)-1);
624 /* Convert the initial APIC ID into the socket ID */
625 c->phys_proc_id = c->initial_apicid >> bits;
626
627#ifdef CONFIG_NUMA
628 node = c->phys_proc_id;
629 if (apicid_to_node[apicid] != NUMA_NO_NODE)
630 node = apicid_to_node[apicid];
631 if (!node_online(node)) {
632 /* Two possibilities here:
633 - The CPU is missing memory and no node was created.
634 In that case try picking one from a nearby CPU
635 - The APIC IDs differ from the HyperTransport node IDs
636 which the K8 northbridge parsing fills in.
637 Assume they are all increased by a constant offset,
638 but in the same order as the HT nodeids.
639 If that doesn't result in a usable node fall back to the
640 path for the previous case. */
641
642 int ht_nodeid = c->initial_apicid;
643
644 if (ht_nodeid >= 0 &&
645 apicid_to_node[ht_nodeid] != NUMA_NO_NODE)
646 node = apicid_to_node[ht_nodeid];
647 /* Pick a nearby node */
648 if (!node_online(node))
649 node = nearby_node(apicid);
650 }
651 numa_set_node(cpu, node);
652
653 printk(KERN_INFO "CPU %d/%x -> Node %d\n", cpu, apicid, node);
654#endif
655#endif
656}
657
658static void __cpuinit early_init_amd_mc(struct cpuinfo_x86 *c)
659{
660#ifdef CONFIG_SMP
661 unsigned bits, ecx;
662
663 /* Multi core CPU? */
664 if (c->extended_cpuid_level < 0x80000008)
665 return;
666
667 ecx = cpuid_ecx(0x80000008);
668
669 c->x86_max_cores = (ecx & 0xff) + 1;
670
671 /* CPU telling us the core id bits shift? */
672 bits = (ecx >> 12) & 0xF;
673
674 /* Otherwise recompute */
675 if (bits == 0) {
676 while ((1 << bits) < c->x86_max_cores)
677 bits++;
678 }
679
680 c->x86_coreid_bits = bits;
681
682#endif
683}
684
685#define ENABLE_C1E_MASK 0x18000000
686#define CPUID_PROCESSOR_SIGNATURE 1
687#define CPUID_XFAM 0x0ff00000
688#define CPUID_XFAM_K8 0x00000000
689#define CPUID_XFAM_10H 0x00100000
690#define CPUID_XFAM_11H 0x00200000
691#define CPUID_XMOD 0x000f0000
692#define CPUID_XMOD_REV_F 0x00040000
693
694/* AMD systems with C1E don't have a working lAPIC timer. Check for that. */
695static __cpuinit int amd_apic_timer_broken(void)
696{
697 u32 lo, hi, eax = cpuid_eax(CPUID_PROCESSOR_SIGNATURE);
698
699 switch (eax & CPUID_XFAM) {
700 case CPUID_XFAM_K8:
701 if ((eax & CPUID_XMOD) < CPUID_XMOD_REV_F)
702 break;
703 case CPUID_XFAM_10H:
704 case CPUID_XFAM_11H:
705 rdmsr(MSR_K8_ENABLE_C1E, lo, hi);
706 if (lo & ENABLE_C1E_MASK)
707 return 1;
708 break;
709 default:
710 /* err on the side of caution */
711 return 1;
712 }
713 return 0;
714}
715
716static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
717{
718 early_init_amd_mc(c);
719
720 /* c->x86_power is 8000_0007 edx. Bit 8 is constant TSC */
721 if (c->x86_power & (1<<8))
722 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
723}
724
725static void __cpuinit init_amd(struct cpuinfo_x86 *c)
726{
727 unsigned level;
728
729#ifdef CONFIG_SMP
730 unsigned long value;
731
732 /*
733 * Disable TLB flush filter by setting HWCR.FFDIS on K8
734 * bit 6 of msr C001_0015
735 *
736 * Errata 63 for SH-B3 steppings
737 * Errata 122 for all steppings (F+ have it disabled by default)
738 */
739 if (c->x86 == 15) {
740 rdmsrl(MSR_K8_HWCR, value);
741 value |= 1 << 6;
742 wrmsrl(MSR_K8_HWCR, value);
743 }
744#endif
745
746 /* Bit 31 in normal CPUID used for nonstandard 3DNow ID;
747 3DNow is IDd by bit 31 in extended CPUID (1*32+31) anyway */
748 clear_cpu_cap(c, 0*32+31);
749
750 /* On C+ stepping K8 rep microcode works well for copy/memset */
751 level = cpuid_eax(1);
752 if (c->x86 == 15 && ((level >= 0x0f48 && level < 0x0f50) ||
753 level >= 0x0f58))
754 set_cpu_cap(c, X86_FEATURE_REP_GOOD);
755 if (c->x86 == 0x10 || c->x86 == 0x11)
756 set_cpu_cap(c, X86_FEATURE_REP_GOOD);
757
758 /* Enable workaround for FXSAVE leak */
759 if (c->x86 >= 6)
760 set_cpu_cap(c, X86_FEATURE_FXSAVE_LEAK);
761
762 level = get_model_name(c);
763 if (!level) {
764 switch (c->x86) {
765 case 15:
766 /* Should distinguish Models here, but this is only
767 a fallback anyways. */
768 strcpy(c->x86_model_id, "Hammer");
769 break;
770 }
771 }
772 display_cacheinfo(c);
773
774 /* Multi core CPU? */
775 if (c->extended_cpuid_level >= 0x80000008)
776 amd_detect_cmp(c);
777
778 if (c->extended_cpuid_level >= 0x80000006 &&
779 (cpuid_edx(0x80000006) & 0xf000))
780 num_cache_leaves = 4;
781 else
782 num_cache_leaves = 3;
783
784 if (c->x86 == 0xf || c->x86 == 0x10 || c->x86 == 0x11)
785 set_cpu_cap(c, X86_FEATURE_K8);
786
787 /* MFENCE stops RDTSC speculation */
788 set_cpu_cap(c, X86_FEATURE_MFENCE_RDTSC);
789
790 if (c->x86 == 0x10)
791 fam10h_check_enable_mmcfg();
792
793 if (amd_apic_timer_broken())
794 disable_apic_timer = 1;
795
796 if (c == &boot_cpu_data && c->x86 >= 0xf && c->x86 <= 0x11) {
797 unsigned long long tseg;
798
799 /*
800 * Split up direct mapping around the TSEG SMM area.
801 * Don't do it for gbpages because there seems very little
802 * benefit in doing so.
803 */
804 if (!rdmsrl_safe(MSR_K8_TSEG_ADDR, &tseg) &&
805 (tseg >> PMD_SHIFT) < (max_pfn_mapped >> (PMD_SHIFT-PAGE_SHIFT)))
806 set_memory_4k((unsigned long)__va(tseg), 1);
807 }
808}
809
810void __cpuinit detect_ht(struct cpuinfo_x86 *c) 592void __cpuinit detect_ht(struct cpuinfo_x86 *c)
811{ 593{
812#ifdef CONFIG_SMP 594#ifdef CONFIG_SMP
@@ -857,135 +639,59 @@ out:
857#endif 639#endif
858} 640}
859 641
860/* 642static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c)
861 * find out the number of processor cores on the die
862 */
863static int __cpuinit intel_num_cpu_cores(struct cpuinfo_x86 *c)
864{
865 unsigned int eax, t;
866
867 if (c->cpuid_level < 4)
868 return 1;
869
870 cpuid_count(4, 0, &eax, &t, &t, &t);
871
872 if (eax & 0x1f)
873 return ((eax >> 26) + 1);
874 else
875 return 1;
876}
877
878static void __cpuinit srat_detect_node(void)
879{
880#ifdef CONFIG_NUMA
881 unsigned node;
882 int cpu = smp_processor_id();
883 int apicid = hard_smp_processor_id();
884
885 /* Don't do the funky fallback heuristics the AMD version employs
886 for now. */
887 node = apicid_to_node[apicid];
888 if (node == NUMA_NO_NODE || !node_online(node))
889 node = first_node(node_online_map);
890 numa_set_node(cpu, node);
891
892 printk(KERN_INFO "CPU %d/%x -> Node %d\n", cpu, apicid, node);
893#endif
894}
895
896static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
897{
898 if ((c->x86 == 0xf && c->x86_model >= 0x03) ||
899 (c->x86 == 0x6 && c->x86_model >= 0x0e))
900 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
901}
902
903static void __cpuinit init_intel(struct cpuinfo_x86 *c)
904{ 643{
905 /* Cache sizes */ 644 char *v = c->x86_vendor_id;
906 unsigned n; 645 int i;
907 646 static int printed;
908 init_intel_cacheinfo(c); 647
909 if (c->cpuid_level > 9) { 648 for (i = 0; i < X86_VENDOR_NUM; i++) {
910 unsigned eax = cpuid_eax(10); 649 if (cpu_devs[i]) {
911 /* Check for version and the number of counters */ 650 if (!strcmp(v, cpu_devs[i]->c_ident[0]) ||
912 if ((eax & 0xff) && (((eax>>8) & 0xff) > 1)) 651 (cpu_devs[i]->c_ident[1] &&
913 set_cpu_cap(c, X86_FEATURE_ARCH_PERFMON); 652 !strcmp(v, cpu_devs[i]->c_ident[1]))) {
653 c->x86_vendor = i;
654 this_cpu = cpu_devs[i];
655 return;
656 }
657 }
914 } 658 }
915 659 if (!printed) {
916 if (cpu_has_ds) { 660 printed++;
917 unsigned int l1, l2; 661 printk(KERN_ERR "CPU: Vendor unknown, using generic init.\n");
918 rdmsr(MSR_IA32_MISC_ENABLE, l1, l2); 662 printk(KERN_ERR "CPU: Your system may be unstable.\n");
919 if (!(l1 & (1<<11)))
920 set_cpu_cap(c, X86_FEATURE_BTS);
921 if (!(l1 & (1<<12)))
922 set_cpu_cap(c, X86_FEATURE_PEBS);
923 } 663 }
924 664 c->x86_vendor = X86_VENDOR_UNKNOWN;
925
926 if (cpu_has_bts)
927 ds_init_intel(c);
928
929 n = c->extended_cpuid_level;
930 if (n >= 0x80000008) {
931 unsigned eax = cpuid_eax(0x80000008);
932 c->x86_virt_bits = (eax >> 8) & 0xff;
933 c->x86_phys_bits = eax & 0xff;
934 /* CPUID workaround for Intel 0F34 CPU */
935 if (c->x86_vendor == X86_VENDOR_INTEL &&
936 c->x86 == 0xF && c->x86_model == 0x3 &&
937 c->x86_mask == 0x4)
938 c->x86_phys_bits = 36;
939 }
940
941 if (c->x86 == 15)
942 c->x86_cache_alignment = c->x86_clflush_size * 2;
943 if (c->x86 == 6)
944 set_cpu_cap(c, X86_FEATURE_REP_GOOD);
945 set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
946 c->x86_max_cores = intel_num_cpu_cores(c);
947
948 srat_detect_node();
949}
950
951static void __cpuinit early_init_centaur(struct cpuinfo_x86 *c)
952{
953 if (c->x86 == 0x6 && c->x86_model >= 0xf)
954 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
955} 665}
956 666
957static void __cpuinit init_centaur(struct cpuinfo_x86 *c) 667static void __init early_cpu_support_print(void)
958{ 668{
959 /* Cache sizes */ 669 int i,j;
960 unsigned n; 670 struct cpu_dev *cpu_devx;
961 671
962 n = c->extended_cpuid_level; 672 printk("KERNEL supported cpus:\n");
963 if (n >= 0x80000008) { 673 for (i = 0; i < X86_VENDOR_NUM; i++) {
964 unsigned eax = cpuid_eax(0x80000008); 674 cpu_devx = cpu_devs[i];
965 c->x86_virt_bits = (eax >> 8) & 0xff; 675 if (!cpu_devx)
966 c->x86_phys_bits = eax & 0xff; 676 continue;
967 } 677 for (j = 0; j < 2; j++) {
968 678 if (!cpu_devx->c_ident[j])
969 if (c->x86 == 0x6 && c->x86_model >= 0xf) { 679 continue;
970 c->x86_cache_alignment = c->x86_clflush_size * 2; 680 printk(" %s %s\n", cpu_devx->c_vendor,
971 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); 681 cpu_devx->c_ident[j]);
972 set_cpu_cap(c, X86_FEATURE_REP_GOOD); 682 }
973 } 683 }
974 set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
975} 684}
976 685
977static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c) 686static void __init early_cpu_init(void)
978{ 687{
979 char *v = c->x86_vendor_id; 688 struct cpu_vendor_dev *cvdev;
980 689
981 if (!strcmp(v, "AuthenticAMD")) 690 for (cvdev = __x86cpuvendor_start ;
982 c->x86_vendor = X86_VENDOR_AMD; 691 cvdev < __x86cpuvendor_end ;
983 else if (!strcmp(v, "GenuineIntel")) 692 cvdev++)
984 c->x86_vendor = X86_VENDOR_INTEL; 693 cpu_devs[cvdev->vendor] = cvdev->cpu_dev;
985 else if (!strcmp(v, "CentaurHauls")) 694 early_cpu_support_print();
986 c->x86_vendor = X86_VENDOR_CENTAUR;
987 else
988 c->x86_vendor = X86_VENDOR_UNKNOWN;
989} 695}
990 696
991/* Do some early cpuid on the boot CPU to get some parameter that are 697/* Do some early cpuid on the boot CPU to get some parameter that are
@@ -1066,17 +772,9 @@ static void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c)
1066 if (c->extended_cpuid_level >= 0x80000007) 772 if (c->extended_cpuid_level >= 0x80000007)
1067 c->x86_power = cpuid_edx(0x80000007); 773 c->x86_power = cpuid_edx(0x80000007);
1068 774
1069 switch (c->x86_vendor) { 775 if (c->x86_vendor != X86_VENDOR_UNKNOWN &&
1070 case X86_VENDOR_AMD: 776 cpu_devs[c->x86_vendor]->c_early_init)
1071 early_init_amd(c); 777 cpu_devs[c->x86_vendor]->c_early_init(c);
1072 break;
1073 case X86_VENDOR_INTEL:
1074 early_init_intel(c);
1075 break;
1076 case X86_VENDOR_CENTAUR:
1077 early_init_centaur(c);
1078 break;
1079 }
1080 778
1081 validate_pat_support(c); 779 validate_pat_support(c);
1082} 780}
@@ -1104,24 +802,8 @@ void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
1104 * At the end of this section, c->x86_capability better 802 * At the end of this section, c->x86_capability better
1105 * indicate the features this CPU genuinely supports! 803 * indicate the features this CPU genuinely supports!
1106 */ 804 */
1107 switch (c->x86_vendor) { 805 if (this_cpu->c_init)
1108 case X86_VENDOR_AMD: 806 this_cpu->c_init(c);
1109 init_amd(c);
1110 break;
1111
1112 case X86_VENDOR_INTEL:
1113 init_intel(c);
1114 break;
1115
1116 case X86_VENDOR_CENTAUR:
1117 init_centaur(c);
1118 break;
1119
1120 case X86_VENDOR_UNKNOWN:
1121 default:
1122 display_cacheinfo(c);
1123 break;
1124 }
1125 807
1126 detect_ht(c); 808 detect_ht(c);
1127 809
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 56078d61c793..f2b666756299 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -59,7 +59,6 @@
59#include <asm/pgtable.h> 59#include <asm/pgtable.h>
60#include <asm/tlbflush.h> 60#include <asm/tlbflush.h>
61#include <asm/mtrr.h> 61#include <asm/mtrr.h>
62#include <asm/nmi.h>
63#include <asm/vmi.h> 62#include <asm/vmi.h>
64#include <asm/genapic.h> 63#include <asm/genapic.h>
65#include <linux/mc146818rtc.h> 64#include <linux/mc146818rtc.h>
@@ -996,7 +995,6 @@ do_rest:
996#endif 995#endif
997 cpu_clear(cpu, cpu_callout_map); /* was set by do_boot_cpu() */ 996 cpu_clear(cpu, cpu_callout_map); /* was set by do_boot_cpu() */
998 cpu_clear(cpu, cpu_initialized); /* was set by cpu_init() */ 997 cpu_clear(cpu, cpu_initialized); /* was set by cpu_init() */
999 cpu_clear(cpu, cpu_possible_map);
1000 cpu_clear(cpu, cpu_present_map); 998 cpu_clear(cpu, cpu_present_map);
1001 per_cpu(x86_cpu_to_apicid, cpu) = BAD_APICID; 999 per_cpu(x86_cpu_to_apicid, cpu) = BAD_APICID;
1002 } 1000 }
@@ -1158,9 +1156,11 @@ static int __init smp_sanity_check(unsigned max_cpus)
1158 * If SMP should be disabled, then really disable it! 1156 * If SMP should be disabled, then really disable it!
1159 */ 1157 */
1160 if (!max_cpus) { 1158 if (!max_cpus) {
1161 printk(KERN_INFO "SMP mode deactivated," 1159 printk(KERN_INFO "SMP mode deactivated.\n");
1162 "forcing use of dummy APIC emulation.\n");
1163 smpboot_clear_io_apic(); 1160 smpboot_clear_io_apic();
1161
1162 localise_nmi_watchdog();
1163
1164#ifdef CONFIG_X86_32 1164#ifdef CONFIG_X86_32
1165 connect_bsp_APIC(); 1165 connect_bsp_APIC();
1166#endif 1166#endif
diff --git a/arch/x86/kernel/sys_i386_32.c b/arch/x86/kernel/sys_i386_32.c
index d2ab52cc1d6b..7066cb855a60 100644
--- a/arch/x86/kernel/sys_i386_32.c
+++ b/arch/x86/kernel/sys_i386_32.c
@@ -19,8 +19,8 @@
19#include <linux/utsname.h> 19#include <linux/utsname.h>
20#include <linux/ipc.h> 20#include <linux/ipc.h>
21 21
22#include <asm/uaccess.h> 22#include <linux/uaccess.h>
23#include <asm/unistd.h> 23#include <linux/unistd.h>
24 24
25asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, 25asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
26 unsigned long prot, unsigned long flags, 26 unsigned long prot, unsigned long flags,
@@ -103,7 +103,7 @@ asmlinkage int old_select(struct sel_arg_struct __user *arg)
103 * 103 *
104 * This is really horribly ugly. 104 * This is really horribly ugly.
105 */ 105 */
106asmlinkage int sys_ipc (uint call, int first, int second, 106asmlinkage int sys_ipc(uint call, int first, int second,
107 int third, void __user *ptr, long fifth) 107 int third, void __user *ptr, long fifth)
108{ 108{
109 int version, ret; 109 int version, ret;
@@ -113,24 +113,24 @@ asmlinkage int sys_ipc (uint call, int first, int second,
113 113
114 switch (call) { 114 switch (call) {
115 case SEMOP: 115 case SEMOP:
116 return sys_semtimedop (first, (struct sembuf __user *)ptr, second, NULL); 116 return sys_semtimedop(first, (struct sembuf __user *)ptr, second, NULL);
117 case SEMTIMEDOP: 117 case SEMTIMEDOP:
118 return sys_semtimedop(first, (struct sembuf __user *)ptr, second, 118 return sys_semtimedop(first, (struct sembuf __user *)ptr, second,
119 (const struct timespec __user *)fifth); 119 (const struct timespec __user *)fifth);
120 120
121 case SEMGET: 121 case SEMGET:
122 return sys_semget (first, second, third); 122 return sys_semget(first, second, third);
123 case SEMCTL: { 123 case SEMCTL: {
124 union semun fourth; 124 union semun fourth;
125 if (!ptr) 125 if (!ptr)
126 return -EINVAL; 126 return -EINVAL;
127 if (get_user(fourth.__pad, (void __user * __user *) ptr)) 127 if (get_user(fourth.__pad, (void __user * __user *) ptr))
128 return -EFAULT; 128 return -EFAULT;
129 return sys_semctl (first, second, third, fourth); 129 return sys_semctl(first, second, third, fourth);
130 } 130 }
131 131
132 case MSGSND: 132 case MSGSND:
133 return sys_msgsnd (first, (struct msgbuf __user *) ptr, 133 return sys_msgsnd(first, (struct msgbuf __user *) ptr,
134 second, third); 134 second, third);
135 case MSGRCV: 135 case MSGRCV:
136 switch (version) { 136 switch (version) {
@@ -138,45 +138,45 @@ asmlinkage int sys_ipc (uint call, int first, int second,
138 struct ipc_kludge tmp; 138 struct ipc_kludge tmp;
139 if (!ptr) 139 if (!ptr)
140 return -EINVAL; 140 return -EINVAL;
141 141
142 if (copy_from_user(&tmp, 142 if (copy_from_user(&tmp,
143 (struct ipc_kludge __user *) ptr, 143 (struct ipc_kludge __user *) ptr,
144 sizeof (tmp))) 144 sizeof(tmp)))
145 return -EFAULT; 145 return -EFAULT;
146 return sys_msgrcv (first, tmp.msgp, second, 146 return sys_msgrcv(first, tmp.msgp, second,
147 tmp.msgtyp, third); 147 tmp.msgtyp, third);
148 } 148 }
149 default: 149 default:
150 return sys_msgrcv (first, 150 return sys_msgrcv(first,
151 (struct msgbuf __user *) ptr, 151 (struct msgbuf __user *) ptr,
152 second, fifth, third); 152 second, fifth, third);
153 } 153 }
154 case MSGGET: 154 case MSGGET:
155 return sys_msgget ((key_t) first, second); 155 return sys_msgget((key_t) first, second);
156 case MSGCTL: 156 case MSGCTL:
157 return sys_msgctl (first, second, (struct msqid_ds __user *) ptr); 157 return sys_msgctl(first, second, (struct msqid_ds __user *) ptr);
158 158
159 case SHMAT: 159 case SHMAT:
160 switch (version) { 160 switch (version) {
161 default: { 161 default: {
162 ulong raddr; 162 ulong raddr;
163 ret = do_shmat (first, (char __user *) ptr, second, &raddr); 163 ret = do_shmat(first, (char __user *) ptr, second, &raddr);
164 if (ret) 164 if (ret)
165 return ret; 165 return ret;
166 return put_user (raddr, (ulong __user *) third); 166 return put_user(raddr, (ulong __user *) third);
167 } 167 }
168 case 1: /* iBCS2 emulator entry point */ 168 case 1: /* iBCS2 emulator entry point */
169 if (!segment_eq(get_fs(), get_ds())) 169 if (!segment_eq(get_fs(), get_ds()))
170 return -EINVAL; 170 return -EINVAL;
171 /* The "(ulong *) third" is valid _only_ because of the kernel segment thing */ 171 /* The "(ulong *) third" is valid _only_ because of the kernel segment thing */
172 return do_shmat (first, (char __user *) ptr, second, (ulong *) third); 172 return do_shmat(first, (char __user *) ptr, second, (ulong *) third);
173 } 173 }
174 case SHMDT: 174 case SHMDT:
175 return sys_shmdt ((char __user *)ptr); 175 return sys_shmdt((char __user *)ptr);
176 case SHMGET: 176 case SHMGET:
177 return sys_shmget (first, second, third); 177 return sys_shmget(first, second, third);
178 case SHMCTL: 178 case SHMCTL:
179 return sys_shmctl (first, second, 179 return sys_shmctl(first, second,
180 (struct shmid_ds __user *) ptr); 180 (struct shmid_ds __user *) ptr);
181 default: 181 default:
182 return -ENOSYS; 182 return -ENOSYS;
@@ -186,28 +186,28 @@ asmlinkage int sys_ipc (uint call, int first, int second,
186/* 186/*
187 * Old cruft 187 * Old cruft
188 */ 188 */
189asmlinkage int sys_uname(struct old_utsname __user * name) 189asmlinkage int sys_uname(struct old_utsname __user *name)
190{ 190{
191 int err; 191 int err;
192 if (!name) 192 if (!name)
193 return -EFAULT; 193 return -EFAULT;
194 down_read(&uts_sem); 194 down_read(&uts_sem);
195 err = copy_to_user(name, utsname(), sizeof (*name)); 195 err = copy_to_user(name, utsname(), sizeof(*name));
196 up_read(&uts_sem); 196 up_read(&uts_sem);
197 return err?-EFAULT:0; 197 return err? -EFAULT:0;
198} 198}
199 199
200asmlinkage int sys_olduname(struct oldold_utsname __user * name) 200asmlinkage int sys_olduname(struct oldold_utsname __user *name)
201{ 201{
202 int error; 202 int error;
203 203
204 if (!name) 204 if (!name)
205 return -EFAULT; 205 return -EFAULT;
206 if (!access_ok(VERIFY_WRITE,name,sizeof(struct oldold_utsname))) 206 if (!access_ok(VERIFY_WRITE, name, sizeof(struct oldold_utsname)))
207 return -EFAULT; 207 return -EFAULT;
208 208
209 down_read(&uts_sem); 209 down_read(&uts_sem);
210 210
211 error = __copy_to_user(&name->sysname, &utsname()->sysname, 211 error = __copy_to_user(&name->sysname, &utsname()->sysname,
212 __OLD_UTS_LEN); 212 __OLD_UTS_LEN);
213 error |= __put_user(0, name->sysname + __OLD_UTS_LEN); 213 error |= __put_user(0, name->sysname + __OLD_UTS_LEN);
@@ -223,9 +223,9 @@ asmlinkage int sys_olduname(struct oldold_utsname __user * name)
223 error |= __copy_to_user(&name->machine, &utsname()->machine, 223 error |= __copy_to_user(&name->machine, &utsname()->machine,
224 __OLD_UTS_LEN); 224 __OLD_UTS_LEN);
225 error |= __put_user(0, name->machine + __OLD_UTS_LEN); 225 error |= __put_user(0, name->machine + __OLD_UTS_LEN);
226 226
227 up_read(&uts_sem); 227 up_read(&uts_sem);
228 228
229 error = error ? -EFAULT : 0; 229 error = error ? -EFAULT : 0;
230 230
231 return error; 231 return error;
@@ -241,6 +241,6 @@ int kernel_execve(const char *filename, char *const argv[], char *const envp[])
241 long __res; 241 long __res;
242 asm volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" 242 asm volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx"
243 : "=a" (__res) 243 : "=a" (__res)
244 : "0" (__NR_execve),"ri" (filename),"c" (argv), "d" (envp) : "memory"); 244 : "0" (__NR_execve), "ri" (filename), "c" (argv), "d" (envp) : "memory");
245 return __res; 245 return __res;
246} 246}
diff --git a/arch/x86/kernel/time_32.c b/arch/x86/kernel/time_32.c
index 2ff21f398934..5f29f12da50c 100644
--- a/arch/x86/kernel/time_32.c
+++ b/arch/x86/kernel/time_32.c
@@ -84,8 +84,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id)
84 if (timer_ack) { 84 if (timer_ack) {
85 /* 85 /*
86 * Subtle, when I/O APICs are used we have to ack timer IRQ 86 * Subtle, when I/O APICs are used we have to ack timer IRQ
87 * manually to reset the IRR bit for do_slow_gettimeoffset(). 87 * manually to deassert NMI lines for the watchdog if run
88 * This will also deassert NMI lines for the watchdog if run
89 * on an 82489DX-based system. 88 * on an 82489DX-based system.
90 */ 89 */
91 spin_lock(&i8259A_lock); 90 spin_lock(&i8259A_lock);
diff --git a/arch/x86/kernel/traps_64.c b/arch/x86/kernel/traps_64.c
index adff76ea97c4..ec6d3b2130c4 100644
--- a/arch/x86/kernel/traps_64.c
+++ b/arch/x86/kernel/traps_64.c
@@ -71,7 +71,6 @@ asmlinkage void general_protection(void);
71asmlinkage void page_fault(void); 71asmlinkage void page_fault(void);
72asmlinkage void coprocessor_error(void); 72asmlinkage void coprocessor_error(void);
73asmlinkage void simd_coprocessor_error(void); 73asmlinkage void simd_coprocessor_error(void);
74asmlinkage void reserved(void);
75asmlinkage void alignment_check(void); 74asmlinkage void alignment_check(void);
76asmlinkage void machine_check(void); 75asmlinkage void machine_check(void);
77asmlinkage void spurious_interrupt_bug(void); 76asmlinkage void spurious_interrupt_bug(void);
@@ -702,12 +701,10 @@ DO_ERROR_INFO( 0, SIGFPE, "divide error", divide_error, FPE_INTDIV, regs->ip)
702DO_ERROR( 4, SIGSEGV, "overflow", overflow) 701DO_ERROR( 4, SIGSEGV, "overflow", overflow)
703DO_ERROR( 5, SIGSEGV, "bounds", bounds) 702DO_ERROR( 5, SIGSEGV, "bounds", bounds)
704DO_ERROR_INFO( 6, SIGILL, "invalid opcode", invalid_op, ILL_ILLOPN, regs->ip) 703DO_ERROR_INFO( 6, SIGILL, "invalid opcode", invalid_op, ILL_ILLOPN, regs->ip)
705DO_ERROR( 7, SIGSEGV, "device not available", device_not_available)
706DO_ERROR( 9, SIGFPE, "coprocessor segment overrun", coprocessor_segment_overrun) 704DO_ERROR( 9, SIGFPE, "coprocessor segment overrun", coprocessor_segment_overrun)
707DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS) 705DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS)
708DO_ERROR(11, SIGBUS, "segment not present", segment_not_present) 706DO_ERROR(11, SIGBUS, "segment not present", segment_not_present)
709DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0) 707DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0)
710DO_ERROR(18, SIGSEGV, "reserved", reserved)
711 708
712/* Runs on IST stack */ 709/* Runs on IST stack */
713asmlinkage void do_stack_segment(struct pt_regs *regs, long error_code) 710asmlinkage void do_stack_segment(struct pt_regs *regs, long error_code)
diff --git a/arch/x86/kernel/tsc_32.c b/arch/x86/kernel/tsc_32.c
index 068759db63dd..774a5a83c296 100644
--- a/arch/x86/kernel/tsc_32.c
+++ b/arch/x86/kernel/tsc_32.c
@@ -14,7 +14,10 @@
14 14
15#include "mach_timer.h" 15#include "mach_timer.h"
16 16
17static int tsc_disabled; 17/* native_sched_clock() is called before tsc_init(), so
18 we must start with the TSC soft disabled to prevent
19 erroneous rdtsc usage on !cpu_has_tsc processors */
20static int tsc_disabled = -1;
18 21
19/* 22/*
20 * On some systems the TSC frequency does not 23 * On some systems the TSC frequency does not
@@ -283,7 +286,6 @@ core_initcall(cpufreq_tsc);
283 286
284/* clock source code */ 287/* clock source code */
285 288
286static unsigned long current_tsc_khz;
287static struct clocksource clocksource_tsc; 289static struct clocksource clocksource_tsc;
288 290
289/* 291/*
@@ -402,25 +404,20 @@ void __init tsc_init(void)
402{ 404{
403 int cpu; 405 int cpu;
404 406
405 if (!cpu_has_tsc || tsc_disabled) { 407 if (!cpu_has_tsc || tsc_disabled > 0)
406 /* Disable the TSC in case of !cpu_has_tsc */
407 tsc_disabled = 1;
408 return; 408 return;
409 }
410 409
411 cpu_khz = calculate_cpu_khz(); 410 cpu_khz = calculate_cpu_khz();
412 tsc_khz = cpu_khz; 411 tsc_khz = cpu_khz;
413 412
414 if (!cpu_khz) { 413 if (!cpu_khz) {
415 mark_tsc_unstable("could not calculate TSC khz"); 414 mark_tsc_unstable("could not calculate TSC khz");
416 /*
417 * We need to disable the TSC completely in this case
418 * to prevent sched_clock() from using it.
419 */
420 tsc_disabled = 1;
421 return; 415 return;
422 } 416 }
423 417
418 /* now allow native_sched_clock() to use rdtsc */
419 tsc_disabled = 0;
420
424 printk("Detected %lu.%03lu MHz processor.\n", 421 printk("Detected %lu.%03lu MHz processor.\n",
425 (unsigned long)cpu_khz / 1000, 422 (unsigned long)cpu_khz / 1000,
426 (unsigned long)cpu_khz % 1000); 423 (unsigned long)cpu_khz % 1000);
@@ -441,9 +438,8 @@ void __init tsc_init(void)
441 438
442 unsynchronized_tsc(); 439 unsynchronized_tsc();
443 check_geode_tsc_reliable(); 440 check_geode_tsc_reliable();
444 current_tsc_khz = tsc_khz; 441 clocksource_tsc.mult = clocksource_khz2mult(tsc_khz,
445 clocksource_tsc.mult = clocksource_khz2mult(current_tsc_khz, 442 clocksource_tsc.shift);
446 clocksource_tsc.shift);
447 /* lower the rating if we already know its unstable: */ 443 /* lower the rating if we already know its unstable: */
448 if (check_tsc_unstable()) { 444 if (check_tsc_unstable()) {
449 clocksource_tsc.rating = 0; 445 clocksource_tsc.rating = 0;
diff --git a/arch/x86/kernel/tsc_64.c b/arch/x86/kernel/tsc_64.c
index 1784b8077a12..9898fb01edfd 100644
--- a/arch/x86/kernel/tsc_64.c
+++ b/arch/x86/kernel/tsc_64.c
@@ -242,7 +242,7 @@ void __init tsc_calibrate(void)
242 if (hpet) { 242 if (hpet) {
243 printk(KERN_INFO "TSC calibrated against HPET\n"); 243 printk(KERN_INFO "TSC calibrated against HPET\n");
244 if (hpet2 < hpet1) 244 if (hpet2 < hpet1)
245 hpet2 += 0x100000000; 245 hpet2 += 0x100000000UL;
246 hpet2 -= hpet1; 246 hpet2 -= hpet1;
247 tsc1 = (hpet2 * hpet_readl(HPET_PERIOD)) / 1000000; 247 tsc1 = (hpet2 * hpet_readl(HPET_PERIOD)) / 1000000;
248 } else { 248 } else {
diff --git a/arch/x86/kernel/vmlinux_32.lds.S b/arch/x86/kernel/vmlinux_32.lds.S
index ce5ed083a1e9..2674f5796275 100644
--- a/arch/x86/kernel/vmlinux_32.lds.S
+++ b/arch/x86/kernel/vmlinux_32.lds.S
@@ -60,13 +60,6 @@ SECTIONS
60 60
61 BUG_TABLE :text 61 BUG_TABLE :text
62 62
63 . = ALIGN(4);
64 .tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) {
65 __tracedata_start = .;
66 *(.tracedata)
67 __tracedata_end = .;
68 }
69
70 RODATA 63 RODATA
71 64
72 /* writeable */ 65 /* writeable */
diff --git a/arch/x86/kernel/vmlinux_64.lds.S b/arch/x86/kernel/vmlinux_64.lds.S
index fad3674b06a5..fd246e22fe6b 100644
--- a/arch/x86/kernel/vmlinux_64.lds.S
+++ b/arch/x86/kernel/vmlinux_64.lds.S
@@ -53,13 +53,6 @@ SECTIONS
53 53
54 RODATA 54 RODATA
55 55
56 . = ALIGN(4);
57 .tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) {
58 __tracedata_start = .;
59 *(.tracedata)
60 __tracedata_end = .;
61 }
62
63 . = ALIGN(PAGE_SIZE); /* Align data segment to page size boundary */ 56 . = ALIGN(PAGE_SIZE); /* Align data segment to page size boundary */
64 /* Data */ 57 /* Data */
65 .data : AT(ADDR(.data) - LOAD_OFFSET) { 58 .data : AT(ADDR(.data) - LOAD_OFFSET) {
@@ -177,6 +170,7 @@ SECTIONS
177 *(.con_initcall.init) 170 *(.con_initcall.init)
178 } 171 }
179 __con_initcall_end = .; 172 __con_initcall_end = .;
173 . = ALIGN(16);
180 __x86cpuvendor_start = .; 174 __x86cpuvendor_start = .;
181 .x86cpuvendor.init : AT(ADDR(.x86cpuvendor.init) - LOAD_OFFSET) { 175 .x86cpuvendor.init : AT(ADDR(.x86cpuvendor.init) - LOAD_OFFSET) {
182 *(.x86cpuvendor.init) 176 *(.x86cpuvendor.init)
diff --git a/arch/x86/kernel/vsmp_64.c b/arch/x86/kernel/vsmp_64.c
index ba8c0b75ab0a..0c029e8959c7 100644
--- a/arch/x86/kernel/vsmp_64.c
+++ b/arch/x86/kernel/vsmp_64.c
@@ -15,9 +15,12 @@
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/pci_ids.h> 16#include <linux/pci_ids.h>
17#include <linux/pci_regs.h> 17#include <linux/pci_regs.h>
18
19#include <asm/apic.h>
18#include <asm/pci-direct.h> 20#include <asm/pci-direct.h>
19#include <asm/io.h> 21#include <asm/io.h>
20#include <asm/paravirt.h> 22#include <asm/paravirt.h>
23#include <asm/setup.h>
21 24
22#if defined CONFIG_PCI && defined CONFIG_PARAVIRT 25#if defined CONFIG_PCI && defined CONFIG_PARAVIRT
23/* 26/*
diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c
index f2f5d260874e..3829aa7b663f 100644
--- a/arch/x86/kvm/i8254.c
+++ b/arch/x86/kvm/i8254.c
@@ -200,9 +200,12 @@ int __pit_timer_fn(struct kvm_kpit_state *ps)
200 200
201 atomic_inc(&pt->pending); 201 atomic_inc(&pt->pending);
202 smp_mb__after_atomic_inc(); 202 smp_mb__after_atomic_inc();
203 if (vcpu0 && waitqueue_active(&vcpu0->wq)) { 203 if (vcpu0) {
204 vcpu0->arch.mp_state = KVM_MP_STATE_RUNNABLE; 204 set_bit(KVM_REQ_PENDING_TIMER, &vcpu0->requests);
205 wake_up_interruptible(&vcpu0->wq); 205 if (waitqueue_active(&vcpu0->wq)) {
206 vcpu0->arch.mp_state = KVM_MP_STATE_RUNNABLE;
207 wake_up_interruptible(&vcpu0->wq);
208 }
206 } 209 }
207 210
208 pt->timer.expires = ktime_add_ns(pt->timer.expires, pt->period); 211 pt->timer.expires = ktime_add_ns(pt->timer.expires, pt->period);
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index c297c50eba63..ebc03f5ae162 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -940,6 +940,7 @@ static int __apic_timer_fn(struct kvm_lapic *apic)
940 wait_queue_head_t *q = &apic->vcpu->wq; 940 wait_queue_head_t *q = &apic->vcpu->wq;
941 941
942 atomic_inc(&apic->timer.pending); 942 atomic_inc(&apic->timer.pending);
943 set_bit(KVM_REQ_PENDING_TIMER, &apic->vcpu->requests);
943 if (waitqueue_active(q)) { 944 if (waitqueue_active(q)) {
944 apic->vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE; 945 apic->vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE;
945 wake_up_interruptible(q); 946 wake_up_interruptible(q);
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index ee3f53098f0c..7e7c3969f7a2 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -640,6 +640,7 @@ static void rmap_write_protect(struct kvm *kvm, u64 gfn)
640 rmap_remove(kvm, spte); 640 rmap_remove(kvm, spte);
641 --kvm->stat.lpages; 641 --kvm->stat.lpages;
642 set_shadow_pte(spte, shadow_trap_nonpresent_pte); 642 set_shadow_pte(spte, shadow_trap_nonpresent_pte);
643 spte = NULL;
643 write_protected = 1; 644 write_protected = 1;
644 } 645 }
645 spte = rmap_next(kvm, rmapp, spte); 646 spte = rmap_next(kvm, rmapp, spte);
@@ -1082,10 +1083,6 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte,
1082 struct kvm_mmu_page *shadow; 1083 struct kvm_mmu_page *shadow;
1083 1084
1084 spte |= PT_WRITABLE_MASK; 1085 spte |= PT_WRITABLE_MASK;
1085 if (user_fault) {
1086 mmu_unshadow(vcpu->kvm, gfn);
1087 goto unshadowed;
1088 }
1089 1086
1090 shadow = kvm_mmu_lookup_page(vcpu->kvm, gfn); 1087 shadow = kvm_mmu_lookup_page(vcpu->kvm, gfn);
1091 if (shadow || 1088 if (shadow ||
@@ -1102,8 +1099,6 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte,
1102 } 1099 }
1103 } 1100 }
1104 1101
1105unshadowed:
1106
1107 if (pte_access & ACC_WRITE_MASK) 1102 if (pte_access & ACC_WRITE_MASK)
1108 mark_page_dirty(vcpu->kvm, gfn); 1103 mark_page_dirty(vcpu->kvm, gfn);
1109 1104
@@ -1580,11 +1575,13 @@ static void mmu_pte_write_new_pte(struct kvm_vcpu *vcpu,
1580 u64 *spte, 1575 u64 *spte,
1581 const void *new) 1576 const void *new)
1582{ 1577{
1583 if ((sp->role.level != PT_PAGE_TABLE_LEVEL) 1578 if (sp->role.level != PT_PAGE_TABLE_LEVEL) {
1584 && !vcpu->arch.update_pte.largepage) { 1579 if (!vcpu->arch.update_pte.largepage ||
1585 ++vcpu->kvm->stat.mmu_pde_zapped; 1580 sp->role.glevels == PT32_ROOT_LEVEL) {
1586 return; 1581 ++vcpu->kvm->stat.mmu_pde_zapped;
1587 } 1582 return;
1583 }
1584 }
1588 1585
1589 ++vcpu->kvm->stat.mmu_pte_updated; 1586 ++vcpu->kvm->stat.mmu_pte_updated;
1590 if (sp->role.glevels == PT32_ROOT_LEVEL) 1587 if (sp->role.glevels == PT32_ROOT_LEVEL)
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 02efbe75f317..540e95179074 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -566,7 +566,7 @@ static void vmx_save_host_state(struct kvm_vcpu *vcpu)
566 load_transition_efer(vmx); 566 load_transition_efer(vmx);
567} 567}
568 568
569static void vmx_load_host_state(struct vcpu_vmx *vmx) 569static void __vmx_load_host_state(struct vcpu_vmx *vmx)
570{ 570{
571 unsigned long flags; 571 unsigned long flags;
572 572
@@ -596,6 +596,13 @@ static void vmx_load_host_state(struct vcpu_vmx *vmx)
596 reload_host_efer(vmx); 596 reload_host_efer(vmx);
597} 597}
598 598
599static void vmx_load_host_state(struct vcpu_vmx *vmx)
600{
601 preempt_disable();
602 __vmx_load_host_state(vmx);
603 preempt_enable();
604}
605
599/* 606/*
600 * Switches to specified vcpu, until a matching vcpu_put(), but assumes 607 * Switches to specified vcpu, until a matching vcpu_put(), but assumes
601 * vcpu mutex is already taken. 608 * vcpu mutex is already taken.
@@ -654,7 +661,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
654 661
655static void vmx_vcpu_put(struct kvm_vcpu *vcpu) 662static void vmx_vcpu_put(struct kvm_vcpu *vcpu)
656{ 663{
657 vmx_load_host_state(to_vmx(vcpu)); 664 __vmx_load_host_state(to_vmx(vcpu));
658} 665}
659 666
660static void vmx_fpu_activate(struct kvm_vcpu *vcpu) 667static void vmx_fpu_activate(struct kvm_vcpu *vcpu)
@@ -884,11 +891,8 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
884 switch (msr_index) { 891 switch (msr_index) {
885#ifdef CONFIG_X86_64 892#ifdef CONFIG_X86_64
886 case MSR_EFER: 893 case MSR_EFER:
894 vmx_load_host_state(vmx);
887 ret = kvm_set_msr_common(vcpu, msr_index, data); 895 ret = kvm_set_msr_common(vcpu, msr_index, data);
888 if (vmx->host_state.loaded) {
889 reload_host_efer(vmx);
890 load_transition_efer(vmx);
891 }
892 break; 896 break;
893 case MSR_FS_BASE: 897 case MSR_FS_BASE:
894 vmcs_writel(GUEST_FS_BASE, data); 898 vmcs_writel(GUEST_FS_BASE, data);
@@ -910,11 +914,10 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
910 guest_write_tsc(data); 914 guest_write_tsc(data);
911 break; 915 break;
912 default: 916 default:
917 vmx_load_host_state(vmx);
913 msr = find_msr_entry(vmx, msr_index); 918 msr = find_msr_entry(vmx, msr_index);
914 if (msr) { 919 if (msr) {
915 msr->data = data; 920 msr->data = data;
916 if (vmx->host_state.loaded)
917 load_msrs(vmx->guest_msrs, vmx->save_nmsrs);
918 break; 921 break;
919 } 922 }
920 ret = kvm_set_msr_common(vcpu, msr_index, data); 923 ret = kvm_set_msr_common(vcpu, msr_index, data);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 00acf1301a15..63a77caa59f1 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -492,8 +492,8 @@ static int do_set_msr(struct kvm_vcpu *vcpu, unsigned index, u64 *data)
492static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock) 492static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)
493{ 493{
494 static int version; 494 static int version;
495 struct kvm_wall_clock wc; 495 struct pvclock_wall_clock wc;
496 struct timespec wc_ts; 496 struct timespec now, sys, boot;
497 497
498 if (!wall_clock) 498 if (!wall_clock)
499 return; 499 return;
@@ -502,10 +502,19 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)
502 502
503 kvm_write_guest(kvm, wall_clock, &version, sizeof(version)); 503 kvm_write_guest(kvm, wall_clock, &version, sizeof(version));
504 504
505 wc_ts = current_kernel_time(); 505 /*
506 wc.wc_sec = wc_ts.tv_sec; 506 * The guest calculates current wall clock time by adding
507 wc.wc_nsec = wc_ts.tv_nsec; 507 * system time (updated by kvm_write_guest_time below) to the
508 wc.wc_version = version; 508 * wall clock specified here. guest system time equals host
509 * system time for us, thus we must fill in host boot time here.
510 */
511 now = current_kernel_time();
512 ktime_get_ts(&sys);
513 boot = ns_to_timespec(timespec_to_ns(&now) - timespec_to_ns(&sys));
514
515 wc.sec = boot.tv_sec;
516 wc.nsec = boot.tv_nsec;
517 wc.version = version;
509 518
510 kvm_write_guest(kvm, wall_clock, &wc, sizeof(wc)); 519 kvm_write_guest(kvm, wall_clock, &wc, sizeof(wc));
511 520
@@ -513,6 +522,45 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)
513 kvm_write_guest(kvm, wall_clock, &version, sizeof(version)); 522 kvm_write_guest(kvm, wall_clock, &version, sizeof(version));
514} 523}
515 524
525static uint32_t div_frac(uint32_t dividend, uint32_t divisor)
526{
527 uint32_t quotient, remainder;
528
529 /* Don't try to replace with do_div(), this one calculates
530 * "(dividend << 32) / divisor" */
531 __asm__ ( "divl %4"
532 : "=a" (quotient), "=d" (remainder)
533 : "0" (0), "1" (dividend), "r" (divisor) );
534 return quotient;
535}
536
537static void kvm_set_time_scale(uint32_t tsc_khz, struct pvclock_vcpu_time_info *hv_clock)
538{
539 uint64_t nsecs = 1000000000LL;
540 int32_t shift = 0;
541 uint64_t tps64;
542 uint32_t tps32;
543
544 tps64 = tsc_khz * 1000LL;
545 while (tps64 > nsecs*2) {
546 tps64 >>= 1;
547 shift--;
548 }
549
550 tps32 = (uint32_t)tps64;
551 while (tps32 <= (uint32_t)nsecs) {
552 tps32 <<= 1;
553 shift++;
554 }
555
556 hv_clock->tsc_shift = shift;
557 hv_clock->tsc_to_system_mul = div_frac(nsecs, tps32);
558
559 pr_debug("%s: tsc_khz %u, tsc_shift %d, tsc_mul %u\n",
560 __FUNCTION__, tsc_khz, hv_clock->tsc_shift,
561 hv_clock->tsc_to_system_mul);
562}
563
516static void kvm_write_guest_time(struct kvm_vcpu *v) 564static void kvm_write_guest_time(struct kvm_vcpu *v)
517{ 565{
518 struct timespec ts; 566 struct timespec ts;
@@ -523,6 +571,11 @@ static void kvm_write_guest_time(struct kvm_vcpu *v)
523 if ((!vcpu->time_page)) 571 if ((!vcpu->time_page))
524 return; 572 return;
525 573
574 if (unlikely(vcpu->hv_clock_tsc_khz != tsc_khz)) {
575 kvm_set_time_scale(tsc_khz, &vcpu->hv_clock);
576 vcpu->hv_clock_tsc_khz = tsc_khz;
577 }
578
526 /* Keep irq disabled to prevent changes to the clock */ 579 /* Keep irq disabled to prevent changes to the clock */
527 local_irq_save(flags); 580 local_irq_save(flags);
528 kvm_get_msr(v, MSR_IA32_TIME_STAMP_COUNTER, 581 kvm_get_msr(v, MSR_IA32_TIME_STAMP_COUNTER,
@@ -537,14 +590,14 @@ static void kvm_write_guest_time(struct kvm_vcpu *v)
537 /* 590 /*
538 * The interface expects us to write an even number signaling that the 591 * The interface expects us to write an even number signaling that the
539 * update is finished. Since the guest won't see the intermediate 592 * update is finished. Since the guest won't see the intermediate
540 * state, we just write "2" at the end 593 * state, we just increase by 2 at the end.
541 */ 594 */
542 vcpu->hv_clock.version = 2; 595 vcpu->hv_clock.version += 2;
543 596
544 shared_kaddr = kmap_atomic(vcpu->time_page, KM_USER0); 597 shared_kaddr = kmap_atomic(vcpu->time_page, KM_USER0);
545 598
546 memcpy(shared_kaddr + vcpu->time_offset, &vcpu->hv_clock, 599 memcpy(shared_kaddr + vcpu->time_offset, &vcpu->hv_clock,
547 sizeof(vcpu->hv_clock)); 600 sizeof(vcpu->hv_clock));
548 601
549 kunmap_atomic(shared_kaddr, KM_USER0); 602 kunmap_atomic(shared_kaddr, KM_USER0);
550 603
@@ -599,10 +652,6 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
599 /* ...but clean it before doing the actual write */ 652 /* ...but clean it before doing the actual write */
600 vcpu->arch.time_offset = data & ~(PAGE_MASK | 1); 653 vcpu->arch.time_offset = data & ~(PAGE_MASK | 1);
601 654
602 vcpu->arch.hv_clock.tsc_to_system_mul =
603 clocksource_khz2mult(tsc_khz, 22);
604 vcpu->arch.hv_clock.tsc_shift = 22;
605
606 down_read(&current->mm->mmap_sem); 655 down_read(&current->mm->mmap_sem);
607 vcpu->arch.time_page = 656 vcpu->arch.time_page =
608 gfn_to_page(vcpu->kvm, data >> PAGE_SHIFT); 657 gfn_to_page(vcpu->kvm, data >> PAGE_SHIFT);
@@ -2759,6 +2808,8 @@ again:
2759 if (vcpu->requests) { 2808 if (vcpu->requests) {
2760 if (test_and_clear_bit(KVM_REQ_MIGRATE_TIMER, &vcpu->requests)) 2809 if (test_and_clear_bit(KVM_REQ_MIGRATE_TIMER, &vcpu->requests))
2761 __kvm_migrate_timers(vcpu); 2810 __kvm_migrate_timers(vcpu);
2811 if (test_and_clear_bit(KVM_REQ_TLB_FLUSH, &vcpu->requests))
2812 kvm_x86_ops->tlb_flush(vcpu);
2762 if (test_and_clear_bit(KVM_REQ_REPORT_TPR_ACCESS, 2813 if (test_and_clear_bit(KVM_REQ_REPORT_TPR_ACCESS,
2763 &vcpu->requests)) { 2814 &vcpu->requests)) {
2764 kvm_run->exit_reason = KVM_EXIT_TPR_ACCESS; 2815 kvm_run->exit_reason = KVM_EXIT_TPR_ACCESS;
@@ -2772,6 +2823,7 @@ again:
2772 } 2823 }
2773 } 2824 }
2774 2825
2826 clear_bit(KVM_REQ_PENDING_TIMER, &vcpu->requests);
2775 kvm_inject_pending_timer_irqs(vcpu); 2827 kvm_inject_pending_timer_irqs(vcpu);
2776 2828
2777 preempt_disable(); 2829 preempt_disable();
@@ -2781,21 +2833,13 @@ again:
2781 2833
2782 local_irq_disable(); 2834 local_irq_disable();
2783 2835
2784 if (need_resched()) { 2836 if (vcpu->requests || need_resched()) {
2785 local_irq_enable(); 2837 local_irq_enable();
2786 preempt_enable(); 2838 preempt_enable();
2787 r = 1; 2839 r = 1;
2788 goto out; 2840 goto out;
2789 } 2841 }
2790 2842
2791 if (vcpu->requests)
2792 if (test_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests)) {
2793 local_irq_enable();
2794 preempt_enable();
2795 r = 1;
2796 goto out;
2797 }
2798
2799 if (signal_pending(current)) { 2843 if (signal_pending(current)) {
2800 local_irq_enable(); 2844 local_irq_enable();
2801 preempt_enable(); 2845 preempt_enable();
@@ -2825,9 +2869,6 @@ again:
2825 2869
2826 kvm_guest_enter(); 2870 kvm_guest_enter();
2827 2871
2828 if (vcpu->requests)
2829 if (test_and_clear_bit(KVM_REQ_TLB_FLUSH, &vcpu->requests))
2830 kvm_x86_ops->tlb_flush(vcpu);
2831 2872
2832 KVMTRACE_0D(VMENTRY, vcpu, entryexit); 2873 KVMTRACE_0D(VMENTRY, vcpu, entryexit);
2833 kvm_x86_ops->run(vcpu, kvm_run); 2874 kvm_x86_ops->run(vcpu, kvm_run);
diff --git a/arch/x86/lib/copy_user_64.S b/arch/x86/lib/copy_user_64.S
index 70bebd310408..ee1c3f635157 100644
--- a/arch/x86/lib/copy_user_64.S
+++ b/arch/x86/lib/copy_user_64.S
@@ -217,19 +217,19 @@ ENTRY(copy_user_generic_unrolled)
217 /* table sorted by exception address */ 217 /* table sorted by exception address */
218 .section __ex_table,"a" 218 .section __ex_table,"a"
219 .align 8 219 .align 8
220 .quad .Ls1,.Ls1e 220 .quad .Ls1,.Ls1e /* Ls1-Ls4 have copied zero bytes */
221 .quad .Ls2,.Ls2e 221 .quad .Ls2,.Ls1e
222 .quad .Ls3,.Ls3e 222 .quad .Ls3,.Ls1e
223 .quad .Ls4,.Ls4e 223 .quad .Ls4,.Ls1e
224 .quad .Ld1,.Ls1e 224 .quad .Ld1,.Ls1e /* Ld1-Ld4 have copied 0-24 bytes */
225 .quad .Ld2,.Ls2e 225 .quad .Ld2,.Ls2e
226 .quad .Ld3,.Ls3e 226 .quad .Ld3,.Ls3e
227 .quad .Ld4,.Ls4e 227 .quad .Ld4,.Ls4e
228 .quad .Ls5,.Ls5e 228 .quad .Ls5,.Ls5e /* Ls5-Ls8 have copied 32 bytes */
229 .quad .Ls6,.Ls6e 229 .quad .Ls6,.Ls5e
230 .quad .Ls7,.Ls7e 230 .quad .Ls7,.Ls5e
231 .quad .Ls8,.Ls8e 231 .quad .Ls8,.Ls5e
232 .quad .Ld5,.Ls5e 232 .quad .Ld5,.Ls5e /* Ld5-Ld8 have copied 32-56 bytes */
233 .quad .Ld6,.Ls6e 233 .quad .Ld6,.Ls6e
234 .quad .Ld7,.Ls7e 234 .quad .Ld7,.Ls7e
235 .quad .Ld8,.Ls8e 235 .quad .Ld8,.Ls8e
@@ -244,11 +244,8 @@ ENTRY(copy_user_generic_unrolled)
244 .quad .Le5,.Le_zero 244 .quad .Le5,.Le_zero
245 .previous 245 .previous
246 246
247 /* compute 64-offset for main loop. 8 bytes accuracy with error on the
248 pessimistic side. this is gross. it would be better to fix the
249 interface. */
250 /* eax: zero, ebx: 64 */ 247 /* eax: zero, ebx: 64 */
251.Ls1e: addl $8,%eax 248.Ls1e: addl $8,%eax /* eax is bytes left uncopied within the loop (Ls1e: 64 .. Ls8e: 8) */
252.Ls2e: addl $8,%eax 249.Ls2e: addl $8,%eax
253.Ls3e: addl $8,%eax 250.Ls3e: addl $8,%eax
254.Ls4e: addl $8,%eax 251.Ls4e: addl $8,%eax
diff --git a/arch/x86/lib/copy_user_nocache_64.S b/arch/x86/lib/copy_user_nocache_64.S
index 5196762b3b0e..9d3d1ab83763 100644
--- a/arch/x86/lib/copy_user_nocache_64.S
+++ b/arch/x86/lib/copy_user_nocache_64.S
@@ -145,19 +145,19 @@ ENTRY(__copy_user_nocache)
145 /* table sorted by exception address */ 145 /* table sorted by exception address */
146 .section __ex_table,"a" 146 .section __ex_table,"a"
147 .align 8 147 .align 8
148 .quad .Ls1,.Ls1e 148 .quad .Ls1,.Ls1e /* .Ls[1-4] - 0 bytes copied */
149 .quad .Ls2,.Ls2e 149 .quad .Ls2,.Ls1e
150 .quad .Ls3,.Ls3e 150 .quad .Ls3,.Ls1e
151 .quad .Ls4,.Ls4e 151 .quad .Ls4,.Ls1e
152 .quad .Ld1,.Ls1e 152 .quad .Ld1,.Ls1e /* .Ld[1-4] - 0..24 bytes coped */
153 .quad .Ld2,.Ls2e 153 .quad .Ld2,.Ls2e
154 .quad .Ld3,.Ls3e 154 .quad .Ld3,.Ls3e
155 .quad .Ld4,.Ls4e 155 .quad .Ld4,.Ls4e
156 .quad .Ls5,.Ls5e 156 .quad .Ls5,.Ls5e /* .Ls[5-8] - 32 bytes copied */
157 .quad .Ls6,.Ls6e 157 .quad .Ls6,.Ls5e
158 .quad .Ls7,.Ls7e 158 .quad .Ls7,.Ls5e
159 .quad .Ls8,.Ls8e 159 .quad .Ls8,.Ls5e
160 .quad .Ld5,.Ls5e 160 .quad .Ld5,.Ls5e /* .Ld[5-8] - 32..56 bytes copied */
161 .quad .Ld6,.Ls6e 161 .quad .Ld6,.Ls6e
162 .quad .Ld7,.Ls7e 162 .quad .Ld7,.Ls7e
163 .quad .Ld8,.Ls8e 163 .quad .Ld8,.Ls8e
@@ -172,11 +172,8 @@ ENTRY(__copy_user_nocache)
172 .quad .Le5,.Le_zero 172 .quad .Le5,.Le_zero
173 .previous 173 .previous
174 174
175 /* compute 64-offset for main loop. 8 bytes accuracy with error on the
176 pessimistic side. this is gross. it would be better to fix the
177 interface. */
178 /* eax: zero, ebx: 64 */ 175 /* eax: zero, ebx: 64 */
179.Ls1e: addl $8,%eax 176.Ls1e: addl $8,%eax /* eax: bytes left uncopied: Ls1e: 64 .. Ls8e: 8 */
180.Ls2e: addl $8,%eax 177.Ls2e: addl $8,%eax
181.Ls3e: addl $8,%eax 178.Ls3e: addl $8,%eax
182.Ls4e: addl $8,%eax 179.Ls4e: addl $8,%eax
diff --git a/arch/x86/math-emu/reg_constant.c b/arch/x86/math-emu/reg_constant.c
index 04869e64b18e..00548354912f 100644
--- a/arch/x86/math-emu/reg_constant.c
+++ b/arch/x86/math-emu/reg_constant.c
@@ -16,8 +16,8 @@
16#include "reg_constant.h" 16#include "reg_constant.h"
17#include "control_w.h" 17#include "control_w.h"
18 18
19#define MAKE_REG(s,e,l,h) { l, h, \ 19#define MAKE_REG(s, e, l, h) { l, h, \
20 ((EXTENDED_Ebias+(e)) | ((SIGN_##s != 0)*0x8000)) } 20 ((EXTENDED_Ebias+(e)) | ((SIGN_##s != 0)*0x8000)) }
21 21
22FPU_REG const CONST_1 = MAKE_REG(POS, 0, 0x00000000, 0x80000000); 22FPU_REG const CONST_1 = MAKE_REG(POS, 0, 0x00000000, 0x80000000);
23#if 0 23#if 0
@@ -40,7 +40,7 @@ FPU_REG const CONST_PI2extra = MAKE_REG(NEG, -66,
40FPU_REG const CONST_Z = MAKE_REG(POS, EXP_UNDER, 0x0, 0x0); 40FPU_REG const CONST_Z = MAKE_REG(POS, EXP_UNDER, 0x0, 0x0);
41 41
42/* Only the sign and significand (and tag) are used in internal NaNs */ 42/* Only the sign and significand (and tag) are used in internal NaNs */
43/* The 80486 never generates one of these 43/* The 80486 never generates one of these
44FPU_REG const CONST_SNAN = MAKE_REG(POS, EXP_OVER, 0x00000001, 0x80000000); 44FPU_REG const CONST_SNAN = MAKE_REG(POS, EXP_OVER, 0x00000001, 0x80000000);
45 */ 45 */
46/* This is the real indefinite QNaN */ 46/* This is the real indefinite QNaN */
@@ -49,7 +49,7 @@ FPU_REG const CONST_QNaN = MAKE_REG(NEG, EXP_OVER, 0x00000000, 0xC0000000);
49/* Only the sign (and tag) is used in internal infinities */ 49/* Only the sign (and tag) is used in internal infinities */
50FPU_REG const CONST_INF = MAKE_REG(POS, EXP_OVER, 0x00000000, 0x80000000); 50FPU_REG const CONST_INF = MAKE_REG(POS, EXP_OVER, 0x00000000, 0x80000000);
51 51
52static void fld_const(FPU_REG const *c, int adj, u_char tag) 52static void fld_const(FPU_REG const * c, int adj, u_char tag)
53{ 53{
54 FPU_REG *st_new_ptr; 54 FPU_REG *st_new_ptr;
55 55
diff --git a/arch/x86/mm/discontig_32.c b/arch/x86/mm/discontig_32.c
index 914ccf983687..8b4eac0ca07d 100644
--- a/arch/x86/mm/discontig_32.c
+++ b/arch/x86/mm/discontig_32.c
@@ -156,7 +156,7 @@ static void __init propagate_e820_map_node(int nid)
156 */ 156 */
157static void __init allocate_pgdat(int nid) 157static void __init allocate_pgdat(int nid)
158{ 158{
159 if (nid && node_has_online_mem(nid)) 159 if (nid && node_has_online_mem(nid) && node_remap_start_vaddr[nid])
160 NODE_DATA(nid) = (pg_data_t *)node_remap_start_vaddr[nid]; 160 NODE_DATA(nid) = (pg_data_t *)node_remap_start_vaddr[nid];
161 else { 161 else {
162 NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(min_low_pfn)); 162 NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(min_low_pfn));
@@ -164,16 +164,13 @@ static void __init allocate_pgdat(int nid)
164 } 164 }
165} 165}
166 166
167#ifdef CONFIG_DISCONTIGMEM
168/* 167/*
169 * In the discontig memory model, a portion of the kernel virtual area (KVA) 168 * In the DISCONTIGMEM and SPARSEMEM memory model, a portion of the kernel
170 * is reserved and portions of nodes are mapped using it. This is to allow 169 * virtual address space (KVA) is reserved and portions of nodes are mapped
171 * node-local memory to be allocated for structures that would normally require 170 * using it. This is to allow node-local memory to be allocated for
172 * ZONE_NORMAL. The memory is allocated with alloc_remap() and callers 171 * structures that would normally require ZONE_NORMAL. The memory is
173 * should be prepared to allocate from the bootmem allocator instead. This KVA 172 * allocated with alloc_remap() and callers should be prepared to allocate
174 * mechanism is incompatible with SPARSEMEM as it makes assumptions about the 173 * from the bootmem allocator instead.
175 * layout of memory that are broken if alloc_remap() succeeds for some of the
176 * map and fails for others
177 */ 174 */
178static unsigned long node_remap_start_pfn[MAX_NUMNODES]; 175static unsigned long node_remap_start_pfn[MAX_NUMNODES];
179static void *node_remap_end_vaddr[MAX_NUMNODES]; 176static void *node_remap_end_vaddr[MAX_NUMNODES];
@@ -290,25 +287,6 @@ static void init_remap_allocator(int nid)
290 (ulong) pfn_to_kaddr(highstart_pfn 287 (ulong) pfn_to_kaddr(highstart_pfn
291 + node_remap_offset[nid] + node_remap_size[nid])); 288 + node_remap_offset[nid] + node_remap_size[nid]));
292} 289}
293#else
294void *alloc_remap(int nid, unsigned long size)
295{
296 return NULL;
297}
298
299static unsigned long calculate_numa_remap_pages(void)
300{
301 return 0;
302}
303
304static void init_remap_allocator(int nid)
305{
306}
307
308void __init remap_numa_kva(void)
309{
310}
311#endif /* CONFIG_DISCONTIGMEM */
312 290
313extern void setup_bootmem_allocator(void); 291extern void setup_bootmem_allocator(void);
314unsigned long __init setup_memory(void) 292unsigned long __init setup_memory(void)
@@ -476,3 +454,21 @@ int memory_add_physaddr_to_nid(u64 addr)
476 454
477EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid); 455EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
478#endif 456#endif
457
458#if defined(CONFIG_ACPI_NUMA) && !defined(CONFIG_HAVE_ARCH_PARSE_SRAT)
459/*
460 * Dummy on 32-bit, for now:
461 */
462void __init acpi_numa_slit_init(struct acpi_table_slit *slit)
463{
464}
465
466void __init
467acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa)
468{
469}
470
471void __init acpi_numa_arch_fixup(void)
472{
473}
474#endif
diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c
index 2c24bea92c66..0bb0caed8971 100644
--- a/arch/x86/mm/dump_pagetables.c
+++ b/arch/x86/mm/dump_pagetables.c
@@ -42,7 +42,7 @@ static struct addr_marker address_markers[] = {
42 { 0, "User Space" }, 42 { 0, "User Space" },
43#ifdef CONFIG_X86_64 43#ifdef CONFIG_X86_64
44 { 0x8000000000000000UL, "Kernel Space" }, 44 { 0x8000000000000000UL, "Kernel Space" },
45 { 0xffff810000000000UL, "Low Kernel Mapping" }, 45 { PAGE_OFFSET, "Low Kernel Mapping" },
46 { VMALLOC_START, "vmalloc() Area" }, 46 { VMALLOC_START, "vmalloc() Area" },
47 { VMEMMAP_START, "Vmemmap" }, 47 { VMEMMAP_START, "Vmemmap" },
48 { __START_KERNEL_map, "High Kernel Mapping" }, 48 { __START_KERNEL_map, "High Kernel Mapping" },
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 8bcb6f40ccb6..1e64795714c8 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -55,11 +55,7 @@ static inline int notify_page_fault(struct pt_regs *regs)
55 int ret = 0; 55 int ret = 0;
56 56
57 /* kprobe_running() needs smp_processor_id() */ 57 /* kprobe_running() needs smp_processor_id() */
58#ifdef CONFIG_X86_32
59 if (!user_mode_vm(regs)) { 58 if (!user_mode_vm(regs)) {
60#else
61 if (!user_mode(regs)) {
62#endif
63 preempt_disable(); 59 preempt_disable();
64 if (kprobe_running() && kprobe_fault_handler(regs, 14)) 60 if (kprobe_running() && kprobe_fault_handler(regs, 14))
65 ret = 1; 61 ret = 1;
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index ec30d10154b6..d71be0eb0130 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -162,6 +162,7 @@ static void __init kernel_physical_mapping_init(pgd_t *pgd_base)
162 pgd_t *pgd; 162 pgd_t *pgd;
163 pmd_t *pmd; 163 pmd_t *pmd;
164 pte_t *pte; 164 pte_t *pte;
165 unsigned pages_2m = 0, pages_4k = 0;
165 166
166 pgd_idx = pgd_index(PAGE_OFFSET); 167 pgd_idx = pgd_index(PAGE_OFFSET);
167 pgd = pgd_base + pgd_idx; 168 pgd = pgd_base + pgd_idx;
@@ -197,6 +198,7 @@ static void __init kernel_physical_mapping_init(pgd_t *pgd_base)
197 is_kernel_text(addr2)) 198 is_kernel_text(addr2))
198 prot = PAGE_KERNEL_LARGE_EXEC; 199 prot = PAGE_KERNEL_LARGE_EXEC;
199 200
201 pages_2m++;
200 set_pmd(pmd, pfn_pmd(pfn, prot)); 202 set_pmd(pmd, pfn_pmd(pfn, prot));
201 203
202 pfn += PTRS_PER_PTE; 204 pfn += PTRS_PER_PTE;
@@ -213,11 +215,14 @@ static void __init kernel_physical_mapping_init(pgd_t *pgd_base)
213 if (is_kernel_text(addr)) 215 if (is_kernel_text(addr))
214 prot = PAGE_KERNEL_EXEC; 216 prot = PAGE_KERNEL_EXEC;
215 217
218 pages_4k++;
216 set_pte(pte, pfn_pte(pfn, prot)); 219 set_pte(pte, pfn_pte(pfn, prot));
217 } 220 }
218 max_pfn_mapped = pfn; 221 max_pfn_mapped = pfn;
219 } 222 }
220 } 223 }
224 update_page_count(PG_LEVEL_2M, pages_2m);
225 update_page_count(PG_LEVEL_4K, pages_4k);
221} 226}
222 227
223static inline int page_kills_ppro(unsigned long pagenr) 228static inline int page_kills_ppro(unsigned long pagenr)
@@ -571,17 +576,6 @@ void __init mem_init(void)
571#endif 576#endif
572 bad_ppro = ppro_with_ram_bug(); 577 bad_ppro = ppro_with_ram_bug();
573 578
574#ifdef CONFIG_HIGHMEM
575 /* check that fixmap and pkmap do not overlap */
576 if (PKMAP_BASE + LAST_PKMAP*PAGE_SIZE >= FIXADDR_START) {
577 printk(KERN_ERR
578 "fixmap and kmap areas overlap - this will crash\n");
579 printk(KERN_ERR "pkstart: %lxh pkend: %lxh fixstart %lxh\n",
580 PKMAP_BASE, PKMAP_BASE + LAST_PKMAP*PAGE_SIZE,
581 FIXADDR_START);
582 BUG();
583 }
584#endif
585 /* this will put all low memory onto the freelists */ 579 /* this will put all low memory onto the freelists */
586 totalram_pages += free_all_bootmem(); 580 totalram_pages += free_all_bootmem();
587 581
@@ -614,7 +608,6 @@ void __init mem_init(void)
614 (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10)) 608 (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10))
615 ); 609 );
616 610
617#if 1 /* double-sanity-check paranoia */
618 printk(KERN_INFO "virtual kernel memory layout:\n" 611 printk(KERN_INFO "virtual kernel memory layout:\n"
619 " fixmap : 0x%08lx - 0x%08lx (%4ld kB)\n" 612 " fixmap : 0x%08lx - 0x%08lx (%4ld kB)\n"
620#ifdef CONFIG_HIGHMEM 613#ifdef CONFIG_HIGHMEM
@@ -655,7 +648,6 @@ void __init mem_init(void)
655#endif 648#endif
656 BUG_ON(VMALLOC_START > VMALLOC_END); 649 BUG_ON(VMALLOC_START > VMALLOC_END);
657 BUG_ON((unsigned long)high_memory > VMALLOC_START); 650 BUG_ON((unsigned long)high_memory > VMALLOC_START);
658#endif /* double-sanity-check paranoia */
659 651
660 if (boot_cpu_data.wp_works_ok < 0) 652 if (boot_cpu_data.wp_works_ok < 0)
661 test_wp_bit(); 653 test_wp_bit();
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 156e6d7b0e32..48623ae628fb 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -18,6 +18,7 @@
18#include <linux/swap.h> 18#include <linux/swap.h>
19#include <linux/smp.h> 19#include <linux/smp.h>
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/initrd.h>
21#include <linux/pagemap.h> 22#include <linux/pagemap.h>
22#include <linux/bootmem.h> 23#include <linux/bootmem.h>
23#include <linux/proc_fs.h> 24#include <linux/proc_fs.h>
@@ -135,7 +136,7 @@ static __init void *spp_getpage(void)
135 return ptr; 136 return ptr;
136} 137}
137 138
138static void 139static __init void
139set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot) 140set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
140{ 141{
141 pgd_t *pgd; 142 pgd_t *pgd;
@@ -214,7 +215,7 @@ void __init cleanup_highmap(void)
214} 215}
215 216
216/* NOTE: this is meant to be run only at boot */ 217/* NOTE: this is meant to be run only at boot */
217void __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot) 218void __init __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
218{ 219{
219 unsigned long address = __fix_to_virt(idx); 220 unsigned long address = __fix_to_virt(idx);
220 221
@@ -312,6 +313,8 @@ __meminit void early_iounmap(void *addr, unsigned long size)
312static unsigned long __meminit 313static unsigned long __meminit
313phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end) 314phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end)
314{ 315{
316 unsigned long pages = 0;
317
315 int i = pmd_index(address); 318 int i = pmd_index(address);
316 319
317 for (; i < PTRS_PER_PMD; i++, address += PMD_SIZE) { 320 for (; i < PTRS_PER_PMD; i++, address += PMD_SIZE) {
@@ -328,9 +331,11 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end)
328 if (pmd_val(*pmd)) 331 if (pmd_val(*pmd))
329 continue; 332 continue;
330 333
334 pages++;
331 set_pte((pte_t *)pmd, 335 set_pte((pte_t *)pmd,
332 pfn_pte(address >> PAGE_SHIFT, PAGE_KERNEL_LARGE)); 336 pfn_pte(address >> PAGE_SHIFT, PAGE_KERNEL_LARGE));
333 } 337 }
338 update_page_count(PG_LEVEL_2M, pages);
334 return address; 339 return address;
335} 340}
336 341
@@ -350,6 +355,7 @@ phys_pmd_update(pud_t *pud, unsigned long address, unsigned long end)
350static unsigned long __meminit 355static unsigned long __meminit
351phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end) 356phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end)
352{ 357{
358 unsigned long pages = 0;
353 unsigned long last_map_addr = end; 359 unsigned long last_map_addr = end;
354 int i = pud_index(addr); 360 int i = pud_index(addr);
355 361
@@ -374,6 +380,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end)
374 } 380 }
375 381
376 if (direct_gbpages) { 382 if (direct_gbpages) {
383 pages++;
377 set_pte((pte_t *)pud, 384 set_pte((pte_t *)pud,
378 pfn_pte(addr >> PAGE_SHIFT, PAGE_KERNEL_LARGE)); 385 pfn_pte(addr >> PAGE_SHIFT, PAGE_KERNEL_LARGE));
379 last_map_addr = (addr & PUD_MASK) + PUD_SIZE; 386 last_map_addr = (addr & PUD_MASK) + PUD_SIZE;
@@ -390,6 +397,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end)
390 unmap_low_page(pmd); 397 unmap_low_page(pmd);
391 } 398 }
392 __flush_tlb_all(); 399 __flush_tlb_all();
400 update_page_count(PG_LEVEL_1G, pages);
393 401
394 return last_map_addr >> PAGE_SHIFT; 402 return last_map_addr >> PAGE_SHIFT;
395} 403}
@@ -431,7 +439,7 @@ static void __init init_gbpages(void)
431 direct_gbpages = 0; 439 direct_gbpages = 0;
432} 440}
433 441
434#ifdef CONFIG_MEMTEST_BOOTPARAM 442#ifdef CONFIG_MEMTEST
435 443
436static void __init memtest(unsigned long start_phys, unsigned long size, 444static void __init memtest(unsigned long start_phys, unsigned long size,
437 unsigned pattern) 445 unsigned pattern)
@@ -493,7 +501,8 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
493 501
494} 502}
495 503
496static int memtest_pattern __initdata = CONFIG_MEMTEST_BOOTPARAM_VALUE; 504/* default is disabled */
505static int memtest_pattern __initdata;
497 506
498static int __init parse_memtest(char *arg) 507static int __init parse_memtest(char *arg)
499{ 508{
@@ -526,7 +535,8 @@ static void __init early_memtest(unsigned long start, unsigned long end)
526 t_size = end - t_start; 535 t_size = end - t_start;
527 536
528 printk(KERN_CONT "\n %016llx - %016llx pattern %d", 537 printk(KERN_CONT "\n %016llx - %016llx pattern %d",
529 t_start, t_start + t_size, pattern); 538 (unsigned long long)t_start,
539 (unsigned long long)t_start + t_size, pattern);
530 540
531 memtest(t_start, t_size, pattern); 541 memtest(t_start, t_size, pattern);
532 542
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 6d9960dd6f35..416ea415f5c2 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -318,8 +318,8 @@ void iounmap(volatile void __iomem *addr)
318 * vm_area and by simply returning an address into the kernel mapping 318 * vm_area and by simply returning an address into the kernel mapping
319 * of ISA space. So handle that here. 319 * of ISA space. So handle that here.
320 */ 320 */
321 if (addr >= phys_to_virt(ISA_START_ADDRESS) && 321 if ((void __force *)addr >= phys_to_virt(ISA_START_ADDRESS) &&
322 addr < phys_to_virt(ISA_END_ADDRESS)) 322 (void __force *)addr < phys_to_virt(ISA_END_ADDRESS))
323 return; 323 return;
324 324
325 addr = (volatile void __iomem *) 325 addr = (volatile void __iomem *)
@@ -332,7 +332,7 @@ void iounmap(volatile void __iomem *addr)
332 cpa takes care of the direct mappings. */ 332 cpa takes care of the direct mappings. */
333 read_lock(&vmlist_lock); 333 read_lock(&vmlist_lock);
334 for (p = vmlist; p; p = p->next) { 334 for (p = vmlist; p; p = p->next) {
335 if (p->addr == addr) 335 if (p->addr == (void __force *)addr)
336 break; 336 break;
337 } 337 }
338 read_unlock(&vmlist_lock); 338 read_unlock(&vmlist_lock);
@@ -346,7 +346,7 @@ void iounmap(volatile void __iomem *addr)
346 free_memtype(p->phys_addr, p->phys_addr + get_vm_area_size(p)); 346 free_memtype(p->phys_addr, p->phys_addr + get_vm_area_size(p));
347 347
348 /* Finally remove it */ 348 /* Finally remove it */
349 o = remove_vm_area((void *)addr); 349 o = remove_vm_area((void __force *)addr);
350 BUG_ON(p != o || o == NULL); 350 BUG_ON(p != o || o == NULL);
351 kfree(p); 351 kfree(p);
352} 352}
@@ -365,7 +365,7 @@ void *xlate_dev_mem_ptr(unsigned long phys)
365 if (page_is_ram(start >> PAGE_SHIFT)) 365 if (page_is_ram(start >> PAGE_SHIFT))
366 return __va(phys); 366 return __va(phys);
367 367
368 addr = (void *)ioremap(start, PAGE_SIZE); 368 addr = (void __force *)ioremap(start, PAGE_SIZE);
369 if (addr) 369 if (addr)
370 addr = (void *)((unsigned long)addr | (phys & ~PAGE_MASK)); 370 addr = (void *)((unsigned long)addr | (phys & ~PAGE_MASK));
371 371
diff --git a/arch/x86/mm/k8topology_64.c b/arch/x86/mm/k8topology_64.c
index 1f476e477844..0ea66b532c35 100644
--- a/arch/x86/mm/k8topology_64.c
+++ b/arch/x86/mm/k8topology_64.c
@@ -22,6 +22,7 @@
22#include <asm/numa.h> 22#include <asm/numa.h>
23#include <asm/mpspec.h> 23#include <asm/mpspec.h>
24#include <asm/apic.h> 24#include <asm/apic.h>
25#include <asm/k8.h>
25 26
26static __init int find_northbridge(void) 27static __init int find_northbridge(void)
27{ 28{
@@ -73,17 +74,12 @@ static __init void early_get_boot_cpu_id(void)
73 74
74int __init k8_scan_nodes(unsigned long start, unsigned long end) 75int __init k8_scan_nodes(unsigned long start, unsigned long end)
75{ 76{
77 unsigned numnodes, cores, bits, apicid_base;
76 unsigned long prevbase; 78 unsigned long prevbase;
77 struct bootnode nodes[8]; 79 struct bootnode nodes[8];
78 int nodeid, i, nb;
79 unsigned char nodeids[8]; 80 unsigned char nodeids[8];
80 int found = 0; 81 int i, j, nb, found = 0;
81 u32 reg; 82 u32 nodeid, reg;
82 unsigned numnodes;
83 unsigned cores;
84 unsigned bits;
85 int j;
86 unsigned apicid_base;
87 83
88 if (!early_pci_allowed()) 84 if (!early_pci_allowed())
89 return -1; 85 return -1;
@@ -105,7 +101,6 @@ int __init k8_scan_nodes(unsigned long start, unsigned long end)
105 prevbase = 0; 101 prevbase = 0;
106 for (i = 0; i < 8; i++) { 102 for (i = 0; i < 8; i++) {
107 unsigned long base, limit; 103 unsigned long base, limit;
108 u32 nodeid;
109 104
110 base = read_pci_config(0, nb, 1, 0x40 + i*8); 105 base = read_pci_config(0, nb, 1, 0x40 + i*8);
111 limit = read_pci_config(0, nb, 1, 0x44 + i*8); 106 limit = read_pci_config(0, nb, 1, 0x44 + i*8);
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index 6916fe4bf0cb..afd40054d157 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -34,6 +34,41 @@ struct cpa_data {
34 unsigned force_split : 1; 34 unsigned force_split : 1;
35}; 35};
36 36
37#ifdef CONFIG_PROC_FS
38static unsigned long direct_pages_count[PG_LEVEL_NUM];
39
40void update_page_count(int level, unsigned long pages)
41{
42 unsigned long flags;
43
44 /* Protect against CPA */
45 spin_lock_irqsave(&pgd_lock, flags);
46 direct_pages_count[level] += pages;
47 spin_unlock_irqrestore(&pgd_lock, flags);
48}
49
50static void split_page_count(int level)
51{
52 direct_pages_count[level]--;
53 direct_pages_count[level - 1] += PTRS_PER_PTE;
54}
55
56int arch_report_meminfo(char *page)
57{
58 int n = sprintf(page, "DirectMap4k: %8lu\n"
59 "DirectMap2M: %8lu\n",
60 direct_pages_count[PG_LEVEL_4K],
61 direct_pages_count[PG_LEVEL_2M]);
62#ifdef CONFIG_X86_64
63 n += sprintf(page + n, "DirectMap1G: %8lu\n",
64 direct_pages_count[PG_LEVEL_1G]);
65#endif
66 return n;
67}
68#else
69static inline void split_page_count(int level) { }
70#endif
71
37#ifdef CONFIG_X86_64 72#ifdef CONFIG_X86_64
38 73
39static inline unsigned long highmap_start_pfn(void) 74static inline unsigned long highmap_start_pfn(void)
@@ -500,6 +535,10 @@ static int split_large_page(pte_t *kpte, unsigned long address)
500 for (i = 0; i < PTRS_PER_PTE; i++, pfn += pfninc) 535 for (i = 0; i < PTRS_PER_PTE; i++, pfn += pfninc)
501 set_pte(&pbase[i], pfn_pte(pfn, ref_prot)); 536 set_pte(&pbase[i], pfn_pte(pfn, ref_prot));
502 537
538 if (address >= (unsigned long)__va(0) &&
539 address < (unsigned long)__va(max_pfn_mapped << PAGE_SHIFT))
540 split_page_count(level);
541
503 /* 542 /*
504 * Install the new, split up pagetable. Important details here: 543 * Install the new, split up pagetable. Important details here:
505 * 544 *
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
index 50159764f694..ee1d6d39edd4 100644
--- a/arch/x86/mm/pgtable.c
+++ b/arch/x86/mm/pgtable.c
@@ -255,7 +255,7 @@ int ptep_test_and_clear_young(struct vm_area_struct *vma,
255 255
256 if (pte_young(*ptep)) 256 if (pte_young(*ptep))
257 ret = test_and_clear_bit(_PAGE_BIT_ACCESSED, 257 ret = test_and_clear_bit(_PAGE_BIT_ACCESSED,
258 &ptep->pte); 258 (unsigned long *) &ptep->pte);
259 259
260 if (ret) 260 if (ret)
261 pte_update(vma->vm_mm, addr, ptep); 261 pte_update(vma->vm_mm, addr, ptep);
diff --git a/arch/x86/mm/srat_64.c b/arch/x86/mm/srat_64.c
index 99649dccad28..391d51035871 100644
--- a/arch/x86/mm/srat_64.c
+++ b/arch/x86/mm/srat_64.c
@@ -495,6 +495,7 @@ int __node_distance(int a, int b)
495 495
496EXPORT_SYMBOL(__node_distance); 496EXPORT_SYMBOL(__node_distance);
497 497
498#if defined(CONFIG_MEMORY_HOTPLUG_SPARSE) || defined(CONFIG_ACPI_HOTPLUG_MEMORY)
498int memory_add_physaddr_to_nid(u64 start) 499int memory_add_physaddr_to_nid(u64 start)
499{ 500{
500 int i, ret = 0; 501 int i, ret = 0;
@@ -506,4 +507,4 @@ int memory_add_physaddr_to_nid(u64 start)
506 return ret; 507 return ret;
507} 508}
508EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid); 509EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
509 510#endif
diff --git a/arch/x86/pci/Makefile_32 b/arch/x86/pci/Makefile_32
index 89ec35d00efd..f647e7e56da4 100644
--- a/arch/x86/pci/Makefile_32
+++ b/arch/x86/pci/Makefile_32
@@ -22,3 +22,4 @@ pci-$(CONFIG_X86_NUMAQ) := numa.o irq.o
22pci-$(CONFIG_NUMA) += mp_bus_to_node.o 22pci-$(CONFIG_NUMA) += mp_bus_to_node.o
23 23
24obj-y += $(pci-y) common.o early.o 24obj-y += $(pci-y) common.o early.o
25obj-y += amd_bus.o
diff --git a/arch/x86/pci/Makefile_64 b/arch/x86/pci/Makefile_64
index 8fbd19832cf6..fd47068c95de 100644
--- a/arch/x86/pci/Makefile_64
+++ b/arch/x86/pci/Makefile_64
@@ -13,5 +13,5 @@ obj-y += legacy.o irq.o common.o early.o
13# mmconfig has a 64bit special 13# mmconfig has a 64bit special
14obj-$(CONFIG_PCI_MMCONFIG) += mmconfig_64.o direct.o mmconfig-shared.o 14obj-$(CONFIG_PCI_MMCONFIG) += mmconfig_64.o direct.o mmconfig-shared.o
15 15
16obj-y += k8-bus_64.o 16obj-y += amd_bus.o
17 17
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index d95de2f199cd..464279da49c4 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -218,7 +218,6 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do
218 return bus; 218 return bus;
219} 219}
220 220
221extern int pci_routeirq;
222static int __init pci_acpi_init(void) 221static int __init pci_acpi_init(void)
223{ 222{
224 struct pci_dev *dev = NULL; 223 struct pci_dev *dev = NULL;
diff --git a/arch/x86/pci/k8-bus_64.c b/arch/x86/pci/amd_bus.c
index 5c2799c20e47..15f505d3a78e 100644
--- a/arch/x86/pci/k8-bus_64.c
+++ b/arch/x86/pci/amd_bus.c
@@ -1,5 +1,9 @@
1#include <linux/init.h> 1#include <linux/init.h>
2#include <linux/pci.h> 2#include <linux/pci.h>
3#include "pci.h"
4
5#ifdef CONFIG_X86_64
6
3#include <asm/pci-direct.h> 7#include <asm/pci-direct.h>
4#include <asm/mpspec.h> 8#include <asm/mpspec.h>
5#include <linux/cpumask.h> 9#include <linux/cpumask.h>
@@ -526,3 +530,31 @@ static int __init early_fill_mp_bus_info(void)
526} 530}
527 531
528postcore_initcall(early_fill_mp_bus_info); 532postcore_initcall(early_fill_mp_bus_info);
533
534#endif
535
536/* common 32/64 bit code */
537
538#define ENABLE_CF8_EXT_CFG (1ULL << 46)
539
540static void enable_pci_io_ecs_per_cpu(void *unused)
541{
542 u64 reg;
543 rdmsrl(MSR_AMD64_NB_CFG, reg);
544 if (!(reg & ENABLE_CF8_EXT_CFG)) {
545 reg |= ENABLE_CF8_EXT_CFG;
546 wrmsrl(MSR_AMD64_NB_CFG, reg);
547 }
548}
549
550static int __init enable_pci_io_ecs(void)
551{
552 /* assume all cpus from fam10h have IO ECS */
553 if (boot_cpu_data.x86 < 0x10)
554 return 0;
555 on_each_cpu(enable_pci_io_ecs_per_cpu, NULL, 1, 1);
556 pci_probe |= PCI_HAS_IO_ECS;
557 return 0;
558}
559
560postcore_initcall(enable_pci_io_ecs);
diff --git a/arch/x86/pci/direct.c b/arch/x86/pci/direct.c
index 21d1e0e0d535..9915293500fb 100644
--- a/arch/x86/pci/direct.c
+++ b/arch/x86/pci/direct.c
@@ -8,18 +8,21 @@
8#include "pci.h" 8#include "pci.h"
9 9
10/* 10/*
11 * Functions for accessing PCI configuration space with type 1 accesses 11 * Functions for accessing PCI base (first 256 bytes) and extended
12 * (4096 bytes per PCI function) configuration space with type 1
13 * accesses.
12 */ 14 */
13 15
14#define PCI_CONF1_ADDRESS(bus, devfn, reg) \ 16#define PCI_CONF1_ADDRESS(bus, devfn, reg) \
15 (0x80000000 | (bus << 16) | (devfn << 8) | (reg & ~3)) 17 (0x80000000 | ((reg & 0xF00) << 16) | (bus << 16) \
18 | (devfn << 8) | (reg & 0xFC))
16 19
17static int pci_conf1_read(unsigned int seg, unsigned int bus, 20static int pci_conf1_read(unsigned int seg, unsigned int bus,
18 unsigned int devfn, int reg, int len, u32 *value) 21 unsigned int devfn, int reg, int len, u32 *value)
19{ 22{
20 unsigned long flags; 23 unsigned long flags;
21 24
22 if ((bus > 255) || (devfn > 255) || (reg > 255)) { 25 if ((bus > 255) || (devfn > 255) || (reg > 4095)) {
23 *value = -1; 26 *value = -1;
24 return -EINVAL; 27 return -EINVAL;
25 } 28 }
@@ -50,7 +53,7 @@ static int pci_conf1_write(unsigned int seg, unsigned int bus,
50{ 53{
51 unsigned long flags; 54 unsigned long flags;
52 55
53 if ((bus > 255) || (devfn > 255) || (reg > 255)) 56 if ((bus > 255) || (devfn > 255) || (reg > 4095))
54 return -EINVAL; 57 return -EINVAL;
55 58
56 spin_lock_irqsave(&pci_config_lock, flags); 59 spin_lock_irqsave(&pci_config_lock, flags);
@@ -260,10 +263,18 @@ void __init pci_direct_init(int type)
260 return; 263 return;
261 printk(KERN_INFO "PCI: Using configuration type %d for base access\n", 264 printk(KERN_INFO "PCI: Using configuration type %d for base access\n",
262 type); 265 type);
263 if (type == 1) 266 if (type == 1) {
264 raw_pci_ops = &pci_direct_conf1; 267 raw_pci_ops = &pci_direct_conf1;
265 else 268 if (raw_pci_ext_ops)
266 raw_pci_ops = &pci_direct_conf2; 269 return;
270 if (!(pci_probe & PCI_HAS_IO_ECS))
271 return;
272 printk(KERN_INFO "PCI: Using configuration type 1 "
273 "for extended access\n");
274 raw_pci_ext_ops = &pci_direct_conf1;
275 return;
276 }
277 raw_pci_ops = &pci_direct_conf2;
267} 278}
268 279
269int __init pci_direct_probe(void) 280int __init pci_direct_probe(void)
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index ca8df9c260bc..f0859de23e20 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -11,8 +11,8 @@
11#include <linux/slab.h> 11#include <linux/slab.h>
12#include <linux/interrupt.h> 12#include <linux/interrupt.h>
13#include <linux/dmi.h> 13#include <linux/dmi.h>
14#include <asm/io.h> 14#include <linux/io.h>
15#include <asm/smp.h> 15#include <linux/smp.h>
16#include <asm/io_apic.h> 16#include <asm/io_apic.h>
17#include <linux/irq.h> 17#include <linux/irq.h>
18#include <linux/acpi.h> 18#include <linux/acpi.h>
@@ -61,7 +61,7 @@ void (*pcibios_disable_irq)(struct pci_dev *dev) = NULL;
61 * and perform checksum verification. 61 * and perform checksum verification.
62 */ 62 */
63 63
64static inline struct irq_routing_table * pirq_check_routing_table(u8 *addr) 64static inline struct irq_routing_table *pirq_check_routing_table(u8 *addr)
65{ 65{
66 struct irq_routing_table *rt; 66 struct irq_routing_table *rt;
67 int i; 67 int i;
@@ -74,7 +74,7 @@ static inline struct irq_routing_table * pirq_check_routing_table(u8 *addr)
74 rt->size < sizeof(struct irq_routing_table)) 74 rt->size < sizeof(struct irq_routing_table))
75 return NULL; 75 return NULL;
76 sum = 0; 76 sum = 0;
77 for (i=0; i < rt->size; i++) 77 for (i = 0; i < rt->size; i++)
78 sum += addr[i]; 78 sum += addr[i];
79 if (!sum) { 79 if (!sum) {
80 DBG(KERN_DEBUG "PCI: Interrupt Routing Table found at 0x%p\n", rt); 80 DBG(KERN_DEBUG "PCI: Interrupt Routing Table found at 0x%p\n", rt);
@@ -100,7 +100,7 @@ static struct irq_routing_table * __init pirq_find_routing_table(void)
100 return rt; 100 return rt;
101 printk(KERN_WARNING "PCI: PIRQ table NOT found at pirqaddr\n"); 101 printk(KERN_WARNING "PCI: PIRQ table NOT found at pirqaddr\n");
102 } 102 }
103 for(addr = (u8 *) __va(0xf0000); addr < (u8 *) __va(0x100000); addr += 16) { 103 for (addr = (u8 *) __va(0xf0000); addr < (u8 *) __va(0x100000); addr += 16) {
104 rt = pirq_check_routing_table(addr); 104 rt = pirq_check_routing_table(addr);
105 if (rt) 105 if (rt)
106 return rt; 106 return rt;
@@ -122,20 +122,20 @@ static void __init pirq_peer_trick(void)
122 struct irq_info *e; 122 struct irq_info *e;
123 123
124 memset(busmap, 0, sizeof(busmap)); 124 memset(busmap, 0, sizeof(busmap));
125 for(i=0; i < (rt->size - sizeof(struct irq_routing_table)) / sizeof(struct irq_info); i++) { 125 for (i = 0; i < (rt->size - sizeof(struct irq_routing_table)) / sizeof(struct irq_info); i++) {
126 e = &rt->slots[i]; 126 e = &rt->slots[i];
127#ifdef DEBUG 127#ifdef DEBUG
128 { 128 {
129 int j; 129 int j;
130 DBG(KERN_DEBUG "%02x:%02x slot=%02x", e->bus, e->devfn/8, e->slot); 130 DBG(KERN_DEBUG "%02x:%02x slot=%02x", e->bus, e->devfn/8, e->slot);
131 for(j=0; j<4; j++) 131 for (j = 0; j < 4; j++)
132 DBG(" %d:%02x/%04x", j, e->irq[j].link, e->irq[j].bitmap); 132 DBG(" %d:%02x/%04x", j, e->irq[j].link, e->irq[j].bitmap);
133 DBG("\n"); 133 DBG("\n");
134 } 134 }
135#endif 135#endif
136 busmap[e->bus] = 1; 136 busmap[e->bus] = 1;
137 } 137 }
138 for(i = 1; i < 256; i++) { 138 for (i = 1; i < 256; i++) {
139 int node; 139 int node;
140 if (!busmap[i] || pci_find_bus(0, i)) 140 if (!busmap[i] || pci_find_bus(0, i))
141 continue; 141 continue;
@@ -285,7 +285,7 @@ static int pirq_ite_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
285 static const unsigned char pirqmap[4] = { 1, 0, 2, 3 }; 285 static const unsigned char pirqmap[4] = { 1, 0, 2, 3 };
286 286
287 WARN_ON_ONCE(pirq > 4); 287 WARN_ON_ONCE(pirq > 4);
288 return read_config_nybble(router,0x43, pirqmap[pirq-1]); 288 return read_config_nybble(router, 0x43, pirqmap[pirq-1]);
289} 289}
290 290
291static int pirq_ite_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) 291static int pirq_ite_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
@@ -314,7 +314,7 @@ static int pirq_opti_set(struct pci_dev *router, struct pci_dev *dev, int pirq,
314 314
315/* 315/*
316 * Cyrix: nibble offset 0x5C 316 * Cyrix: nibble offset 0x5C
317 * 0x5C bits 7:4 is INTB bits 3:0 is INTA 317 * 0x5C bits 7:4 is INTB bits 3:0 is INTA
318 * 0x5D bits 7:4 is INTD bits 3:0 is INTC 318 * 0x5D bits 7:4 is INTD bits 3:0 is INTC
319 */ 319 */
320static int pirq_cyrix_get(struct pci_dev *router, struct pci_dev *dev, int pirq) 320static int pirq_cyrix_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
@@ -350,7 +350,7 @@ static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq,
350 * Apparently there are systems implementing PCI routing table using 350 * Apparently there are systems implementing PCI routing table using
351 * link values 0x01-0x04 and others using 0x41-0x44 for PCI INTA..D. 351 * link values 0x01-0x04 and others using 0x41-0x44 for PCI INTA..D.
352 * We try our best to handle both link mappings. 352 * We try our best to handle both link mappings.
353 * 353 *
354 * Currently (2003-05-21) it appears most SiS chipsets follow the 354 * Currently (2003-05-21) it appears most SiS chipsets follow the
355 * definition of routing registers from the SiS-5595 southbridge. 355 * definition of routing registers from the SiS-5595 southbridge.
356 * According to the SiS 5595 datasheets the revision id's of the 356 * According to the SiS 5595 datasheets the revision id's of the
@@ -370,7 +370,7 @@ static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq,
370 * 370 *
371 * 0x62: USBIRQ: 371 * 0x62: USBIRQ:
372 * bit 6 OHCI function disabled (0), enabled (1) 372 * bit 6 OHCI function disabled (0), enabled (1)
373 * 373 *
374 * 0x6a: ACPI/SCI IRQ: bits 4-6 reserved 374 * 0x6a: ACPI/SCI IRQ: bits 4-6 reserved
375 * 375 *
376 * 0x7e: Data Acq. Module IRQ - bits 4-6 reserved 376 * 0x7e: Data Acq. Module IRQ - bits 4-6 reserved
@@ -487,9 +487,7 @@ static int pirq_amd756_get(struct pci_dev *router, struct pci_dev *dev, int pirq
487 u8 irq; 487 u8 irq;
488 irq = 0; 488 irq = 0;
489 if (pirq <= 4) 489 if (pirq <= 4)
490 {
491 irq = read_config_nybble(router, 0x56, pirq - 1); 490 irq = read_config_nybble(router, 0x56, pirq - 1);
492 }
493 printk(KERN_INFO "AMD756: dev %04x:%04x, router pirq : %d get irq : %2d\n", 491 printk(KERN_INFO "AMD756: dev %04x:%04x, router pirq : %d get irq : %2d\n",
494 dev->vendor, dev->device, pirq, irq); 492 dev->vendor, dev->device, pirq, irq);
495 return irq; 493 return irq;
@@ -497,12 +495,10 @@ static int pirq_amd756_get(struct pci_dev *router, struct pci_dev *dev, int pirq
497 495
498static int pirq_amd756_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) 496static int pirq_amd756_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
499{ 497{
500 printk(KERN_INFO "AMD756: dev %04x:%04x, router pirq : %d SET irq : %2d\n", 498 printk(KERN_INFO "AMD756: dev %04x:%04x, router pirq : %d SET irq : %2d\n",
501 dev->vendor, dev->device, pirq, irq); 499 dev->vendor, dev->device, pirq, irq);
502 if (pirq <= 4) 500 if (pirq <= 4)
503 {
504 write_config_nybble(router, 0x56, pirq - 1, irq); 501 write_config_nybble(router, 0x56, pirq - 1, irq);
505 }
506 return 1; 502 return 1;
507} 503}
508 504
@@ -549,50 +545,49 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route
549 if (pci_dev_present(pirq_440gx)) 545 if (pci_dev_present(pirq_440gx))
550 return 0; 546 return 0;
551 547
552 switch(device) 548 switch (device) {
553 { 549 case PCI_DEVICE_ID_INTEL_82371FB_0:
554 case PCI_DEVICE_ID_INTEL_82371FB_0: 550 case PCI_DEVICE_ID_INTEL_82371SB_0:
555 case PCI_DEVICE_ID_INTEL_82371SB_0: 551 case PCI_DEVICE_ID_INTEL_82371AB_0:
556 case PCI_DEVICE_ID_INTEL_82371AB_0: 552 case PCI_DEVICE_ID_INTEL_82371MX:
557 case PCI_DEVICE_ID_INTEL_82371MX: 553 case PCI_DEVICE_ID_INTEL_82443MX_0:
558 case PCI_DEVICE_ID_INTEL_82443MX_0: 554 case PCI_DEVICE_ID_INTEL_82801AA_0:
559 case PCI_DEVICE_ID_INTEL_82801AA_0: 555 case PCI_DEVICE_ID_INTEL_82801AB_0:
560 case PCI_DEVICE_ID_INTEL_82801AB_0: 556 case PCI_DEVICE_ID_INTEL_82801BA_0:
561 case PCI_DEVICE_ID_INTEL_82801BA_0: 557 case PCI_DEVICE_ID_INTEL_82801BA_10:
562 case PCI_DEVICE_ID_INTEL_82801BA_10: 558 case PCI_DEVICE_ID_INTEL_82801CA_0:
563 case PCI_DEVICE_ID_INTEL_82801CA_0: 559 case PCI_DEVICE_ID_INTEL_82801CA_12:
564 case PCI_DEVICE_ID_INTEL_82801CA_12: 560 case PCI_DEVICE_ID_INTEL_82801DB_0:
565 case PCI_DEVICE_ID_INTEL_82801DB_0: 561 case PCI_DEVICE_ID_INTEL_82801E_0:
566 case PCI_DEVICE_ID_INTEL_82801E_0: 562 case PCI_DEVICE_ID_INTEL_82801EB_0:
567 case PCI_DEVICE_ID_INTEL_82801EB_0: 563 case PCI_DEVICE_ID_INTEL_ESB_1:
568 case PCI_DEVICE_ID_INTEL_ESB_1: 564 case PCI_DEVICE_ID_INTEL_ICH6_0:
569 case PCI_DEVICE_ID_INTEL_ICH6_0: 565 case PCI_DEVICE_ID_INTEL_ICH6_1:
570 case PCI_DEVICE_ID_INTEL_ICH6_1: 566 case PCI_DEVICE_ID_INTEL_ICH7_0:
571 case PCI_DEVICE_ID_INTEL_ICH7_0: 567 case PCI_DEVICE_ID_INTEL_ICH7_1:
572 case PCI_DEVICE_ID_INTEL_ICH7_1: 568 case PCI_DEVICE_ID_INTEL_ICH7_30:
573 case PCI_DEVICE_ID_INTEL_ICH7_30: 569 case PCI_DEVICE_ID_INTEL_ICH7_31:
574 case PCI_DEVICE_ID_INTEL_ICH7_31: 570 case PCI_DEVICE_ID_INTEL_ESB2_0:
575 case PCI_DEVICE_ID_INTEL_ESB2_0: 571 case PCI_DEVICE_ID_INTEL_ICH8_0:
576 case PCI_DEVICE_ID_INTEL_ICH8_0: 572 case PCI_DEVICE_ID_INTEL_ICH8_1:
577 case PCI_DEVICE_ID_INTEL_ICH8_1: 573 case PCI_DEVICE_ID_INTEL_ICH8_2:
578 case PCI_DEVICE_ID_INTEL_ICH8_2: 574 case PCI_DEVICE_ID_INTEL_ICH8_3:
579 case PCI_DEVICE_ID_INTEL_ICH8_3: 575 case PCI_DEVICE_ID_INTEL_ICH8_4:
580 case PCI_DEVICE_ID_INTEL_ICH8_4: 576 case PCI_DEVICE_ID_INTEL_ICH9_0:
581 case PCI_DEVICE_ID_INTEL_ICH9_0: 577 case PCI_DEVICE_ID_INTEL_ICH9_1:
582 case PCI_DEVICE_ID_INTEL_ICH9_1: 578 case PCI_DEVICE_ID_INTEL_ICH9_2:
583 case PCI_DEVICE_ID_INTEL_ICH9_2: 579 case PCI_DEVICE_ID_INTEL_ICH9_3:
584 case PCI_DEVICE_ID_INTEL_ICH9_3: 580 case PCI_DEVICE_ID_INTEL_ICH9_4:
585 case PCI_DEVICE_ID_INTEL_ICH9_4: 581 case PCI_DEVICE_ID_INTEL_ICH9_5:
586 case PCI_DEVICE_ID_INTEL_ICH9_5: 582 case PCI_DEVICE_ID_INTEL_TOLAPAI_0:
587 case PCI_DEVICE_ID_INTEL_TOLAPAI_0: 583 case PCI_DEVICE_ID_INTEL_ICH10_0:
588 case PCI_DEVICE_ID_INTEL_ICH10_0: 584 case PCI_DEVICE_ID_INTEL_ICH10_1:
589 case PCI_DEVICE_ID_INTEL_ICH10_1: 585 case PCI_DEVICE_ID_INTEL_ICH10_2:
590 case PCI_DEVICE_ID_INTEL_ICH10_2: 586 case PCI_DEVICE_ID_INTEL_ICH10_3:
591 case PCI_DEVICE_ID_INTEL_ICH10_3: 587 r->name = "PIIX/ICH";
592 r->name = "PIIX/ICH"; 588 r->get = pirq_piix_get;
593 r->get = pirq_piix_get; 589 r->set = pirq_piix_set;
594 r->set = pirq_piix_set; 590 return 1;
595 return 1;
596 } 591 }
597 return 0; 592 return 0;
598} 593}
@@ -606,7 +601,7 @@ static __init int via_router_probe(struct irq_router *r,
606 * workarounds for some buggy BIOSes 601 * workarounds for some buggy BIOSes
607 */ 602 */
608 if (device == PCI_DEVICE_ID_VIA_82C586_0) { 603 if (device == PCI_DEVICE_ID_VIA_82C586_0) {
609 switch(router->device) { 604 switch (router->device) {
610 case PCI_DEVICE_ID_VIA_82C686: 605 case PCI_DEVICE_ID_VIA_82C686:
611 /* 606 /*
612 * Asus k7m bios wrongly reports 82C686A 607 * Asus k7m bios wrongly reports 82C686A
@@ -631,7 +626,7 @@ static __init int via_router_probe(struct irq_router *r,
631 } 626 }
632 } 627 }
633 628
634 switch(device) { 629 switch (device) {
635 case PCI_DEVICE_ID_VIA_82C586_0: 630 case PCI_DEVICE_ID_VIA_82C586_0:
636 r->name = "VIA"; 631 r->name = "VIA";
637 r->get = pirq_via586_get; 632 r->get = pirq_via586_get;
@@ -654,13 +649,12 @@ static __init int via_router_probe(struct irq_router *r,
654 649
655static __init int vlsi_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) 650static __init int vlsi_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
656{ 651{
657 switch(device) 652 switch (device) {
658 { 653 case PCI_DEVICE_ID_VLSI_82C534:
659 case PCI_DEVICE_ID_VLSI_82C534: 654 r->name = "VLSI 82C534";
660 r->name = "VLSI 82C534"; 655 r->get = pirq_vlsi_get;
661 r->get = pirq_vlsi_get; 656 r->set = pirq_vlsi_set;
662 r->set = pirq_vlsi_set; 657 return 1;
663 return 1;
664 } 658 }
665 return 0; 659 return 0;
666} 660}
@@ -668,14 +662,13 @@ static __init int vlsi_router_probe(struct irq_router *r, struct pci_dev *router
668 662
669static __init int serverworks_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) 663static __init int serverworks_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
670{ 664{
671 switch(device) 665 switch (device) {
672 { 666 case PCI_DEVICE_ID_SERVERWORKS_OSB4:
673 case PCI_DEVICE_ID_SERVERWORKS_OSB4: 667 case PCI_DEVICE_ID_SERVERWORKS_CSB5:
674 case PCI_DEVICE_ID_SERVERWORKS_CSB5: 668 r->name = "ServerWorks";
675 r->name = "ServerWorks"; 669 r->get = pirq_serverworks_get;
676 r->get = pirq_serverworks_get; 670 r->set = pirq_serverworks_set;
677 r->set = pirq_serverworks_set; 671 return 1;
678 return 1;
679 } 672 }
680 return 0; 673 return 0;
681} 674}
@@ -684,7 +677,7 @@ static __init int sis_router_probe(struct irq_router *r, struct pci_dev *router,
684{ 677{
685 if (device != PCI_DEVICE_ID_SI_503) 678 if (device != PCI_DEVICE_ID_SI_503)
686 return 0; 679 return 0;
687 680
688 r->name = "SIS"; 681 r->name = "SIS";
689 r->get = pirq_sis_get; 682 r->get = pirq_sis_get;
690 r->set = pirq_sis_set; 683 r->set = pirq_sis_set;
@@ -693,47 +686,43 @@ static __init int sis_router_probe(struct irq_router *r, struct pci_dev *router,
693 686
694static __init int cyrix_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) 687static __init int cyrix_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
695{ 688{
696 switch(device) 689 switch (device) {
697 { 690 case PCI_DEVICE_ID_CYRIX_5520:
698 case PCI_DEVICE_ID_CYRIX_5520: 691 r->name = "NatSemi";
699 r->name = "NatSemi"; 692 r->get = pirq_cyrix_get;
700 r->get = pirq_cyrix_get; 693 r->set = pirq_cyrix_set;
701 r->set = pirq_cyrix_set; 694 return 1;
702 return 1;
703 } 695 }
704 return 0; 696 return 0;
705} 697}
706 698
707static __init int opti_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) 699static __init int opti_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
708{ 700{
709 switch(device) 701 switch (device) {
710 { 702 case PCI_DEVICE_ID_OPTI_82C700:
711 case PCI_DEVICE_ID_OPTI_82C700: 703 r->name = "OPTI";
712 r->name = "OPTI"; 704 r->get = pirq_opti_get;
713 r->get = pirq_opti_get; 705 r->set = pirq_opti_set;
714 r->set = pirq_opti_set; 706 return 1;
715 return 1;
716 } 707 }
717 return 0; 708 return 0;
718} 709}
719 710
720static __init int ite_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) 711static __init int ite_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
721{ 712{
722 switch(device) 713 switch (device) {
723 { 714 case PCI_DEVICE_ID_ITE_IT8330G_0:
724 case PCI_DEVICE_ID_ITE_IT8330G_0: 715 r->name = "ITE";
725 r->name = "ITE"; 716 r->get = pirq_ite_get;
726 r->get = pirq_ite_get; 717 r->set = pirq_ite_set;
727 r->set = pirq_ite_set; 718 return 1;
728 return 1;
729 } 719 }
730 return 0; 720 return 0;
731} 721}
732 722
733static __init int ali_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) 723static __init int ali_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
734{ 724{
735 switch(device) 725 switch (device) {
736 {
737 case PCI_DEVICE_ID_AL_M1533: 726 case PCI_DEVICE_ID_AL_M1533:
738 case PCI_DEVICE_ID_AL_M1563: 727 case PCI_DEVICE_ID_AL_M1563:
739 printk(KERN_DEBUG "PCI: Using ALI IRQ Router\n"); 728 printk(KERN_DEBUG "PCI: Using ALI IRQ Router\n");
@@ -747,25 +736,24 @@ static __init int ali_router_probe(struct irq_router *r, struct pci_dev *router,
747 736
748static __init int amd_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) 737static __init int amd_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
749{ 738{
750 switch(device) 739 switch (device) {
751 { 740 case PCI_DEVICE_ID_AMD_VIPER_740B:
752 case PCI_DEVICE_ID_AMD_VIPER_740B: 741 r->name = "AMD756";
753 r->name = "AMD756"; 742 break;
754 break; 743 case PCI_DEVICE_ID_AMD_VIPER_7413:
755 case PCI_DEVICE_ID_AMD_VIPER_7413: 744 r->name = "AMD766";
756 r->name = "AMD766"; 745 break;
757 break; 746 case PCI_DEVICE_ID_AMD_VIPER_7443:
758 case PCI_DEVICE_ID_AMD_VIPER_7443: 747 r->name = "AMD768";
759 r->name = "AMD768"; 748 break;
760 break; 749 default:
761 default: 750 return 0;
762 return 0;
763 } 751 }
764 r->get = pirq_amd756_get; 752 r->get = pirq_amd756_get;
765 r->set = pirq_amd756_set; 753 r->set = pirq_amd756_set;
766 return 1; 754 return 1;
767} 755}
768 756
769static __init int pico_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) 757static __init int pico_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
770{ 758{
771 switch (device) { 759 switch (device) {
@@ -807,7 +795,7 @@ static struct pci_dev *pirq_router_dev;
807 * FIXME: should we have an option to say "generic for 795 * FIXME: should we have an option to say "generic for
808 * chipset" ? 796 * chipset" ?
809 */ 797 */
810 798
811static void __init pirq_find_router(struct irq_router *r) 799static void __init pirq_find_router(struct irq_router *r)
812{ 800{
813 struct irq_routing_table *rt = pirq_table; 801 struct irq_routing_table *rt = pirq_table;
@@ -826,7 +814,7 @@ static void __init pirq_find_router(struct irq_router *r)
826 r->name = "default"; 814 r->name = "default";
827 r->get = NULL; 815 r->get = NULL;
828 r->set = NULL; 816 r->set = NULL;
829 817
830 DBG(KERN_DEBUG "PCI: Attempting to find IRQ router for %04x:%04x\n", 818 DBG(KERN_DEBUG "PCI: Attempting to find IRQ router for %04x:%04x\n",
831 rt->rtr_vendor, rt->rtr_device); 819 rt->rtr_vendor, rt->rtr_device);
832 820
@@ -837,7 +825,7 @@ static void __init pirq_find_router(struct irq_router *r)
837 return; 825 return;
838 } 826 }
839 827
840 for( h = pirq_routers; h->vendor; h++) { 828 for (h = pirq_routers; h->vendor; h++) {
841 /* First look for a router match */ 829 /* First look for a router match */
842 if (rt->rtr_vendor == h->vendor && h->probe(r, pirq_router_dev, rt->rtr_device)) 830 if (rt->rtr_vendor == h->vendor && h->probe(r, pirq_router_dev, rt->rtr_device))
843 break; 831 break;
@@ -889,7 +877,7 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign)
889 877
890 if (!pirq_table) 878 if (!pirq_table)
891 return 0; 879 return 0;
892 880
893 DBG(KERN_DEBUG "IRQ for %s[%c]", pci_name(dev), 'A' + pin); 881 DBG(KERN_DEBUG "IRQ for %s[%c]", pci_name(dev), 'A' + pin);
894 info = pirq_get_info(dev); 882 info = pirq_get_info(dev);
895 if (!info) { 883 if (!info) {
@@ -928,8 +916,10 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign)
928 */ 916 */
929 newirq = dev->irq; 917 newirq = dev->irq;
930 if (newirq && !((1 << newirq) & mask)) { 918 if (newirq && !((1 << newirq) & mask)) {
931 if ( pci_probe & PCI_USE_PIRQ_MASK) newirq = 0; 919 if (pci_probe & PCI_USE_PIRQ_MASK)
932 else printk("\n" KERN_WARNING 920 newirq = 0;
921 else
922 printk("\n" KERN_WARNING
933 "PCI: IRQ %i for device %s doesn't match PIRQ mask " 923 "PCI: IRQ %i for device %s doesn't match PIRQ mask "
934 "- try pci=usepirqmask\n" KERN_DEBUG, newirq, 924 "- try pci=usepirqmask\n" KERN_DEBUG, newirq,
935 pci_name(dev)); 925 pci_name(dev));
@@ -949,8 +939,8 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign)
949 irq = pirq & 0xf; 939 irq = pirq & 0xf;
950 DBG(" -> hardcoded IRQ %d\n", irq); 940 DBG(" -> hardcoded IRQ %d\n", irq);
951 msg = "Hardcoded"; 941 msg = "Hardcoded";
952 } else if ( r->get && (irq = r->get(pirq_router_dev, dev, pirq)) && \ 942 } else if (r->get && (irq = r->get(pirq_router_dev, dev, pirq)) && \
953 ((!(pci_probe & PCI_USE_PIRQ_MASK)) || ((1 << irq) & mask)) ) { 943 ((!(pci_probe & PCI_USE_PIRQ_MASK)) || ((1 << irq) & mask))) {
954 DBG(" -> got IRQ %d\n", irq); 944 DBG(" -> got IRQ %d\n", irq);
955 msg = "Found"; 945 msg = "Found";
956 eisa_set_level_irq(irq); 946 eisa_set_level_irq(irq);
@@ -985,15 +975,15 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign)
985 continue; 975 continue;
986 if (info->irq[pin].link == pirq) { 976 if (info->irq[pin].link == pirq) {
987 /* We refuse to override the dev->irq information. Give a warning! */ 977 /* We refuse to override the dev->irq information. Give a warning! */
988 if ( dev2->irq && dev2->irq != irq && \ 978 if (dev2->irq && dev2->irq != irq && \
989 (!(pci_probe & PCI_USE_PIRQ_MASK) || \ 979 (!(pci_probe & PCI_USE_PIRQ_MASK) || \
990 ((1 << dev2->irq) & mask)) ) { 980 ((1 << dev2->irq) & mask))) {
991#ifndef CONFIG_PCI_MSI 981#ifndef CONFIG_PCI_MSI
992 printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n", 982 printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n",
993 pci_name(dev2), dev2->irq, irq); 983 pci_name(dev2), dev2->irq, irq);
994#endif 984#endif
995 continue; 985 continue;
996 } 986 }
997 dev2->irq = irq; 987 dev2->irq = irq;
998 pirq_penalty[irq]++; 988 pirq_penalty[irq]++;
999 if (dev != dev2) 989 if (dev != dev2)
@@ -1031,8 +1021,7 @@ static void __init pcibios_fixup_irqs(void)
1031 /* 1021 /*
1032 * Recalculate IRQ numbers if we use the I/O APIC. 1022 * Recalculate IRQ numbers if we use the I/O APIC.
1033 */ 1023 */
1034 if (io_apic_assign_pci_irqs) 1024 if (io_apic_assign_pci_irqs) {
1035 {
1036 int irq; 1025 int irq;
1037 1026
1038 if (pin) { 1027 if (pin) {
@@ -1045,10 +1034,10 @@ static void __init pcibios_fixup_irqs(void)
1045 * busses itself so we should get into this branch reliably. 1034 * busses itself so we should get into this branch reliably.
1046 */ 1035 */
1047 if (irq < 0 && dev->bus->parent) { /* go back to the bridge */ 1036 if (irq < 0 && dev->bus->parent) { /* go back to the bridge */
1048 struct pci_dev * bridge = dev->bus->self; 1037 struct pci_dev *bridge = dev->bus->self;
1049 1038
1050 pin = (pin + PCI_SLOT(dev->devfn)) % 4; 1039 pin = (pin + PCI_SLOT(dev->devfn)) % 4;
1051 irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number, 1040 irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number,
1052 PCI_SLOT(bridge->devfn), pin); 1041 PCI_SLOT(bridge->devfn), pin);
1053 if (irq >= 0) 1042 if (irq >= 0)
1054 printk(KERN_WARNING "PCI: using PPB %s[%c] to get irq %d\n", 1043 printk(KERN_WARNING "PCI: using PPB %s[%c] to get irq %d\n",
@@ -1138,7 +1127,7 @@ static int __init pcibios_irq_init(void)
1138 pirq_find_router(&pirq_router); 1127 pirq_find_router(&pirq_router);
1139 if (pirq_table->exclusive_irqs) { 1128 if (pirq_table->exclusive_irqs) {
1140 int i; 1129 int i;
1141 for (i=0; i<16; i++) 1130 for (i = 0; i < 16; i++)
1142 if (!(pirq_table->exclusive_irqs & (1 << i))) 1131 if (!(pirq_table->exclusive_irqs & (1 << i)))
1143 pirq_penalty[i] += 100; 1132 pirq_penalty[i] += 100;
1144 } 1133 }
@@ -1203,10 +1192,10 @@ static int pirq_enable_irq(struct pci_dev *dev)
1203 */ 1192 */
1204 temp_dev = dev; 1193 temp_dev = dev;
1205 while (irq < 0 && dev->bus->parent) { /* go back to the bridge */ 1194 while (irq < 0 && dev->bus->parent) { /* go back to the bridge */
1206 struct pci_dev * bridge = dev->bus->self; 1195 struct pci_dev *bridge = dev->bus->self;
1207 1196
1208 pin = (pin + PCI_SLOT(dev->devfn)) % 4; 1197 pin = (pin + PCI_SLOT(dev->devfn)) % 4;
1209 irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number, 1198 irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number,
1210 PCI_SLOT(bridge->devfn), pin); 1199 PCI_SLOT(bridge->devfn), pin);
1211 if (irq >= 0) 1200 if (irq >= 0)
1212 printk(KERN_WARNING "PCI: using PPB %s[%c] to get irq %d\n", 1201 printk(KERN_WARNING "PCI: using PPB %s[%c] to get irq %d\n",
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c
index 0cfebecf2a8f..23faaa890ffc 100644
--- a/arch/x86/pci/mmconfig-shared.c
+++ b/arch/x86/pci/mmconfig-shared.c
@@ -374,7 +374,7 @@ reject:
374 374
375static int __initdata known_bridge; 375static int __initdata known_bridge;
376 376
377void __init __pci_mmcfg_init(int early) 377static void __init __pci_mmcfg_init(int early)
378{ 378{
379 /* MMCONFIG disabled */ 379 /* MMCONFIG disabled */
380 if ((pci_probe & PCI_PROBE_MMCONF) == 0) 380 if ((pci_probe & PCI_PROBE_MMCONF) == 0)
diff --git a/arch/x86/pci/pci.h b/arch/x86/pci/pci.h
index 720c4c554534..ba263e626a68 100644
--- a/arch/x86/pci/pci.h
+++ b/arch/x86/pci/pci.h
@@ -27,6 +27,7 @@
27#define PCI_CAN_SKIP_ISA_ALIGN 0x8000 27#define PCI_CAN_SKIP_ISA_ALIGN 0x8000
28#define PCI_USE__CRS 0x10000 28#define PCI_USE__CRS 0x10000
29#define PCI_CHECK_ENABLE_AMD_MMCONF 0x20000 29#define PCI_CHECK_ENABLE_AMD_MMCONF 0x20000
30#define PCI_HAS_IO_ECS 0x40000
30 31
31extern unsigned int pci_probe; 32extern unsigned int pci_probe;
32extern unsigned long pirq_table_addr; 33extern unsigned long pirq_table_addr;
diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index 3fdd51497a83..19a6cfaf5db9 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -16,7 +16,7 @@
16#include "vextern.h" /* Just for VMAGIC. */ 16#include "vextern.h" /* Just for VMAGIC. */
17#undef VEXTERN 17#undef VEXTERN
18 18
19int vdso_enabled = 1; 19unsigned int __read_mostly vdso_enabled = 1;
20 20
21extern char vdso_start[], vdso_end[]; 21extern char vdso_start[], vdso_end[];
22extern unsigned short vdso_sync_cpuid; 22extern unsigned short vdso_sync_cpuid;
diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig
index 2e641be2737e..c2cc99580871 100644
--- a/arch/x86/xen/Kconfig
+++ b/arch/x86/xen/Kconfig
@@ -5,9 +5,20 @@
5config XEN 5config XEN
6 bool "Xen guest support" 6 bool "Xen guest support"
7 select PARAVIRT 7 select PARAVIRT
8 select PARAVIRT_CLOCK
8 depends on X86_32 9 depends on X86_32
9 depends on X86_CMPXCHG && X86_TSC && !(X86_VISWS || X86_VOYAGER) 10 depends on X86_CMPXCHG && X86_TSC && X86_PAE && !(X86_VISWS || X86_VOYAGER)
10 help 11 help
11 This is the Linux Xen port. Enabling this will allow the 12 This is the Linux Xen port. Enabling this will allow the
12 kernel to boot in a paravirtualized environment under the 13 kernel to boot in a paravirtualized environment under the
13 Xen hypervisor. 14 Xen hypervisor.
15
16config XEN_MAX_DOMAIN_MEMORY
17 int "Maximum allowed size of a domain in gigabytes"
18 default 8
19 depends on XEN
20 help
21 The pseudo-physical to machine address array is sized
22 according to the maximum possible memory size of a Xen
23 domain. This array uses 1 page per gigabyte, so there's no
24 need to be too stingy here. \ No newline at end of file
diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile
index 3d8df981d5fd..2ba2d1649131 100644
--- a/arch/x86/xen/Makefile
+++ b/arch/x86/xen/Makefile
@@ -1,4 +1,4 @@
1obj-y := enlighten.o setup.o multicalls.o mmu.o \ 1obj-y := enlighten.o setup.o multicalls.o mmu.o \
2 time.o manage.o xen-asm.o grant-table.o 2 time.o xen-asm.o grant-table.o suspend.o
3 3
4obj-$(CONFIG_SMP) += smp.o 4obj-$(CONFIG_SMP) += smp.o
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index c8a56e457d61..bd74229081c3 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -75,13 +75,13 @@ DEFINE_PER_CPU(unsigned long, xen_current_cr3); /* actual vcpu cr3 */
75struct start_info *xen_start_info; 75struct start_info *xen_start_info;
76EXPORT_SYMBOL_GPL(xen_start_info); 76EXPORT_SYMBOL_GPL(xen_start_info);
77 77
78static /* __initdata */ struct shared_info dummy_shared_info; 78struct shared_info xen_dummy_shared_info;
79 79
80/* 80/*
81 * Point at some empty memory to start with. We map the real shared_info 81 * Point at some empty memory to start with. We map the real shared_info
82 * page as soon as fixmap is up and running. 82 * page as soon as fixmap is up and running.
83 */ 83 */
84struct shared_info *HYPERVISOR_shared_info = (void *)&dummy_shared_info; 84struct shared_info *HYPERVISOR_shared_info = (void *)&xen_dummy_shared_info;
85 85
86/* 86/*
87 * Flag to determine whether vcpu info placement is available on all 87 * Flag to determine whether vcpu info placement is available on all
@@ -98,13 +98,13 @@ struct shared_info *HYPERVISOR_shared_info = (void *)&dummy_shared_info;
98 */ 98 */
99static int have_vcpu_info_placement = 1; 99static int have_vcpu_info_placement = 1;
100 100
101static void __init xen_vcpu_setup(int cpu) 101static void xen_vcpu_setup(int cpu)
102{ 102{
103 struct vcpu_register_vcpu_info info; 103 struct vcpu_register_vcpu_info info;
104 int err; 104 int err;
105 struct vcpu_info *vcpup; 105 struct vcpu_info *vcpup;
106 106
107 BUG_ON(HYPERVISOR_shared_info == &dummy_shared_info); 107 BUG_ON(HYPERVISOR_shared_info == &xen_dummy_shared_info);
108 per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu]; 108 per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu];
109 109
110 if (!have_vcpu_info_placement) 110 if (!have_vcpu_info_placement)
@@ -136,11 +136,41 @@ static void __init xen_vcpu_setup(int cpu)
136 } 136 }
137} 137}
138 138
139/*
140 * On restore, set the vcpu placement up again.
141 * If it fails, then we're in a bad state, since
142 * we can't back out from using it...
143 */
144void xen_vcpu_restore(void)
145{
146 if (have_vcpu_info_placement) {
147 int cpu;
148
149 for_each_online_cpu(cpu) {
150 bool other_cpu = (cpu != smp_processor_id());
151
152 if (other_cpu &&
153 HYPERVISOR_vcpu_op(VCPUOP_down, cpu, NULL))
154 BUG();
155
156 xen_vcpu_setup(cpu);
157
158 if (other_cpu &&
159 HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL))
160 BUG();
161 }
162
163 BUG_ON(!have_vcpu_info_placement);
164 }
165}
166
139static void __init xen_banner(void) 167static void __init xen_banner(void)
140{ 168{
141 printk(KERN_INFO "Booting paravirtualized kernel on %s\n", 169 printk(KERN_INFO "Booting paravirtualized kernel on %s\n",
142 pv_info.name); 170 pv_info.name);
143 printk(KERN_INFO "Hypervisor signature: %s\n", xen_start_info->magic); 171 printk(KERN_INFO "Hypervisor signature: %s%s\n",
172 xen_start_info->magic,
173 xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : "");
144} 174}
145 175
146static void xen_cpuid(unsigned int *ax, unsigned int *bx, 176static void xen_cpuid(unsigned int *ax, unsigned int *bx,
@@ -235,13 +265,13 @@ static void xen_irq_enable(void)
235{ 265{
236 struct vcpu_info *vcpu; 266 struct vcpu_info *vcpu;
237 267
238 /* There's a one instruction preempt window here. We need to 268 /* We don't need to worry about being preempted here, since
239 make sure we're don't switch CPUs between getting the vcpu 269 either a) interrupts are disabled, so no preemption, or b)
240 pointer and updating the mask. */ 270 the caller is confused and is trying to re-enable interrupts
241 preempt_disable(); 271 on an indeterminate processor. */
272
242 vcpu = x86_read_percpu(xen_vcpu); 273 vcpu = x86_read_percpu(xen_vcpu);
243 vcpu->evtchn_upcall_mask = 0; 274 vcpu->evtchn_upcall_mask = 0;
244 preempt_enable_no_resched();
245 275
246 /* Doesn't matter if we get preempted here, because any 276 /* Doesn't matter if we get preempted here, because any
247 pending event will get dealt with anyway. */ 277 pending event will get dealt with anyway. */
@@ -254,7 +284,7 @@ static void xen_irq_enable(void)
254static void xen_safe_halt(void) 284static void xen_safe_halt(void)
255{ 285{
256 /* Blocking includes an implicit local_irq_enable(). */ 286 /* Blocking includes an implicit local_irq_enable(). */
257 if (HYPERVISOR_sched_op(SCHEDOP_block, 0) != 0) 287 if (HYPERVISOR_sched_op(SCHEDOP_block, NULL) != 0)
258 BUG(); 288 BUG();
259} 289}
260 290
@@ -607,6 +637,30 @@ static void xen_flush_tlb_others(const cpumask_t *cpus, struct mm_struct *mm,
607 xen_mc_issue(PARAVIRT_LAZY_MMU); 637 xen_mc_issue(PARAVIRT_LAZY_MMU);
608} 638}
609 639
640static void xen_clts(void)
641{
642 struct multicall_space mcs;
643
644 mcs = xen_mc_entry(0);
645
646 MULTI_fpu_taskswitch(mcs.mc, 0);
647
648 xen_mc_issue(PARAVIRT_LAZY_CPU);
649}
650
651static void xen_write_cr0(unsigned long cr0)
652{
653 struct multicall_space mcs;
654
655 /* Only pay attention to cr0.TS; everything else is
656 ignored. */
657 mcs = xen_mc_entry(0);
658
659 MULTI_fpu_taskswitch(mcs.mc, (cr0 & X86_CR0_TS) != 0);
660
661 xen_mc_issue(PARAVIRT_LAZY_CPU);
662}
663
610static void xen_write_cr2(unsigned long cr2) 664static void xen_write_cr2(unsigned long cr2)
611{ 665{
612 x86_read_percpu(xen_vcpu)->arch.cr2 = cr2; 666 x86_read_percpu(xen_vcpu)->arch.cr2 = cr2;
@@ -624,8 +678,10 @@ static unsigned long xen_read_cr2_direct(void)
624 678
625static void xen_write_cr4(unsigned long cr4) 679static void xen_write_cr4(unsigned long cr4)
626{ 680{
627 /* Just ignore cr4 changes; Xen doesn't allow us to do 681 cr4 &= ~X86_CR4_PGE;
628 anything anyway. */ 682 cr4 &= ~X86_CR4_PSE;
683
684 native_write_cr4(cr4);
629} 685}
630 686
631static unsigned long xen_read_cr3(void) 687static unsigned long xen_read_cr3(void)
@@ -785,38 +841,35 @@ static __init void xen_set_pte_init(pte_t *ptep, pte_t pte)
785static __init void xen_pagetable_setup_start(pgd_t *base) 841static __init void xen_pagetable_setup_start(pgd_t *base)
786{ 842{
787 pgd_t *xen_pgd = (pgd_t *)xen_start_info->pt_base; 843 pgd_t *xen_pgd = (pgd_t *)xen_start_info->pt_base;
844 int i;
788 845
789 /* special set_pte for pagetable initialization */ 846 /* special set_pte for pagetable initialization */
790 pv_mmu_ops.set_pte = xen_set_pte_init; 847 pv_mmu_ops.set_pte = xen_set_pte_init;
791 848
792 init_mm.pgd = base; 849 init_mm.pgd = base;
793 /* 850 /*
794 * copy top-level of Xen-supplied pagetable into place. For 851 * copy top-level of Xen-supplied pagetable into place. This
795 * !PAE we can use this as-is, but for PAE it is a stand-in 852 * is a stand-in while we copy the pmd pages.
796 * while we copy the pmd pages.
797 */ 853 */
798 memcpy(base, xen_pgd, PTRS_PER_PGD * sizeof(pgd_t)); 854 memcpy(base, xen_pgd, PTRS_PER_PGD * sizeof(pgd_t));
799 855
800 if (PTRS_PER_PMD > 1) { 856 /*
801 int i; 857 * For PAE, need to allocate new pmds, rather than
802 /* 858 * share Xen's, since Xen doesn't like pmd's being
803 * For PAE, need to allocate new pmds, rather than 859 * shared between address spaces.
804 * share Xen's, since Xen doesn't like pmd's being 860 */
805 * shared between address spaces. 861 for (i = 0; i < PTRS_PER_PGD; i++) {
806 */ 862 if (pgd_val_ma(xen_pgd[i]) & _PAGE_PRESENT) {
807 for (i = 0; i < PTRS_PER_PGD; i++) { 863 pmd_t *pmd = (pmd_t *)alloc_bootmem_low_pages(PAGE_SIZE);
808 if (pgd_val_ma(xen_pgd[i]) & _PAGE_PRESENT) {
809 pmd_t *pmd = (pmd_t *)alloc_bootmem_low_pages(PAGE_SIZE);
810 864
811 memcpy(pmd, (void *)pgd_page_vaddr(xen_pgd[i]), 865 memcpy(pmd, (void *)pgd_page_vaddr(xen_pgd[i]),
812 PAGE_SIZE); 866 PAGE_SIZE);
813 867
814 make_lowmem_page_readonly(pmd); 868 make_lowmem_page_readonly(pmd);
815 869
816 set_pgd(&base[i], __pgd(1 + __pa(pmd))); 870 set_pgd(&base[i], __pgd(1 + __pa(pmd)));
817 } else 871 } else
818 pgd_clear(&base[i]); 872 pgd_clear(&base[i]);
819 }
820 } 873 }
821 874
822 /* make sure zero_page is mapped RO so we can use it in pagetables */ 875 /* make sure zero_page is mapped RO so we can use it in pagetables */
@@ -834,7 +887,7 @@ static __init void xen_pagetable_setup_start(pgd_t *base)
834 PFN_DOWN(__pa(xen_start_info->pt_base))); 887 PFN_DOWN(__pa(xen_start_info->pt_base)));
835} 888}
836 889
837static __init void setup_shared_info(void) 890void xen_setup_shared_info(void)
838{ 891{
839 if (!xen_feature(XENFEAT_auto_translated_physmap)) { 892 if (!xen_feature(XENFEAT_auto_translated_physmap)) {
840 unsigned long addr = fix_to_virt(FIX_PARAVIRT_BOOTMAP); 893 unsigned long addr = fix_to_virt(FIX_PARAVIRT_BOOTMAP);
@@ -857,6 +910,8 @@ static __init void setup_shared_info(void)
857 /* In UP this is as good a place as any to set up shared info */ 910 /* In UP this is as good a place as any to set up shared info */
858 xen_setup_vcpu_info_placement(); 911 xen_setup_vcpu_info_placement();
859#endif 912#endif
913
914 xen_setup_mfn_list_list();
860} 915}
861 916
862static __init void xen_pagetable_setup_done(pgd_t *base) 917static __init void xen_pagetable_setup_done(pgd_t *base)
@@ -869,25 +924,23 @@ static __init void xen_pagetable_setup_done(pgd_t *base)
869 pv_mmu_ops.release_pmd = xen_release_pmd; 924 pv_mmu_ops.release_pmd = xen_release_pmd;
870 pv_mmu_ops.set_pte = xen_set_pte; 925 pv_mmu_ops.set_pte = xen_set_pte;
871 926
872 setup_shared_info(); 927 xen_setup_shared_info();
873 928
874 /* Actually pin the pagetable down, but we can't set PG_pinned 929 /* Actually pin the pagetable down, but we can't set PG_pinned
875 yet because the page structures don't exist yet. */ 930 yet because the page structures don't exist yet. */
876 { 931 pin_pagetable_pfn(MMUEXT_PIN_L3_TABLE, PFN_DOWN(__pa(base)));
877 unsigned level; 932}
878 933
879#ifdef CONFIG_X86_PAE 934static __init void xen_post_allocator_init(void)
880 level = MMUEXT_PIN_L3_TABLE; 935{
881#else 936 pv_mmu_ops.set_pmd = xen_set_pmd;
882 level = MMUEXT_PIN_L2_TABLE; 937 pv_mmu_ops.set_pud = xen_set_pud;
883#endif
884 938
885 pin_pagetable_pfn(level, PFN_DOWN(__pa(base))); 939 xen_mark_init_mm_pinned();
886 }
887} 940}
888 941
889/* This is called once we have the cpu_possible_map */ 942/* This is called once we have the cpu_possible_map */
890void __init xen_setup_vcpu_info_placement(void) 943void xen_setup_vcpu_info_placement(void)
891{ 944{
892 int cpu; 945 int cpu;
893 946
@@ -973,7 +1026,7 @@ static const struct pv_init_ops xen_init_ops __initdata = {
973 .banner = xen_banner, 1026 .banner = xen_banner,
974 .memory_setup = xen_memory_setup, 1027 .memory_setup = xen_memory_setup,
975 .arch_setup = xen_arch_setup, 1028 .arch_setup = xen_arch_setup,
976 .post_allocator_init = xen_mark_init_mm_pinned, 1029 .post_allocator_init = xen_post_allocator_init,
977}; 1030};
978 1031
979static const struct pv_time_ops xen_time_ops __initdata = { 1032static const struct pv_time_ops xen_time_ops __initdata = {
@@ -991,10 +1044,10 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
991 .set_debugreg = xen_set_debugreg, 1044 .set_debugreg = xen_set_debugreg,
992 .get_debugreg = xen_get_debugreg, 1045 .get_debugreg = xen_get_debugreg,
993 1046
994 .clts = native_clts, 1047 .clts = xen_clts,
995 1048
996 .read_cr0 = native_read_cr0, 1049 .read_cr0 = native_read_cr0,
997 .write_cr0 = native_write_cr0, 1050 .write_cr0 = xen_write_cr0,
998 1051
999 .read_cr4 = native_read_cr4, 1052 .read_cr4 = native_read_cr4,
1000 .read_cr4_safe = native_read_cr4_safe, 1053 .read_cr4_safe = native_read_cr4_safe,
@@ -1085,24 +1138,26 @@ static const struct pv_mmu_ops xen_mmu_ops __initdata = {
1085 1138
1086 .set_pte = NULL, /* see xen_pagetable_setup_* */ 1139 .set_pte = NULL, /* see xen_pagetable_setup_* */
1087 .set_pte_at = xen_set_pte_at, 1140 .set_pte_at = xen_set_pte_at,
1088 .set_pmd = xen_set_pmd, 1141 .set_pmd = xen_set_pmd_hyper,
1142
1143 .ptep_modify_prot_start = __ptep_modify_prot_start,
1144 .ptep_modify_prot_commit = __ptep_modify_prot_commit,
1089 1145
1090 .pte_val = xen_pte_val, 1146 .pte_val = xen_pte_val,
1147 .pte_flags = native_pte_val,
1091 .pgd_val = xen_pgd_val, 1148 .pgd_val = xen_pgd_val,
1092 1149
1093 .make_pte = xen_make_pte, 1150 .make_pte = xen_make_pte,
1094 .make_pgd = xen_make_pgd, 1151 .make_pgd = xen_make_pgd,
1095 1152
1096#ifdef CONFIG_X86_PAE
1097 .set_pte_atomic = xen_set_pte_atomic, 1153 .set_pte_atomic = xen_set_pte_atomic,
1098 .set_pte_present = xen_set_pte_at, 1154 .set_pte_present = xen_set_pte_at,
1099 .set_pud = xen_set_pud, 1155 .set_pud = xen_set_pud_hyper,
1100 .pte_clear = xen_pte_clear, 1156 .pte_clear = xen_pte_clear,
1101 .pmd_clear = xen_pmd_clear, 1157 .pmd_clear = xen_pmd_clear,
1102 1158
1103 .make_pmd = xen_make_pmd, 1159 .make_pmd = xen_make_pmd,
1104 .pmd_val = xen_pmd_val, 1160 .pmd_val = xen_pmd_val,
1105#endif /* PAE */
1106 1161
1107 .activate_mm = xen_activate_mm, 1162 .activate_mm = xen_activate_mm,
1108 .dup_mmap = xen_dup_mmap, 1163 .dup_mmap = xen_dup_mmap,
@@ -1129,11 +1184,13 @@ static const struct smp_ops xen_smp_ops __initdata = {
1129 1184
1130static void xen_reboot(int reason) 1185static void xen_reboot(int reason)
1131{ 1186{
1187 struct sched_shutdown r = { .reason = reason };
1188
1132#ifdef CONFIG_SMP 1189#ifdef CONFIG_SMP
1133 smp_send_stop(); 1190 smp_send_stop();
1134#endif 1191#endif
1135 1192
1136 if (HYPERVISOR_sched_op(SCHEDOP_shutdown, reason)) 1193 if (HYPERVISOR_sched_op(SCHEDOP_shutdown, &r))
1137 BUG(); 1194 BUG();
1138} 1195}
1139 1196
@@ -1188,6 +1245,8 @@ asmlinkage void __init xen_start_kernel(void)
1188 1245
1189 BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0); 1246 BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0);
1190 1247
1248 xen_setup_features();
1249
1191 /* Install Xen paravirt ops */ 1250 /* Install Xen paravirt ops */
1192 pv_info = xen_info; 1251 pv_info = xen_info;
1193 pv_init_ops = xen_init_ops; 1252 pv_init_ops = xen_init_ops;
@@ -1197,17 +1256,20 @@ asmlinkage void __init xen_start_kernel(void)
1197 pv_apic_ops = xen_apic_ops; 1256 pv_apic_ops = xen_apic_ops;
1198 pv_mmu_ops = xen_mmu_ops; 1257 pv_mmu_ops = xen_mmu_ops;
1199 1258
1259 if (xen_feature(XENFEAT_mmu_pt_update_preserve_ad)) {
1260 pv_mmu_ops.ptep_modify_prot_start = xen_ptep_modify_prot_start;
1261 pv_mmu_ops.ptep_modify_prot_commit = xen_ptep_modify_prot_commit;
1262 }
1263
1200 machine_ops = xen_machine_ops; 1264 machine_ops = xen_machine_ops;
1201 1265
1202#ifdef CONFIG_SMP 1266#ifdef CONFIG_SMP
1203 smp_ops = xen_smp_ops; 1267 smp_ops = xen_smp_ops;
1204#endif 1268#endif
1205 1269
1206 xen_setup_features();
1207
1208 /* Get mfn list */ 1270 /* Get mfn list */
1209 if (!xen_feature(XENFEAT_auto_translated_physmap)) 1271 if (!xen_feature(XENFEAT_auto_translated_physmap))
1210 phys_to_machine_mapping = (unsigned long *)xen_start_info->mfn_list; 1272 xen_build_dynamic_phys_to_machine();
1211 1273
1212 pgd = (pgd_t *)xen_start_info->pt_base; 1274 pgd = (pgd_t *)xen_start_info->pt_base;
1213 1275
@@ -1228,6 +1290,11 @@ asmlinkage void __init xen_start_kernel(void)
1228 if (xen_feature(XENFEAT_supervisor_mode_kernel)) 1290 if (xen_feature(XENFEAT_supervisor_mode_kernel))
1229 pv_info.kernel_rpl = 0; 1291 pv_info.kernel_rpl = 0;
1230 1292
1293 /* Prevent unwanted bits from being set in PTEs. */
1294 __supported_pte_mask &= ~_PAGE_GLOBAL;
1295 if (!is_initial_xendomain())
1296 __supported_pte_mask &= ~(_PAGE_PWT | _PAGE_PCD);
1297
1231 /* set the limit of our address space */ 1298 /* set the limit of our address space */
1232 xen_reserve_top(); 1299 xen_reserve_top();
1233 1300
@@ -1242,8 +1309,11 @@ asmlinkage void __init xen_start_kernel(void)
1242 ? __pa(xen_start_info->mod_start) : 0; 1309 ? __pa(xen_start_info->mod_start) : 0;
1243 boot_params.hdr.ramdisk_size = xen_start_info->mod_len; 1310 boot_params.hdr.ramdisk_size = xen_start_info->mod_len;
1244 1311
1245 if (!is_initial_xendomain()) 1312 if (!is_initial_xendomain()) {
1313 add_preferred_console("xenboot", 0, NULL);
1314 add_preferred_console("tty", 0, NULL);
1246 add_preferred_console("hvc", 0, NULL); 1315 add_preferred_console("hvc", 0, NULL);
1316 }
1247 1317
1248 /* Start the world */ 1318 /* Start the world */
1249 start_kernel(); 1319 start_kernel();
diff --git a/arch/x86/xen/manage.c b/arch/x86/xen/manage.c
deleted file mode 100644
index aa7af9e6abc0..000000000000
--- a/arch/x86/xen/manage.c
+++ /dev/null
@@ -1,143 +0,0 @@
1/*
2 * Handle extern requests for shutdown, reboot and sysrq
3 */
4#include <linux/kernel.h>
5#include <linux/err.h>
6#include <linux/reboot.h>
7#include <linux/sysrq.h>
8
9#include <xen/xenbus.h>
10
11#define SHUTDOWN_INVALID -1
12#define SHUTDOWN_POWEROFF 0
13#define SHUTDOWN_SUSPEND 2
14/* Code 3 is SHUTDOWN_CRASH, which we don't use because the domain can only
15 * report a crash, not be instructed to crash!
16 * HALT is the same as POWEROFF, as far as we're concerned. The tools use
17 * the distinction when we return the reason code to them.
18 */
19#define SHUTDOWN_HALT 4
20
21/* Ignore multiple shutdown requests. */
22static int shutting_down = SHUTDOWN_INVALID;
23
24static void shutdown_handler(struct xenbus_watch *watch,
25 const char **vec, unsigned int len)
26{
27 char *str;
28 struct xenbus_transaction xbt;
29 int err;
30
31 if (shutting_down != SHUTDOWN_INVALID)
32 return;
33
34 again:
35 err = xenbus_transaction_start(&xbt);
36 if (err)
37 return;
38
39 str = (char *)xenbus_read(xbt, "control", "shutdown", NULL);
40 /* Ignore read errors and empty reads. */
41 if (XENBUS_IS_ERR_READ(str)) {
42 xenbus_transaction_end(xbt, 1);
43 return;
44 }
45
46 xenbus_write(xbt, "control", "shutdown", "");
47
48 err = xenbus_transaction_end(xbt, 0);
49 if (err == -EAGAIN) {
50 kfree(str);
51 goto again;
52 }
53
54 if (strcmp(str, "poweroff") == 0 ||
55 strcmp(str, "halt") == 0)
56 orderly_poweroff(false);
57 else if (strcmp(str, "reboot") == 0)
58 ctrl_alt_del();
59 else {
60 printk(KERN_INFO "Ignoring shutdown request: %s\n", str);
61 shutting_down = SHUTDOWN_INVALID;
62 }
63
64 kfree(str);
65}
66
67static void sysrq_handler(struct xenbus_watch *watch, const char **vec,
68 unsigned int len)
69{
70 char sysrq_key = '\0';
71 struct xenbus_transaction xbt;
72 int err;
73
74 again:
75 err = xenbus_transaction_start(&xbt);
76 if (err)
77 return;
78 if (!xenbus_scanf(xbt, "control", "sysrq", "%c", &sysrq_key)) {
79 printk(KERN_ERR "Unable to read sysrq code in "
80 "control/sysrq\n");
81 xenbus_transaction_end(xbt, 1);
82 return;
83 }
84
85 if (sysrq_key != '\0')
86 xenbus_printf(xbt, "control", "sysrq", "%c", '\0');
87
88 err = xenbus_transaction_end(xbt, 0);
89 if (err == -EAGAIN)
90 goto again;
91
92 if (sysrq_key != '\0')
93 handle_sysrq(sysrq_key, NULL);
94}
95
96static struct xenbus_watch shutdown_watch = {
97 .node = "control/shutdown",
98 .callback = shutdown_handler
99};
100
101static struct xenbus_watch sysrq_watch = {
102 .node = "control/sysrq",
103 .callback = sysrq_handler
104};
105
106static int setup_shutdown_watcher(void)
107{
108 int err;
109
110 err = register_xenbus_watch(&shutdown_watch);
111 if (err) {
112 printk(KERN_ERR "Failed to set shutdown watcher\n");
113 return err;
114 }
115
116 err = register_xenbus_watch(&sysrq_watch);
117 if (err) {
118 printk(KERN_ERR "Failed to set sysrq watcher\n");
119 return err;
120 }
121
122 return 0;
123}
124
125static int shutdown_event(struct notifier_block *notifier,
126 unsigned long event,
127 void *data)
128{
129 setup_shutdown_watcher();
130 return NOTIFY_DONE;
131}
132
133static int __init setup_shutdown_event(void)
134{
135 static struct notifier_block xenstore_notifier = {
136 .notifier_call = shutdown_event
137 };
138 register_xenstore_notifier(&xenstore_notifier);
139
140 return 0;
141}
142
143subsys_initcall(setup_shutdown_event);
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index 3525ef523a74..42b3b9ed641d 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -56,6 +56,131 @@
56#include "multicalls.h" 56#include "multicalls.h"
57#include "mmu.h" 57#include "mmu.h"
58 58
59#define P2M_ENTRIES_PER_PAGE (PAGE_SIZE / sizeof(unsigned long))
60#define TOP_ENTRIES (MAX_DOMAIN_PAGES / P2M_ENTRIES_PER_PAGE)
61
62/* Placeholder for holes in the address space */
63static unsigned long p2m_missing[P2M_ENTRIES_PER_PAGE]
64 __attribute__((section(".data.page_aligned"))) =
65 { [ 0 ... P2M_ENTRIES_PER_PAGE-1 ] = ~0UL };
66
67 /* Array of pointers to pages containing p2m entries */
68static unsigned long *p2m_top[TOP_ENTRIES]
69 __attribute__((section(".data.page_aligned"))) =
70 { [ 0 ... TOP_ENTRIES - 1] = &p2m_missing[0] };
71
72/* Arrays of p2m arrays expressed in mfns used for save/restore */
73static unsigned long p2m_top_mfn[TOP_ENTRIES]
74 __attribute__((section(".bss.page_aligned")));
75
76static unsigned long p2m_top_mfn_list[
77 PAGE_ALIGN(TOP_ENTRIES / P2M_ENTRIES_PER_PAGE)]
78 __attribute__((section(".bss.page_aligned")));
79
80static inline unsigned p2m_top_index(unsigned long pfn)
81{
82 BUG_ON(pfn >= MAX_DOMAIN_PAGES);
83 return pfn / P2M_ENTRIES_PER_PAGE;
84}
85
86static inline unsigned p2m_index(unsigned long pfn)
87{
88 return pfn % P2M_ENTRIES_PER_PAGE;
89}
90
91/* Build the parallel p2m_top_mfn structures */
92void xen_setup_mfn_list_list(void)
93{
94 unsigned pfn, idx;
95
96 for(pfn = 0; pfn < MAX_DOMAIN_PAGES; pfn += P2M_ENTRIES_PER_PAGE) {
97 unsigned topidx = p2m_top_index(pfn);
98
99 p2m_top_mfn[topidx] = virt_to_mfn(p2m_top[topidx]);
100 }
101
102 for(idx = 0; idx < ARRAY_SIZE(p2m_top_mfn_list); idx++) {
103 unsigned topidx = idx * P2M_ENTRIES_PER_PAGE;
104 p2m_top_mfn_list[idx] = virt_to_mfn(&p2m_top_mfn[topidx]);
105 }
106
107 BUG_ON(HYPERVISOR_shared_info == &xen_dummy_shared_info);
108
109 HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list_list =
110 virt_to_mfn(p2m_top_mfn_list);
111 HYPERVISOR_shared_info->arch.max_pfn = xen_start_info->nr_pages;
112}
113
114/* Set up p2m_top to point to the domain-builder provided p2m pages */
115void __init xen_build_dynamic_phys_to_machine(void)
116{
117 unsigned long *mfn_list = (unsigned long *)xen_start_info->mfn_list;
118 unsigned long max_pfn = min(MAX_DOMAIN_PAGES, xen_start_info->nr_pages);
119 unsigned pfn;
120
121 for(pfn = 0; pfn < max_pfn; pfn += P2M_ENTRIES_PER_PAGE) {
122 unsigned topidx = p2m_top_index(pfn);
123
124 p2m_top[topidx] = &mfn_list[pfn];
125 }
126}
127
128unsigned long get_phys_to_machine(unsigned long pfn)
129{
130 unsigned topidx, idx;
131
132 if (unlikely(pfn >= MAX_DOMAIN_PAGES))
133 return INVALID_P2M_ENTRY;
134
135 topidx = p2m_top_index(pfn);
136 idx = p2m_index(pfn);
137 return p2m_top[topidx][idx];
138}
139EXPORT_SYMBOL_GPL(get_phys_to_machine);
140
141static void alloc_p2m(unsigned long **pp, unsigned long *mfnp)
142{
143 unsigned long *p;
144 unsigned i;
145
146 p = (void *)__get_free_page(GFP_KERNEL | __GFP_NOFAIL);
147 BUG_ON(p == NULL);
148
149 for(i = 0; i < P2M_ENTRIES_PER_PAGE; i++)
150 p[i] = INVALID_P2M_ENTRY;
151
152 if (cmpxchg(pp, p2m_missing, p) != p2m_missing)
153 free_page((unsigned long)p);
154 else
155 *mfnp = virt_to_mfn(p);
156}
157
158void set_phys_to_machine(unsigned long pfn, unsigned long mfn)
159{
160 unsigned topidx, idx;
161
162 if (unlikely(xen_feature(XENFEAT_auto_translated_physmap))) {
163 BUG_ON(pfn != mfn && mfn != INVALID_P2M_ENTRY);
164 return;
165 }
166
167 if (unlikely(pfn >= MAX_DOMAIN_PAGES)) {
168 BUG_ON(mfn != INVALID_P2M_ENTRY);
169 return;
170 }
171
172 topidx = p2m_top_index(pfn);
173 if (p2m_top[topidx] == p2m_missing) {
174 /* no need to allocate a page to store an invalid entry */
175 if (mfn == INVALID_P2M_ENTRY)
176 return;
177 alloc_p2m(&p2m_top[topidx], &p2m_top_mfn[topidx]);
178 }
179
180 idx = p2m_index(pfn);
181 p2m_top[topidx][idx] = mfn;
182}
183
59xmaddr_t arbitrary_virt_to_machine(unsigned long address) 184xmaddr_t arbitrary_virt_to_machine(unsigned long address)
60{ 185{
61 unsigned int level; 186 unsigned int level;
@@ -98,24 +223,60 @@ void make_lowmem_page_readwrite(void *vaddr)
98} 223}
99 224
100 225
101void xen_set_pmd(pmd_t *ptr, pmd_t val) 226static bool page_pinned(void *ptr)
227{
228 struct page *page = virt_to_page(ptr);
229
230 return PagePinned(page);
231}
232
233static void extend_mmu_update(const struct mmu_update *update)
102{ 234{
103 struct multicall_space mcs; 235 struct multicall_space mcs;
104 struct mmu_update *u; 236 struct mmu_update *u;
105 237
106 preempt_disable(); 238 mcs = xen_mc_extend_args(__HYPERVISOR_mmu_update, sizeof(*u));
239
240 if (mcs.mc != NULL)
241 mcs.mc->args[1]++;
242 else {
243 mcs = __xen_mc_entry(sizeof(*u));
244 MULTI_mmu_update(mcs.mc, mcs.args, 1, NULL, DOMID_SELF);
245 }
107 246
108 mcs = xen_mc_entry(sizeof(*u));
109 u = mcs.args; 247 u = mcs.args;
110 u->ptr = virt_to_machine(ptr).maddr; 248 *u = *update;
111 u->val = pmd_val_ma(val); 249}
112 MULTI_mmu_update(mcs.mc, u, 1, NULL, DOMID_SELF); 250
251void xen_set_pmd_hyper(pmd_t *ptr, pmd_t val)
252{
253 struct mmu_update u;
254
255 preempt_disable();
256
257 xen_mc_batch();
258
259 u.ptr = virt_to_machine(ptr).maddr;
260 u.val = pmd_val_ma(val);
261 extend_mmu_update(&u);
113 262
114 xen_mc_issue(PARAVIRT_LAZY_MMU); 263 xen_mc_issue(PARAVIRT_LAZY_MMU);
115 264
116 preempt_enable(); 265 preempt_enable();
117} 266}
118 267
268void xen_set_pmd(pmd_t *ptr, pmd_t val)
269{
270 /* If page is not pinned, we can just update the entry
271 directly */
272 if (!page_pinned(ptr)) {
273 *ptr = val;
274 return;
275 }
276
277 xen_set_pmd_hyper(ptr, val);
278}
279
119/* 280/*
120 * Associate a virtual page frame with a given physical page frame 281 * Associate a virtual page frame with a given physical page frame
121 * and protection flags for that frame. 282 * and protection flags for that frame.
@@ -179,68 +340,105 @@ out:
179 preempt_enable(); 340 preempt_enable();
180} 341}
181 342
182pteval_t xen_pte_val(pte_t pte) 343pte_t xen_ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
183{ 344{
184 pteval_t ret = pte.pte; 345 /* Just return the pte as-is. We preserve the bits on commit */
346 return *ptep;
347}
348
349void xen_ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr,
350 pte_t *ptep, pte_t pte)
351{
352 struct mmu_update u;
353
354 xen_mc_batch();
185 355
186 if (ret & _PAGE_PRESENT) 356 u.ptr = virt_to_machine(ptep).maddr | MMU_PT_UPDATE_PRESERVE_AD;
187 ret = machine_to_phys(XMADDR(ret)).paddr | _PAGE_PRESENT; 357 u.val = pte_val_ma(pte);
358 extend_mmu_update(&u);
188 359
189 return ret; 360 xen_mc_issue(PARAVIRT_LAZY_MMU);
190} 361}
191 362
192pgdval_t xen_pgd_val(pgd_t pgd) 363/* Assume pteval_t is equivalent to all the other *val_t types. */
364static pteval_t pte_mfn_to_pfn(pteval_t val)
193{ 365{
194 pgdval_t ret = pgd.pgd; 366 if (val & _PAGE_PRESENT) {
195 if (ret & _PAGE_PRESENT) 367 unsigned long mfn = (val & PTE_MASK) >> PAGE_SHIFT;
196 ret = machine_to_phys(XMADDR(ret)).paddr | _PAGE_PRESENT; 368 pteval_t flags = val & ~PTE_MASK;
197 return ret; 369 val = ((pteval_t)mfn_to_pfn(mfn) << PAGE_SHIFT) | flags;
370 }
371
372 return val;
198} 373}
199 374
200pte_t xen_make_pte(pteval_t pte) 375static pteval_t pte_pfn_to_mfn(pteval_t val)
201{ 376{
202 if (pte & _PAGE_PRESENT) { 377 if (val & _PAGE_PRESENT) {
203 pte = phys_to_machine(XPADDR(pte)).maddr; 378 unsigned long pfn = (val & PTE_MASK) >> PAGE_SHIFT;
204 pte &= ~(_PAGE_PCD | _PAGE_PWT); 379 pteval_t flags = val & ~PTE_MASK;
380 val = ((pteval_t)pfn_to_mfn(pfn) << PAGE_SHIFT) | flags;
205 } 381 }
206 382
207 return (pte_t){ .pte = pte }; 383 return val;
208} 384}
209 385
210pgd_t xen_make_pgd(pgdval_t pgd) 386pteval_t xen_pte_val(pte_t pte)
211{ 387{
212 if (pgd & _PAGE_PRESENT) 388 return pte_mfn_to_pfn(pte.pte);
213 pgd = phys_to_machine(XPADDR(pgd)).maddr; 389}
214 390
215 return (pgd_t){ pgd }; 391pgdval_t xen_pgd_val(pgd_t pgd)
392{
393 return pte_mfn_to_pfn(pgd.pgd);
394}
395
396pte_t xen_make_pte(pteval_t pte)
397{
398 pte = pte_pfn_to_mfn(pte);
399 return native_make_pte(pte);
400}
401
402pgd_t xen_make_pgd(pgdval_t pgd)
403{
404 pgd = pte_pfn_to_mfn(pgd);
405 return native_make_pgd(pgd);
216} 406}
217 407
218pmdval_t xen_pmd_val(pmd_t pmd) 408pmdval_t xen_pmd_val(pmd_t pmd)
219{ 409{
220 pmdval_t ret = native_pmd_val(pmd); 410 return pte_mfn_to_pfn(pmd.pmd);
221 if (ret & _PAGE_PRESENT)
222 ret = machine_to_phys(XMADDR(ret)).paddr | _PAGE_PRESENT;
223 return ret;
224} 411}
225#ifdef CONFIG_X86_PAE 412
226void xen_set_pud(pud_t *ptr, pud_t val) 413void xen_set_pud_hyper(pud_t *ptr, pud_t val)
227{ 414{
228 struct multicall_space mcs; 415 struct mmu_update u;
229 struct mmu_update *u;
230 416
231 preempt_disable(); 417 preempt_disable();
232 418
233 mcs = xen_mc_entry(sizeof(*u)); 419 xen_mc_batch();
234 u = mcs.args; 420
235 u->ptr = virt_to_machine(ptr).maddr; 421 u.ptr = virt_to_machine(ptr).maddr;
236 u->val = pud_val_ma(val); 422 u.val = pud_val_ma(val);
237 MULTI_mmu_update(mcs.mc, u, 1, NULL, DOMID_SELF); 423 extend_mmu_update(&u);
238 424
239 xen_mc_issue(PARAVIRT_LAZY_MMU); 425 xen_mc_issue(PARAVIRT_LAZY_MMU);
240 426
241 preempt_enable(); 427 preempt_enable();
242} 428}
243 429
430void xen_set_pud(pud_t *ptr, pud_t val)
431{
432 /* If page is not pinned, we can just update the entry
433 directly */
434 if (!page_pinned(ptr)) {
435 *ptr = val;
436 return;
437 }
438
439 xen_set_pud_hyper(ptr, val);
440}
441
244void xen_set_pte(pte_t *ptep, pte_t pte) 442void xen_set_pte(pte_t *ptep, pte_t pte)
245{ 443{
246 ptep->pte_high = pte.pte_high; 444 ptep->pte_high = pte.pte_high;
@@ -262,22 +460,14 @@ void xen_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
262 460
263void xen_pmd_clear(pmd_t *pmdp) 461void xen_pmd_clear(pmd_t *pmdp)
264{ 462{
265 xen_set_pmd(pmdp, __pmd(0)); 463 set_pmd(pmdp, __pmd(0));
266} 464}
267 465
268pmd_t xen_make_pmd(pmdval_t pmd) 466pmd_t xen_make_pmd(pmdval_t pmd)
269{ 467{
270 if (pmd & _PAGE_PRESENT) 468 pmd = pte_pfn_to_mfn(pmd);
271 pmd = phys_to_machine(XPADDR(pmd)).maddr;
272
273 return native_make_pmd(pmd); 469 return native_make_pmd(pmd);
274} 470}
275#else /* !PAE */
276void xen_set_pte(pte_t *ptep, pte_t pte)
277{
278 *ptep = pte;
279}
280#endif /* CONFIG_X86_PAE */
281 471
282/* 472/*
283 (Yet another) pagetable walker. This one is intended for pinning a 473 (Yet another) pagetable walker. This one is intended for pinning a
@@ -430,8 +620,6 @@ static int pin_page(struct page *page, enum pt_level level)
430 read-only, and can be pinned. */ 620 read-only, and can be pinned. */
431void xen_pgd_pin(pgd_t *pgd) 621void xen_pgd_pin(pgd_t *pgd)
432{ 622{
433 unsigned level;
434
435 xen_mc_batch(); 623 xen_mc_batch();
436 624
437 if (pgd_walk(pgd, pin_page, TASK_SIZE)) { 625 if (pgd_walk(pgd, pin_page, TASK_SIZE)) {
@@ -441,15 +629,31 @@ void xen_pgd_pin(pgd_t *pgd)
441 xen_mc_batch(); 629 xen_mc_batch();
442 } 630 }
443 631
444#ifdef CONFIG_X86_PAE 632 xen_do_pin(MMUEXT_PIN_L3_TABLE, PFN_DOWN(__pa(pgd)));
445 level = MMUEXT_PIN_L3_TABLE; 633 xen_mc_issue(0);
446#else 634}
447 level = MMUEXT_PIN_L2_TABLE; 635
448#endif 636/*
637 * On save, we need to pin all pagetables to make sure they get their
638 * mfns turned into pfns. Search the list for any unpinned pgds and pin
639 * them (unpinned pgds are not currently in use, probably because the
640 * process is under construction or destruction).
641 */
642void xen_mm_pin_all(void)
643{
644 unsigned long flags;
645 struct page *page;
449 646
450 xen_do_pin(level, PFN_DOWN(__pa(pgd))); 647 spin_lock_irqsave(&pgd_lock, flags);
451 648
452 xen_mc_issue(0); 649 list_for_each_entry(page, &pgd_list, lru) {
650 if (!PagePinned(page)) {
651 xen_pgd_pin((pgd_t *)page_address(page));
652 SetPageSavePinned(page);
653 }
654 }
655
656 spin_unlock_irqrestore(&pgd_lock, flags);
453} 657}
454 658
455/* The init_mm pagetable is really pinned as soon as its created, but 659/* The init_mm pagetable is really pinned as soon as its created, but
@@ -509,6 +713,29 @@ static void xen_pgd_unpin(pgd_t *pgd)
509 xen_mc_issue(0); 713 xen_mc_issue(0);
510} 714}
511 715
716/*
717 * On resume, undo any pinning done at save, so that the rest of the
718 * kernel doesn't see any unexpected pinned pagetables.
719 */
720void xen_mm_unpin_all(void)
721{
722 unsigned long flags;
723 struct page *page;
724
725 spin_lock_irqsave(&pgd_lock, flags);
726
727 list_for_each_entry(page, &pgd_list, lru) {
728 if (PageSavePinned(page)) {
729 BUG_ON(!PagePinned(page));
730 printk("unpinning pinned %p\n", page_address(page));
731 xen_pgd_unpin((pgd_t *)page_address(page));
732 ClearPageSavePinned(page);
733 }
734 }
735
736 spin_unlock_irqrestore(&pgd_lock, flags);
737}
738
512void xen_activate_mm(struct mm_struct *prev, struct mm_struct *next) 739void xen_activate_mm(struct mm_struct *prev, struct mm_struct *next)
513{ 740{
514 spin_lock(&next->page_table_lock); 741 spin_lock(&next->page_table_lock);
@@ -602,7 +829,7 @@ void xen_exit_mmap(struct mm_struct *mm)
602 spin_lock(&mm->page_table_lock); 829 spin_lock(&mm->page_table_lock);
603 830
604 /* pgd may not be pinned in the error exit path of execve */ 831 /* pgd may not be pinned in the error exit path of execve */
605 if (PagePinned(virt_to_page(mm->pgd))) 832 if (page_pinned(mm->pgd))
606 xen_pgd_unpin(mm->pgd); 833 xen_pgd_unpin(mm->pgd);
607 834
608 spin_unlock(&mm->page_table_lock); 835 spin_unlock(&mm->page_table_lock);
diff --git a/arch/x86/xen/mmu.h b/arch/x86/xen/mmu.h
index b5e189b1519d..297bf9f5b8bc 100644
--- a/arch/x86/xen/mmu.h
+++ b/arch/x86/xen/mmu.h
@@ -25,10 +25,6 @@ enum pt_level {
25 25
26void set_pte_mfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags); 26void set_pte_mfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags);
27 27
28void xen_set_pte(pte_t *ptep, pte_t pteval);
29void xen_set_pte_at(struct mm_struct *mm, unsigned long addr,
30 pte_t *ptep, pte_t pteval);
31void xen_set_pmd(pmd_t *pmdp, pmd_t pmdval);
32 28
33void xen_activate_mm(struct mm_struct *prev, struct mm_struct *next); 29void xen_activate_mm(struct mm_struct *prev, struct mm_struct *next);
34void xen_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm); 30void xen_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm);
@@ -37,31 +33,27 @@ void xen_exit_mmap(struct mm_struct *mm);
37void xen_pgd_pin(pgd_t *pgd); 33void xen_pgd_pin(pgd_t *pgd);
38//void xen_pgd_unpin(pgd_t *pgd); 34//void xen_pgd_unpin(pgd_t *pgd);
39 35
40#ifdef CONFIG_X86_PAE 36pteval_t xen_pte_val(pte_t);
41unsigned long long xen_pte_val(pte_t); 37pmdval_t xen_pmd_val(pmd_t);
42unsigned long long xen_pmd_val(pmd_t); 38pgdval_t xen_pgd_val(pgd_t);
43unsigned long long xen_pgd_val(pgd_t);
44 39
45pte_t xen_make_pte(unsigned long long); 40pte_t xen_make_pte(pteval_t);
46pmd_t xen_make_pmd(unsigned long long); 41pmd_t xen_make_pmd(pmdval_t);
47pgd_t xen_make_pgd(unsigned long long); 42pgd_t xen_make_pgd(pgdval_t);
48 43
44void xen_set_pte(pte_t *ptep, pte_t pteval);
49void xen_set_pte_at(struct mm_struct *mm, unsigned long addr, 45void xen_set_pte_at(struct mm_struct *mm, unsigned long addr,
50 pte_t *ptep, pte_t pteval); 46 pte_t *ptep, pte_t pteval);
51void xen_set_pte_atomic(pte_t *ptep, pte_t pte); 47void xen_set_pte_atomic(pte_t *ptep, pte_t pte);
48void xen_set_pmd(pmd_t *pmdp, pmd_t pmdval);
52void xen_set_pud(pud_t *ptr, pud_t val); 49void xen_set_pud(pud_t *ptr, pud_t val);
50void xen_set_pmd_hyper(pmd_t *pmdp, pmd_t pmdval);
51void xen_set_pud_hyper(pud_t *ptr, pud_t val);
53void xen_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep); 52void xen_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep);
54void xen_pmd_clear(pmd_t *pmdp); 53void xen_pmd_clear(pmd_t *pmdp);
55 54
56 55pte_t xen_ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr, pte_t *ptep);
57#else 56void xen_ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr,
58unsigned long xen_pte_val(pte_t); 57 pte_t *ptep, pte_t pte);
59unsigned long xen_pmd_val(pmd_t);
60unsigned long xen_pgd_val(pgd_t);
61
62pte_t xen_make_pte(unsigned long);
63pmd_t xen_make_pmd(unsigned long);
64pgd_t xen_make_pgd(unsigned long);
65#endif
66 58
67#endif /* _XEN_MMU_H */ 59#endif /* _XEN_MMU_H */
diff --git a/arch/x86/xen/multicalls.c b/arch/x86/xen/multicalls.c
index 5791eb2e3750..3c63c4da7ed1 100644
--- a/arch/x86/xen/multicalls.c
+++ b/arch/x86/xen/multicalls.c
@@ -29,14 +29,14 @@
29#define MC_DEBUG 1 29#define MC_DEBUG 1
30 30
31#define MC_BATCH 32 31#define MC_BATCH 32
32#define MC_ARGS (MC_BATCH * 16 / sizeof(u64)) 32#define MC_ARGS (MC_BATCH * 16)
33 33
34struct mc_buffer { 34struct mc_buffer {
35 struct multicall_entry entries[MC_BATCH]; 35 struct multicall_entry entries[MC_BATCH];
36#if MC_DEBUG 36#if MC_DEBUG
37 struct multicall_entry debug[MC_BATCH]; 37 struct multicall_entry debug[MC_BATCH];
38#endif 38#endif
39 u64 args[MC_ARGS]; 39 unsigned char args[MC_ARGS];
40 struct callback { 40 struct callback {
41 void (*fn)(void *); 41 void (*fn)(void *);
42 void *data; 42 void *data;
@@ -107,20 +107,48 @@ struct multicall_space __xen_mc_entry(size_t args)
107{ 107{
108 struct mc_buffer *b = &__get_cpu_var(mc_buffer); 108 struct mc_buffer *b = &__get_cpu_var(mc_buffer);
109 struct multicall_space ret; 109 struct multicall_space ret;
110 unsigned argspace = (args + sizeof(u64) - 1) / sizeof(u64); 110 unsigned argidx = roundup(b->argidx, sizeof(u64));
111 111
112 BUG_ON(preemptible()); 112 BUG_ON(preemptible());
113 BUG_ON(argspace > MC_ARGS); 113 BUG_ON(b->argidx > MC_ARGS);
114 114
115 if (b->mcidx == MC_BATCH || 115 if (b->mcidx == MC_BATCH ||
116 (b->argidx + argspace) > MC_ARGS) 116 (argidx + args) > MC_ARGS) {
117 xen_mc_flush(); 117 xen_mc_flush();
118 argidx = roundup(b->argidx, sizeof(u64));
119 }
118 120
119 ret.mc = &b->entries[b->mcidx]; 121 ret.mc = &b->entries[b->mcidx];
120 b->mcidx++; 122 b->mcidx++;
123 ret.args = &b->args[argidx];
124 b->argidx = argidx + args;
125
126 BUG_ON(b->argidx > MC_ARGS);
127 return ret;
128}
129
130struct multicall_space xen_mc_extend_args(unsigned long op, size_t size)
131{
132 struct mc_buffer *b = &__get_cpu_var(mc_buffer);
133 struct multicall_space ret = { NULL, NULL };
134
135 BUG_ON(preemptible());
136 BUG_ON(b->argidx > MC_ARGS);
137
138 if (b->mcidx == 0)
139 return ret;
140
141 if (b->entries[b->mcidx - 1].op != op)
142 return ret;
143
144 if ((b->argidx + size) > MC_ARGS)
145 return ret;
146
147 ret.mc = &b->entries[b->mcidx - 1];
121 ret.args = &b->args[b->argidx]; 148 ret.args = &b->args[b->argidx];
122 b->argidx += argspace; 149 b->argidx += size;
123 150
151 BUG_ON(b->argidx > MC_ARGS);
124 return ret; 152 return ret;
125} 153}
126 154
diff --git a/arch/x86/xen/multicalls.h b/arch/x86/xen/multicalls.h
index 8bae996d99a3..858938241616 100644
--- a/arch/x86/xen/multicalls.h
+++ b/arch/x86/xen/multicalls.h
@@ -45,4 +45,16 @@ static inline void xen_mc_issue(unsigned mode)
45/* Set up a callback to be called when the current batch is flushed */ 45/* Set up a callback to be called when the current batch is flushed */
46void xen_mc_callback(void (*fn)(void *), void *data); 46void xen_mc_callback(void (*fn)(void *), void *data);
47 47
48/*
49 * Try to extend the arguments of the previous multicall command. The
50 * previous command's op must match. If it does, then it attempts to
51 * extend the argument space allocated to the multicall entry by
52 * arg_size bytes.
53 *
54 * The returned multicall_space will return with mc pointing to the
55 * command on success, or NULL on failure, and args pointing to the
56 * newly allocated space.
57 */
58struct multicall_space xen_mc_extend_args(unsigned long op, size_t arg_size);
59
48#endif /* _XEN_MULTICALLS_H */ 60#endif /* _XEN_MULTICALLS_H */
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 82517e4a752a..488447878a9d 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -16,6 +16,7 @@
16#include <asm/xen/hypervisor.h> 16#include <asm/xen/hypervisor.h>
17#include <asm/xen/hypercall.h> 17#include <asm/xen/hypercall.h>
18 18
19#include <xen/page.h>
19#include <xen/interface/callback.h> 20#include <xen/interface/callback.h>
20#include <xen/interface/physdev.h> 21#include <xen/interface/physdev.h>
21#include <xen/features.h> 22#include <xen/features.h>
@@ -27,8 +28,6 @@
27extern const char xen_hypervisor_callback[]; 28extern const char xen_hypervisor_callback[];
28extern const char xen_failsafe_callback[]; 29extern const char xen_failsafe_callback[];
29 30
30unsigned long *phys_to_machine_mapping;
31EXPORT_SYMBOL(phys_to_machine_mapping);
32 31
33/** 32/**
34 * machine_specific_memory_setup - Hook for machine specific memory setup. 33 * machine_specific_memory_setup - Hook for machine specific memory setup.
@@ -38,6 +37,8 @@ char * __init xen_memory_setup(void)
38{ 37{
39 unsigned long max_pfn = xen_start_info->nr_pages; 38 unsigned long max_pfn = xen_start_info->nr_pages;
40 39
40 max_pfn = min(MAX_DOMAIN_PAGES, max_pfn);
41
41 e820.nr_map = 0; 42 e820.nr_map = 0;
42 add_memory_region(0, LOWMEMSIZE(), E820_RAM); 43 add_memory_region(0, LOWMEMSIZE(), E820_RAM);
43 add_memory_region(HIGH_MEMORY, PFN_PHYS(max_pfn)-HIGH_MEMORY, E820_RAM); 44 add_memory_region(HIGH_MEMORY, PFN_PHYS(max_pfn)-HIGH_MEMORY, E820_RAM);
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 94e69000f982..d2e3c20127d7 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -35,7 +35,7 @@
35#include "xen-ops.h" 35#include "xen-ops.h"
36#include "mmu.h" 36#include "mmu.h"
37 37
38static cpumask_t xen_cpu_initialized_map; 38cpumask_t xen_cpu_initialized_map;
39static DEFINE_PER_CPU(int, resched_irq) = -1; 39static DEFINE_PER_CPU(int, resched_irq) = -1;
40static DEFINE_PER_CPU(int, callfunc_irq) = -1; 40static DEFINE_PER_CPU(int, callfunc_irq) = -1;
41static DEFINE_PER_CPU(int, debug_irq) = -1; 41static DEFINE_PER_CPU(int, debug_irq) = -1;
@@ -65,6 +65,12 @@ static struct call_data_struct *call_data;
65 */ 65 */
66static irqreturn_t xen_reschedule_interrupt(int irq, void *dev_id) 66static irqreturn_t xen_reschedule_interrupt(int irq, void *dev_id)
67{ 67{
68#ifdef CONFIG_X86_32
69 __get_cpu_var(irq_stat).irq_resched_count++;
70#else
71 add_pda(irq_resched_count, 1);
72#endif
73
68 return IRQ_HANDLED; 74 return IRQ_HANDLED;
69} 75}
70 76
diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c
new file mode 100644
index 000000000000..251669a932d4
--- /dev/null
+++ b/arch/x86/xen/suspend.c
@@ -0,0 +1,45 @@
1#include <linux/types.h>
2
3#include <xen/interface/xen.h>
4#include <xen/grant_table.h>
5#include <xen/events.h>
6
7#include <asm/xen/hypercall.h>
8#include <asm/xen/page.h>
9
10#include "xen-ops.h"
11#include "mmu.h"
12
13void xen_pre_suspend(void)
14{
15 xen_start_info->store_mfn = mfn_to_pfn(xen_start_info->store_mfn);
16 xen_start_info->console.domU.mfn =
17 mfn_to_pfn(xen_start_info->console.domU.mfn);
18
19 BUG_ON(!irqs_disabled());
20
21 HYPERVISOR_shared_info = &xen_dummy_shared_info;
22 if (HYPERVISOR_update_va_mapping(fix_to_virt(FIX_PARAVIRT_BOOTMAP),
23 __pte_ma(0), 0))
24 BUG();
25}
26
27void xen_post_suspend(int suspend_cancelled)
28{
29 xen_setup_shared_info();
30
31 if (suspend_cancelled) {
32 xen_start_info->store_mfn =
33 pfn_to_mfn(xen_start_info->store_mfn);
34 xen_start_info->console.domU.mfn =
35 pfn_to_mfn(xen_start_info->console.domU.mfn);
36 } else {
37#ifdef CONFIG_SMP
38 xen_cpu_initialized_map = cpu_online_map;
39#endif
40 xen_vcpu_restore();
41 xen_timer_resume();
42 }
43
44}
45
diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
index 52b2e3856980..64f0038b9558 100644
--- a/arch/x86/xen/time.c
+++ b/arch/x86/xen/time.c
@@ -14,6 +14,7 @@
14#include <linux/kernel_stat.h> 14#include <linux/kernel_stat.h>
15#include <linux/math64.h> 15#include <linux/math64.h>
16 16
17#include <asm/pvclock.h>
17#include <asm/xen/hypervisor.h> 18#include <asm/xen/hypervisor.h>
18#include <asm/xen/hypercall.h> 19#include <asm/xen/hypercall.h>
19 20
@@ -31,17 +32,6 @@
31 32
32static cycle_t xen_clocksource_read(void); 33static cycle_t xen_clocksource_read(void);
33 34
34/* These are perodically updated in shared_info, and then copied here. */
35struct shadow_time_info {
36 u64 tsc_timestamp; /* TSC at last update of time vals. */
37 u64 system_timestamp; /* Time, in nanosecs, since boot. */
38 u32 tsc_to_nsec_mul;
39 int tsc_shift;
40 u32 version;
41};
42
43static DEFINE_PER_CPU(struct shadow_time_info, shadow_time);
44
45/* runstate info updated by Xen */ 35/* runstate info updated by Xen */
46static DEFINE_PER_CPU(struct vcpu_runstate_info, runstate); 36static DEFINE_PER_CPU(struct vcpu_runstate_info, runstate);
47 37
@@ -211,7 +201,7 @@ unsigned long long xen_sched_clock(void)
211unsigned long xen_cpu_khz(void) 201unsigned long xen_cpu_khz(void)
212{ 202{
213 u64 xen_khz = 1000000ULL << 32; 203 u64 xen_khz = 1000000ULL << 32;
214 const struct vcpu_time_info *info = 204 const struct pvclock_vcpu_time_info *info =
215 &HYPERVISOR_shared_info->vcpu_info[0].time; 205 &HYPERVISOR_shared_info->vcpu_info[0].time;
216 206
217 do_div(xen_khz, info->tsc_to_system_mul); 207 do_div(xen_khz, info->tsc_to_system_mul);
@@ -223,121 +213,26 @@ unsigned long xen_cpu_khz(void)
223 return xen_khz; 213 return xen_khz;
224} 214}
225 215
226/*
227 * Reads a consistent set of time-base values from Xen, into a shadow data
228 * area.
229 */
230static unsigned get_time_values_from_xen(void)
231{
232 struct vcpu_time_info *src;
233 struct shadow_time_info *dst;
234
235 /* src is shared memory with the hypervisor, so we need to
236 make sure we get a consistent snapshot, even in the face of
237 being preempted. */
238 src = &__get_cpu_var(xen_vcpu)->time;
239 dst = &__get_cpu_var(shadow_time);
240
241 do {
242 dst->version = src->version;
243 rmb(); /* fetch version before data */
244 dst->tsc_timestamp = src->tsc_timestamp;
245 dst->system_timestamp = src->system_time;
246 dst->tsc_to_nsec_mul = src->tsc_to_system_mul;
247 dst->tsc_shift = src->tsc_shift;
248 rmb(); /* test version after fetching data */
249 } while ((src->version & 1) | (dst->version ^ src->version));
250
251 return dst->version;
252}
253
254/*
255 * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction,
256 * yielding a 64-bit result.
257 */
258static inline u64 scale_delta(u64 delta, u32 mul_frac, int shift)
259{
260 u64 product;
261#ifdef __i386__
262 u32 tmp1, tmp2;
263#endif
264
265 if (shift < 0)
266 delta >>= -shift;
267 else
268 delta <<= shift;
269
270#ifdef __i386__
271 __asm__ (
272 "mul %5 ; "
273 "mov %4,%%eax ; "
274 "mov %%edx,%4 ; "
275 "mul %5 ; "
276 "xor %5,%5 ; "
277 "add %4,%%eax ; "
278 "adc %5,%%edx ; "
279 : "=A" (product), "=r" (tmp1), "=r" (tmp2)
280 : "a" ((u32)delta), "1" ((u32)(delta >> 32)), "2" (mul_frac) );
281#elif __x86_64__
282 __asm__ (
283 "mul %%rdx ; shrd $32,%%rdx,%%rax"
284 : "=a" (product) : "0" (delta), "d" ((u64)mul_frac) );
285#else
286#error implement me!
287#endif
288
289 return product;
290}
291
292static u64 get_nsec_offset(struct shadow_time_info *shadow)
293{
294 u64 now, delta;
295 now = native_read_tsc();
296 delta = now - shadow->tsc_timestamp;
297 return scale_delta(delta, shadow->tsc_to_nsec_mul, shadow->tsc_shift);
298}
299
300static cycle_t xen_clocksource_read(void) 216static cycle_t xen_clocksource_read(void)
301{ 217{
302 struct shadow_time_info *shadow = &get_cpu_var(shadow_time); 218 struct pvclock_vcpu_time_info *src;
303 cycle_t ret; 219 cycle_t ret;
304 unsigned version;
305
306 do {
307 version = get_time_values_from_xen();
308 barrier();
309 ret = shadow->system_timestamp + get_nsec_offset(shadow);
310 barrier();
311 } while (version != __get_cpu_var(xen_vcpu)->time.version);
312
313 put_cpu_var(shadow_time);
314 220
221 src = &get_cpu_var(xen_vcpu)->time;
222 ret = pvclock_clocksource_read(src);
223 put_cpu_var(xen_vcpu);
315 return ret; 224 return ret;
316} 225}
317 226
318static void xen_read_wallclock(struct timespec *ts) 227static void xen_read_wallclock(struct timespec *ts)
319{ 228{
320 const struct shared_info *s = HYPERVISOR_shared_info; 229 struct shared_info *s = HYPERVISOR_shared_info;
321 u32 version; 230 struct pvclock_wall_clock *wall_clock = &(s->wc);
322 u64 delta; 231 struct pvclock_vcpu_time_info *vcpu_time;
323 struct timespec now;
324
325 /* get wallclock at system boot */
326 do {
327 version = s->wc_version;
328 rmb(); /* fetch version before time */
329 now.tv_sec = s->wc_sec;
330 now.tv_nsec = s->wc_nsec;
331 rmb(); /* fetch time before checking version */
332 } while ((s->wc_version & 1) | (version ^ s->wc_version));
333
334 delta = xen_clocksource_read(); /* time since system boot */
335 delta += now.tv_sec * (u64)NSEC_PER_SEC + now.tv_nsec;
336
337 now.tv_nsec = do_div(delta, NSEC_PER_SEC);
338 now.tv_sec = delta;
339 232
340 set_normalized_timespec(ts, now.tv_sec, now.tv_nsec); 233 vcpu_time = &get_cpu_var(xen_vcpu)->time;
234 pvclock_read_wallclock(wall_clock, vcpu_time, ts);
235 put_cpu_var(xen_vcpu);
341} 236}
342 237
343unsigned long xen_get_wallclock(void) 238unsigned long xen_get_wallclock(void)
@@ -345,7 +240,6 @@ unsigned long xen_get_wallclock(void)
345 struct timespec ts; 240 struct timespec ts;
346 241
347 xen_read_wallclock(&ts); 242 xen_read_wallclock(&ts);
348
349 return ts.tv_sec; 243 return ts.tv_sec;
350} 244}
351 245
@@ -565,12 +459,23 @@ void xen_setup_cpu_clockevents(void)
565 clockevents_register_device(&__get_cpu_var(xen_clock_events)); 459 clockevents_register_device(&__get_cpu_var(xen_clock_events));
566} 460}
567 461
462void xen_timer_resume(void)
463{
464 int cpu;
465
466 if (xen_clockevent != &xen_vcpuop_clockevent)
467 return;
468
469 for_each_online_cpu(cpu) {
470 if (HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL))
471 BUG();
472 }
473}
474
568__init void xen_time_init(void) 475__init void xen_time_init(void)
569{ 476{
570 int cpu = smp_processor_id(); 477 int cpu = smp_processor_id();
571 478
572 get_time_values_from_xen();
573
574 clocksource_register(&xen_clocksource); 479 clocksource_register(&xen_clocksource);
575 480
576 if (HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL) == 0) { 481 if (HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL) == 0) {
diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
index 288d587ce73c..7c0cf6320a0a 100644
--- a/arch/x86/xen/xen-head.S
+++ b/arch/x86/xen/xen-head.S
@@ -7,6 +7,7 @@
7#include <linux/init.h> 7#include <linux/init.h>
8#include <asm/boot.h> 8#include <asm/boot.h>
9#include <xen/interface/elfnote.h> 9#include <xen/interface/elfnote.h>
10#include <asm/xen/interface.h>
10 11
11 __INIT 12 __INIT
12ENTRY(startup_xen) 13ENTRY(startup_xen)
@@ -17,7 +18,7 @@ ENTRY(startup_xen)
17 18
18 __FINIT 19 __FINIT
19 20
20.pushsection .bss.page_aligned 21.pushsection .text
21 .align PAGE_SIZE_asm 22 .align PAGE_SIZE_asm
22ENTRY(hypercall_page) 23ENTRY(hypercall_page)
23 .skip 0x1000 24 .skip 0x1000
@@ -30,11 +31,11 @@ ENTRY(hypercall_page)
30 ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, .long startup_xen) 31 ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, .long startup_xen)
31 ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .long hypercall_page) 32 ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .long hypercall_page)
32 ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz "!writable_page_tables|pae_pgdir_above_4gb") 33 ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz "!writable_page_tables|pae_pgdir_above_4gb")
33#ifdef CONFIG_X86_PAE
34 ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz "yes") 34 ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz "yes")
35#else
36 ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz "no")
37#endif
38 ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz "generic") 35 ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz "generic")
36 ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID,
37 .quad _PAGE_PRESENT; .quad _PAGE_PRESENT)
38 ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long 1)
39 ELFNOTE(Xen, XEN_ELFNOTE_HV_START_LOW, .long __HYPERVISOR_VIRT_START)
39 40
40#endif /*CONFIG_XEN */ 41#endif /*CONFIG_XEN */
diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
index f1063ae08037..9a055592a307 100644
--- a/arch/x86/xen/xen-ops.h
+++ b/arch/x86/xen/xen-ops.h
@@ -9,18 +9,26 @@
9extern const char xen_hypervisor_callback[]; 9extern const char xen_hypervisor_callback[];
10extern const char xen_failsafe_callback[]; 10extern const char xen_failsafe_callback[];
11 11
12struct trap_info;
12void xen_copy_trap_info(struct trap_info *traps); 13void xen_copy_trap_info(struct trap_info *traps);
13 14
14DECLARE_PER_CPU(unsigned long, xen_cr3); 15DECLARE_PER_CPU(unsigned long, xen_cr3);
15DECLARE_PER_CPU(unsigned long, xen_current_cr3); 16DECLARE_PER_CPU(unsigned long, xen_current_cr3);
16 17
17extern struct start_info *xen_start_info; 18extern struct start_info *xen_start_info;
19extern struct shared_info xen_dummy_shared_info;
18extern struct shared_info *HYPERVISOR_shared_info; 20extern struct shared_info *HYPERVISOR_shared_info;
19 21
22void xen_setup_mfn_list_list(void);
23void xen_setup_shared_info(void);
24
20char * __init xen_memory_setup(void); 25char * __init xen_memory_setup(void);
21void __init xen_arch_setup(void); 26void __init xen_arch_setup(void);
22void __init xen_init_IRQ(void); 27void __init xen_init_IRQ(void);
23void xen_enable_sysenter(void); 28void xen_enable_sysenter(void);
29void xen_vcpu_restore(void);
30
31void __init xen_build_dynamic_phys_to_machine(void);
24 32
25void xen_setup_timer(int cpu); 33void xen_setup_timer(int cpu);
26void xen_setup_cpu_clockevents(void); 34void xen_setup_cpu_clockevents(void);
@@ -29,6 +37,7 @@ void __init xen_time_init(void);
29unsigned long xen_get_wallclock(void); 37unsigned long xen_get_wallclock(void);
30int xen_set_wallclock(unsigned long time); 38int xen_set_wallclock(unsigned long time);
31unsigned long long xen_sched_clock(void); 39unsigned long long xen_sched_clock(void);
40void xen_timer_resume(void);
32 41
33irqreturn_t xen_debug_interrupt(int irq, void *dev_id); 42irqreturn_t xen_debug_interrupt(int irq, void *dev_id);
34 43
@@ -54,6 +63,8 @@ int xen_smp_call_function_single(int cpu, void (*func) (void *info), void *info,
54int xen_smp_call_function_mask(cpumask_t mask, void (*func)(void *), 63int xen_smp_call_function_mask(cpumask_t mask, void (*func)(void *),
55 void *info, int wait); 64 void *info, int wait);
56 65
66extern cpumask_t xen_cpu_initialized_map;
67
57 68
58/* Declare an asm function, along with symbols needed to make it 69/* Declare an asm function, along with symbols needed to make it
59 inlineable */ 70 inlineable */
diff --git a/block/as-iosched.c b/block/as-iosched.c
index 8c3946787dbb..743f33a01a07 100644
--- a/block/as-iosched.c
+++ b/block/as-iosched.c
@@ -831,6 +831,8 @@ static void as_completed_request(struct request_queue *q, struct request *rq)
831 } 831 }
832 832
833 if (ad->changed_batch && ad->nr_dispatched == 1) { 833 if (ad->changed_batch && ad->nr_dispatched == 1) {
834 ad->current_batch_expires = jiffies +
835 ad->batch_expire[ad->batch_data_dir];
834 kblockd_schedule_work(&ad->antic_work); 836 kblockd_schedule_work(&ad->antic_work);
835 ad->changed_batch = 0; 837 ad->changed_batch = 0;
836 838
diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c
index 5b73f6a2cd86..831883b7d6c9 100644
--- a/drivers/acpi/ac.c
+++ b/drivers/acpi/ac.c
@@ -233,6 +233,9 @@ static void acpi_ac_notify(acpi_handle handle, u32 event, void *data)
233 233
234 device = ac->device; 234 device = ac->device;
235 switch (event) { 235 switch (event) {
236 default:
237 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
238 "Unsupported event [0x%x]\n", event));
236 case ACPI_AC_NOTIFY_STATUS: 239 case ACPI_AC_NOTIFY_STATUS:
237 case ACPI_NOTIFY_BUS_CHECK: 240 case ACPI_NOTIFY_BUS_CHECK:
238 case ACPI_NOTIFY_DEVICE_CHECK: 241 case ACPI_NOTIFY_DEVICE_CHECK:
@@ -244,11 +247,6 @@ static void acpi_ac_notify(acpi_handle handle, u32 event, void *data)
244#ifdef CONFIG_ACPI_SYSFS_POWER 247#ifdef CONFIG_ACPI_SYSFS_POWER
245 kobject_uevent(&ac->charger.dev->kobj, KOBJ_CHANGE); 248 kobject_uevent(&ac->charger.dev->kobj, KOBJ_CHANGE);
246#endif 249#endif
247 break;
248 default:
249 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
250 "Unsupported event [0x%x]\n", event));
251 break;
252 } 250 }
253 251
254 return; 252 return;
diff --git a/drivers/acpi/bay.c b/drivers/acpi/bay.c
index 26038c2a2a71..61b6c5beb2d3 100644
--- a/drivers/acpi/bay.c
+++ b/drivers/acpi/bay.c
@@ -377,6 +377,9 @@ static int __init bay_init(void)
377 377
378 INIT_LIST_HEAD(&drive_bays); 378 INIT_LIST_HEAD(&drive_bays);
379 379
380 if (acpi_disabled)
381 return -ENODEV;
382
380 /* look for dockable drive bays */ 383 /* look for dockable drive bays */
381 acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, 384 acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
382 ACPI_UINT32_MAX, find_bay, &bays, NULL); 385 ACPI_UINT32_MAX, find_bay, &bays, NULL);
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
index 96c542f7fded..bb7c51f712bd 100644
--- a/drivers/acpi/dock.c
+++ b/drivers/acpi/dock.c
@@ -917,6 +917,9 @@ static int __init dock_init(void)
917 917
918 dock_station = NULL; 918 dock_station = NULL;
919 919
920 if (acpi_disabled)
921 return 0;
922
920 /* look for a dock station */ 923 /* look for a dock station */
921 acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, 924 acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
922 ACPI_UINT32_MAX, find_dock, &num, NULL); 925 ACPI_UINT32_MAX, find_dock, &num, NULL);
diff --git a/drivers/acpi/glue.c b/drivers/acpi/glue.c
index 2808dc60fd67..9b227d4dc9c9 100644
--- a/drivers/acpi/glue.c
+++ b/drivers/acpi/glue.c
@@ -333,6 +333,9 @@ static int __init acpi_rtc_init(void)
333{ 333{
334 struct device *dev = get_rtc_dev(); 334 struct device *dev = get_rtc_dev();
335 335
336 if (acpi_disabled)
337 return 0;
338
336 if (dev) { 339 if (dev) {
337 rtc_wake_setup(); 340 rtc_wake_setup();
338 rtc_info.wake_on = rtc_wake_on; 341 rtc_info.wake_on = rtc_wake_on;
diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c
index c3b0cd88d09f..495c63a3e0af 100644
--- a/drivers/acpi/sleep/main.c
+++ b/drivers/acpi/sleep/main.c
@@ -36,9 +36,8 @@ static int acpi_sleep_prepare(u32 acpi_state)
36 if (!acpi_wakeup_address) { 36 if (!acpi_wakeup_address) {
37 return -EFAULT; 37 return -EFAULT;
38 } 38 }
39 acpi_set_firmware_waking_vector((acpi_physical_address) 39 acpi_set_firmware_waking_vector(
40 virt_to_phys((void *) 40 (acpi_physical_address)acpi_wakeup_address);
41 acpi_wakeup_address));
42 41
43 } 42 }
44 ACPI_FLUSH_CPU_CACHE(); 43 ACPI_FLUSH_CPU_CACHE();
diff --git a/drivers/acpi/sleep/proc.c b/drivers/acpi/sleep/proc.c
index 224c57c03381..4ebbba2b6b19 100644
--- a/drivers/acpi/sleep/proc.c
+++ b/drivers/acpi/sleep/proc.c
@@ -315,8 +315,11 @@ acpi_system_write_alarm(struct file *file,
315 cmos_bcd_write(day, acpi_gbl_FADT.day_alarm, rtc_control); 315 cmos_bcd_write(day, acpi_gbl_FADT.day_alarm, rtc_control);
316 if (acpi_gbl_FADT.month_alarm) 316 if (acpi_gbl_FADT.month_alarm)
317 cmos_bcd_write(mo, acpi_gbl_FADT.month_alarm, rtc_control); 317 cmos_bcd_write(mo, acpi_gbl_FADT.month_alarm, rtc_control);
318 if (acpi_gbl_FADT.century) 318 if (acpi_gbl_FADT.century) {
319 if (adjust)
320 yr += cmos_bcd_read(acpi_gbl_FADT.century, rtc_control) * 100;
319 cmos_bcd_write(yr / 100, acpi_gbl_FADT.century, rtc_control); 321 cmos_bcd_write(yr / 100, acpi_gbl_FADT.century, rtc_control);
322 }
320 /* enable the rtc alarm interrupt */ 323 /* enable the rtc alarm interrupt */
321 rtc_control |= RTC_AIE; 324 rtc_control |= RTC_AIE;
322 CMOS_WRITE(rtc_control, RTC_CONTROL); 325 CMOS_WRITE(rtc_control, RTC_CONTROL);
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 5e5dda3a3027..d089c4519d45 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1713,7 +1713,8 @@ acpi_video_bus_get_devices(struct acpi_video_bus *video,
1713 1713
1714 status = acpi_video_bus_get_one_device(dev, video); 1714 status = acpi_video_bus_get_one_device(dev, video);
1715 if (ACPI_FAILURE(status)) { 1715 if (ACPI_FAILURE(status)) {
1716 ACPI_EXCEPTION((AE_INFO, status, "Cant attach device")); 1716 ACPI_DEBUG_PRINT((ACPI_DB_WARN,
1717 "Cant attach device"));
1717 continue; 1718 continue;
1718 } 1719 }
1719 } 1720 }
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 9bf2986a2788..ae8494944c45 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -651,9 +651,17 @@ config PATA_WINBOND_VLB
651 Support for the Winbond W83759A controller on Vesa Local Bus 651 Support for the Winbond W83759A controller on Vesa Local Bus
652 systems. 652 systems.
653 653
654config HAVE_PATA_PLATFORM
655 bool
656 help
657 This is an internal configuration node for any machine that
658 uses pata-platform driver to enable the relevant driver in the
659 configuration structure without having to submit endless patches
660 to update the PATA_PLATFORM entry.
661
654config PATA_PLATFORM 662config PATA_PLATFORM
655 tristate "Generic platform device PATA support" 663 tristate "Generic platform device PATA support"
656 depends on EMBEDDED || ARCH_RPC || PPC 664 depends on EMBEDDED || ARCH_RPC || PPC || HAVE_PATA_PLATFORM
657 help 665 help
658 This option enables support for generic directly connected ATA 666 This option enables support for generic directly connected ATA
659 devices commonly found on embedded systems. 667 devices commonly found on embedded systems.
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 966ab401e523..5e6468a7ca4b 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -90,6 +90,7 @@ enum {
90 board_ahci_mv = 4, 90 board_ahci_mv = 4,
91 board_ahci_sb700 = 5, 91 board_ahci_sb700 = 5,
92 board_ahci_mcp65 = 6, 92 board_ahci_mcp65 = 6,
93 board_ahci_nopmp = 7,
93 94
94 /* global controller registers */ 95 /* global controller registers */
95 HOST_CAP = 0x00, /* host capabilities */ 96 HOST_CAP = 0x00, /* host capabilities */
@@ -401,6 +402,14 @@ static const struct ata_port_info ahci_port_info[] = {
401 .udma_mask = ATA_UDMA6, 402 .udma_mask = ATA_UDMA6,
402 .port_ops = &ahci_ops, 403 .port_ops = &ahci_ops,
403 }, 404 },
405 /* board_ahci_nopmp */
406 {
407 AHCI_HFLAGS (AHCI_HFLAG_NO_PMP),
408 .flags = AHCI_FLAG_COMMON,
409 .pio_mask = 0x1f, /* pio0-4 */
410 .udma_mask = ATA_UDMA6,
411 .port_ops = &ahci_ops,
412 },
404}; 413};
405 414
406static const struct pci_device_id ahci_pci_tbl[] = { 415static const struct pci_device_id ahci_pci_tbl[] = {
@@ -525,9 +534,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
525 { PCI_VDEVICE(NVIDIA, 0x0bc7), board_ahci }, /* MCP7B */ 534 { PCI_VDEVICE(NVIDIA, 0x0bc7), board_ahci }, /* MCP7B */
526 535
527 /* SiS */ 536 /* SiS */
528 { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */ 537 { PCI_VDEVICE(SI, 0x1184), board_ahci_nopmp }, /* SiS 966 */
529 { PCI_VDEVICE(SI, 0x1185), board_ahci }, /* SiS 966 */ 538 { PCI_VDEVICE(SI, 0x1185), board_ahci_nopmp }, /* SiS 968 */
530 { PCI_VDEVICE(SI, 0x0186), board_ahci }, /* SiS 968 */ 539 { PCI_VDEVICE(SI, 0x0186), board_ahci_nopmp }, /* SiS 968 */
531 540
532 /* Marvell */ 541 /* Marvell */
533 { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ 542 { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */
@@ -653,6 +662,14 @@ static void ahci_save_initial_config(struct pci_dev *pdev,
653 cap &= ~HOST_CAP_PMP; 662 cap &= ~HOST_CAP_PMP;
654 } 663 }
655 664
665 if (pdev->vendor == PCI_VENDOR_ID_JMICRON && pdev->device == 0x2361 &&
666 port_map != 1) {
667 dev_printk(KERN_INFO, &pdev->dev,
668 "JMB361 has only one port, port_map 0x%x -> 0x%x\n",
669 port_map, 1);
670 port_map = 1;
671 }
672
656 /* 673 /*
657 * Temporary Marvell 6145 hack: PATA port presence 674 * Temporary Marvell 6145 hack: PATA port presence
658 * is asserted through the standard AHCI port 675 * is asserted through the standard AHCI port
@@ -1760,7 +1777,7 @@ static irqreturn_t ahci_interrupt(int irq, void *dev_instance)
1760 struct ahci_host_priv *hpriv; 1777 struct ahci_host_priv *hpriv;
1761 unsigned int i, handled = 0; 1778 unsigned int i, handled = 0;
1762 void __iomem *mmio; 1779 void __iomem *mmio;
1763 u32 irq_stat, irq_ack = 0; 1780 u32 irq_stat, irq_masked;
1764 1781
1765 VPRINTK("ENTER\n"); 1782 VPRINTK("ENTER\n");
1766 1783
@@ -1769,16 +1786,17 @@ static irqreturn_t ahci_interrupt(int irq, void *dev_instance)
1769 1786
1770 /* sigh. 0xffffffff is a valid return from h/w */ 1787 /* sigh. 0xffffffff is a valid return from h/w */
1771 irq_stat = readl(mmio + HOST_IRQ_STAT); 1788 irq_stat = readl(mmio + HOST_IRQ_STAT);
1772 irq_stat &= hpriv->port_map;
1773 if (!irq_stat) 1789 if (!irq_stat)
1774 return IRQ_NONE; 1790 return IRQ_NONE;
1775 1791
1792 irq_masked = irq_stat & hpriv->port_map;
1793
1776 spin_lock(&host->lock); 1794 spin_lock(&host->lock);
1777 1795
1778 for (i = 0; i < host->n_ports; i++) { 1796 for (i = 0; i < host->n_ports; i++) {
1779 struct ata_port *ap; 1797 struct ata_port *ap;
1780 1798
1781 if (!(irq_stat & (1 << i))) 1799 if (!(irq_masked & (1 << i)))
1782 continue; 1800 continue;
1783 1801
1784 ap = host->ports[i]; 1802 ap = host->ports[i];
@@ -1792,14 +1810,20 @@ static irqreturn_t ahci_interrupt(int irq, void *dev_instance)
1792 "interrupt on disabled port %u\n", i); 1810 "interrupt on disabled port %u\n", i);
1793 } 1811 }
1794 1812
1795 irq_ack |= (1 << i);
1796 }
1797
1798 if (irq_ack) {
1799 writel(irq_ack, mmio + HOST_IRQ_STAT);
1800 handled = 1; 1813 handled = 1;
1801 } 1814 }
1802 1815
1816 /* HOST_IRQ_STAT behaves as level triggered latch meaning that
1817 * it should be cleared after all the port events are cleared;
1818 * otherwise, it will raise a spurious interrupt after each
1819 * valid one. Please read section 10.6.2 of ahci 1.1 for more
1820 * information.
1821 *
1822 * Also, use the unmasked value to clear interrupt as spurious
1823 * pending event on a dummy port might cause screaming IRQ.
1824 */
1825 writel(irq_stat, mmio + HOST_IRQ_STAT);
1826
1803 spin_unlock(&host->lock); 1827 spin_unlock(&host->lock);
1804 1828
1805 VPRINTK("EXIT\n"); 1829 VPRINTK("EXIT\n");
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 81b7ae376951..a90ae03f56b2 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -1043,6 +1043,13 @@ static int piix_broken_suspend(void)
1043 }, 1043 },
1044 }, 1044 },
1045 { 1045 {
1046 .ident = "TECRA M4",
1047 .matches = {
1048 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
1049 DMI_MATCH(DMI_PRODUCT_NAME, "TECRA M4"),
1050 },
1051 },
1052 {
1046 .ident = "TECRA M5", 1053 .ident = "TECRA M5",
1047 .matches = { 1054 .matches = {
1048 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), 1055 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index cc816ca623d3..303fc0d2b978 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4297,7 +4297,7 @@ void ata_sg_clean(struct ata_queued_cmd *qc)
4297} 4297}
4298 4298
4299/** 4299/**
4300 * ata_check_atapi_dma - Check whether ATAPI DMA can be supported 4300 * atapi_check_dma - Check whether ATAPI DMA can be supported
4301 * @qc: Metadata associated with taskfile to check 4301 * @qc: Metadata associated with taskfile to check
4302 * 4302 *
4303 * Allow low-level driver to filter ATA PACKET commands, returning 4303 * Allow low-level driver to filter ATA PACKET commands, returning
@@ -4310,7 +4310,7 @@ void ata_sg_clean(struct ata_queued_cmd *qc)
4310 * RETURNS: 0 when ATAPI DMA can be used 4310 * RETURNS: 0 when ATAPI DMA can be used
4311 * nonzero otherwise 4311 * nonzero otherwise
4312 */ 4312 */
4313int ata_check_atapi_dma(struct ata_queued_cmd *qc) 4313int atapi_check_dma(struct ata_queued_cmd *qc)
4314{ 4314{
4315 struct ata_port *ap = qc->ap; 4315 struct ata_port *ap = qc->ap;
4316 4316
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index 2e6e1622dc6d..57a43649a461 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -2343,8 +2343,8 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
2343{ 2343{
2344 struct scsi_cmnd *scmd = qc->scsicmd; 2344 struct scsi_cmnd *scmd = qc->scsicmd;
2345 struct ata_device *dev = qc->dev; 2345 struct ata_device *dev = qc->dev;
2346 int using_pio = (dev->flags & ATA_DFLAG_PIO);
2347 int nodata = (scmd->sc_data_direction == DMA_NONE); 2346 int nodata = (scmd->sc_data_direction == DMA_NONE);
2347 int using_pio = !nodata && (dev->flags & ATA_DFLAG_PIO);
2348 unsigned int nbytes; 2348 unsigned int nbytes;
2349 2349
2350 memset(qc->cdb, 0, dev->cdb_len); 2350 memset(qc->cdb, 0, dev->cdb_len);
@@ -2362,7 +2362,7 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
2362 ata_qc_set_pc_nbytes(qc); 2362 ata_qc_set_pc_nbytes(qc);
2363 2363
2364 /* check whether ATAPI DMA is safe */ 2364 /* check whether ATAPI DMA is safe */
2365 if (!using_pio && ata_check_atapi_dma(qc)) 2365 if (!nodata && !using_pio && atapi_check_dma(qc))
2366 using_pio = 1; 2366 using_pio = 1;
2367 2367
2368 /* Some controller variants snoop this value for Packet 2368 /* Some controller variants snoop this value for Packet
@@ -2402,13 +2402,11 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
2402 qc->tf.lbam = (nbytes & 0xFF); 2402 qc->tf.lbam = (nbytes & 0xFF);
2403 qc->tf.lbah = (nbytes >> 8); 2403 qc->tf.lbah = (nbytes >> 8);
2404 2404
2405 if (using_pio || nodata) { 2405 if (nodata)
2406 /* no data, or PIO data xfer */ 2406 qc->tf.protocol = ATAPI_PROT_NODATA;
2407 if (nodata) 2407 else if (using_pio)
2408 qc->tf.protocol = ATAPI_PROT_NODATA; 2408 qc->tf.protocol = ATAPI_PROT_PIO;
2409 else 2409 else {
2410 qc->tf.protocol = ATAPI_PROT_PIO;
2411 } else {
2412 /* DMA data xfer */ 2410 /* DMA data xfer */
2413 qc->tf.protocol = ATAPI_PROT_DMA; 2411 qc->tf.protocol = ATAPI_PROT_DMA;
2414 qc->tf.feature |= ATAPI_PKT_DMA; 2412 qc->tf.feature |= ATAPI_PKT_DMA;
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 215d18672a5a..c0908c225483 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -1094,6 +1094,7 @@ static void ata_hsm_qc_complete(struct ata_queued_cmd *qc, int in_wq)
1094int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc, 1094int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
1095 u8 status, int in_wq) 1095 u8 status, int in_wq)
1096{ 1096{
1097 struct ata_eh_info *ehi = &ap->link.eh_info;
1097 unsigned long flags = 0; 1098 unsigned long flags = 0;
1098 int poll_next; 1099 int poll_next;
1099 1100
@@ -1125,9 +1126,12 @@ fsm_start:
1125 if (likely(status & (ATA_ERR | ATA_DF))) 1126 if (likely(status & (ATA_ERR | ATA_DF)))
1126 /* device stops HSM for abort/error */ 1127 /* device stops HSM for abort/error */
1127 qc->err_mask |= AC_ERR_DEV; 1128 qc->err_mask |= AC_ERR_DEV;
1128 else 1129 else {
1129 /* HSM violation. Let EH handle this */ 1130 /* HSM violation. Let EH handle this */
1131 ata_ehi_push_desc(ehi,
1132 "ST_FIRST: !(DRQ|ERR|DF)");
1130 qc->err_mask |= AC_ERR_HSM; 1133 qc->err_mask |= AC_ERR_HSM;
1134 }
1131 1135
1132 ap->hsm_task_state = HSM_ST_ERR; 1136 ap->hsm_task_state = HSM_ST_ERR;
1133 goto fsm_start; 1137 goto fsm_start;
@@ -1146,9 +1150,9 @@ fsm_start:
1146 * the CDB. 1150 * the CDB.
1147 */ 1151 */
1148 if (!(qc->dev->horkage & ATA_HORKAGE_STUCK_ERR)) { 1152 if (!(qc->dev->horkage & ATA_HORKAGE_STUCK_ERR)) {
1149 ata_port_printk(ap, KERN_WARNING, 1153 ata_ehi_push_desc(ehi, "ST_FIRST: "
1150 "DRQ=1 with device error, " 1154 "DRQ=1 with device error, "
1151 "dev_stat 0x%X\n", status); 1155 "dev_stat 0x%X", status);
1152 qc->err_mask |= AC_ERR_HSM; 1156 qc->err_mask |= AC_ERR_HSM;
1153 ap->hsm_task_state = HSM_ST_ERR; 1157 ap->hsm_task_state = HSM_ST_ERR;
1154 goto fsm_start; 1158 goto fsm_start;
@@ -1205,9 +1209,9 @@ fsm_start:
1205 * let the EH abort the command or reset the device. 1209 * let the EH abort the command or reset the device.
1206 */ 1210 */
1207 if (unlikely(status & (ATA_ERR | ATA_DF))) { 1211 if (unlikely(status & (ATA_ERR | ATA_DF))) {
1208 ata_port_printk(ap, KERN_WARNING, "DRQ=1 with " 1212 ata_ehi_push_desc(ehi, "ST-ATAPI: "
1209 "device error, dev_stat 0x%X\n", 1213 "DRQ=1 with device error, "
1210 status); 1214 "dev_stat 0x%X", status);
1211 qc->err_mask |= AC_ERR_HSM; 1215 qc->err_mask |= AC_ERR_HSM;
1212 ap->hsm_task_state = HSM_ST_ERR; 1216 ap->hsm_task_state = HSM_ST_ERR;
1213 goto fsm_start; 1217 goto fsm_start;
@@ -1226,13 +1230,17 @@ fsm_start:
1226 if (likely(status & (ATA_ERR | ATA_DF))) 1230 if (likely(status & (ATA_ERR | ATA_DF)))
1227 /* device stops HSM for abort/error */ 1231 /* device stops HSM for abort/error */
1228 qc->err_mask |= AC_ERR_DEV; 1232 qc->err_mask |= AC_ERR_DEV;
1229 else 1233 else {
1230 /* HSM violation. Let EH handle this. 1234 /* HSM violation. Let EH handle this.
1231 * Phantom devices also trigger this 1235 * Phantom devices also trigger this
1232 * condition. Mark hint. 1236 * condition. Mark hint.
1233 */ 1237 */
1238 ata_ehi_push_desc(ehi, "ST-ATA: "
1239 "DRQ=1 with device error, "
1240 "dev_stat 0x%X", status);
1234 qc->err_mask |= AC_ERR_HSM | 1241 qc->err_mask |= AC_ERR_HSM |
1235 AC_ERR_NODEV_HINT; 1242 AC_ERR_NODEV_HINT;
1243 }
1236 1244
1237 ap->hsm_task_state = HSM_ST_ERR; 1245 ap->hsm_task_state = HSM_ST_ERR;
1238 goto fsm_start; 1246 goto fsm_start;
@@ -1257,8 +1265,12 @@ fsm_start:
1257 status = ata_wait_idle(ap); 1265 status = ata_wait_idle(ap);
1258 } 1266 }
1259 1267
1260 if (status & (ATA_BUSY | ATA_DRQ)) 1268 if (status & (ATA_BUSY | ATA_DRQ)) {
1269 ata_ehi_push_desc(ehi, "ST-ATA: "
1270 "BUSY|DRQ persists on ERR|DF, "
1271 "dev_stat 0x%X", status);
1261 qc->err_mask |= AC_ERR_HSM; 1272 qc->err_mask |= AC_ERR_HSM;
1273 }
1262 1274
1263 /* ata_pio_sectors() might change the 1275 /* ata_pio_sectors() might change the
1264 * state to HSM_ST_LAST. so, the state 1276 * state to HSM_ST_LAST. so, the state
diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h
index 4514283937ea..1cf803adbc95 100644
--- a/drivers/ata/libata.h
+++ b/drivers/ata/libata.h
@@ -106,7 +106,7 @@ extern void ata_sg_clean(struct ata_queued_cmd *qc);
106extern void ata_qc_free(struct ata_queued_cmd *qc); 106extern void ata_qc_free(struct ata_queued_cmd *qc);
107extern void ata_qc_issue(struct ata_queued_cmd *qc); 107extern void ata_qc_issue(struct ata_queued_cmd *qc);
108extern void __ata_qc_complete(struct ata_queued_cmd *qc); 108extern void __ata_qc_complete(struct ata_queued_cmd *qc);
109extern int ata_check_atapi_dma(struct ata_queued_cmd *qc); 109extern int atapi_check_dma(struct ata_queued_cmd *qc);
110extern void swap_buf_le16(u16 *buf, unsigned int buf_words); 110extern void swap_buf_le16(u16 *buf, unsigned int buf_words);
111extern void ata_dev_init(struct ata_device *dev); 111extern void ata_dev_init(struct ata_device *dev);
112extern void ata_link_init(struct ata_port *ap, struct ata_link *link, int pmp); 112extern void ata_link_init(struct ata_port *ap, struct ata_link *link, int pmp);
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c
index 3d39f9dfec5a..41b4361bbf6e 100644
--- a/drivers/ata/pata_pcmcia.c
+++ b/drivers/ata/pata_pcmcia.c
@@ -414,6 +414,7 @@ static struct pcmcia_device_id pcmcia_devices[] = {
414 PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149), 414 PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
415 PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674), 415 PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674),
416 PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b), 416 PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b),
417 PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF300", 0x7ed2ad87, 0x7e9e78ee),
417 PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c), 418 PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c),
418 PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79), 419 PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79),
419 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591), 420 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591),
@@ -424,6 +425,7 @@ static struct pcmcia_device_id pcmcia_devices[] = {
424 PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6), 425 PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6),
425 PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003), 426 PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003),
426 PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443), 427 PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443),
428 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS1GCF45", 0x709b1bf1, 0xf68b6f32),
427 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS1GCF80", 0x709b1bf1, 0x2a54d4b1), 429 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS1GCF80", 0x709b1bf1, 0x2a54d4b1),
428 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS2GCF120", 0x709b1bf1, 0x969aa4f2), 430 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS2GCF120", 0x709b1bf1, 0x969aa4f2),
429 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8), 431 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8),
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 60391e9a84db..ad169ffbc4cb 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -1322,6 +1322,9 @@ static int mv_port_start(struct ata_port *ap)
1322 goto out_port_free_dma_mem; 1322 goto out_port_free_dma_mem;
1323 memset(pp->crpb, 0, MV_CRPB_Q_SZ); 1323 memset(pp->crpb, 0, MV_CRPB_Q_SZ);
1324 1324
1325 /* 6041/6081 Rev. "C0" (and newer) are okay with async notify */
1326 if (hpriv->hp_flags & MV_HP_ERRATA_60X1C0)
1327 ap->flags |= ATA_FLAG_AN;
1325 /* 1328 /*
1326 * For GEN_I, there's no NCQ, so we only allocate a single sg_tbl. 1329 * For GEN_I, there's no NCQ, so we only allocate a single sg_tbl.
1327 * For later hardware, we need one unique sg_tbl per NCQ tag. 1330 * For later hardware, we need one unique sg_tbl per NCQ tag.
@@ -1592,6 +1595,24 @@ static unsigned int mv_qc_issue(struct ata_queued_cmd *qc)
1592 1595
1593 if ((qc->tf.protocol != ATA_PROT_DMA) && 1596 if ((qc->tf.protocol != ATA_PROT_DMA) &&
1594 (qc->tf.protocol != ATA_PROT_NCQ)) { 1597 (qc->tf.protocol != ATA_PROT_NCQ)) {
1598 static int limit_warnings = 10;
1599 /*
1600 * Errata SATA#16, SATA#24: warn if multiple DRQs expected.
1601 *
1602 * Someday, we might implement special polling workarounds
1603 * for these, but it all seems rather unnecessary since we
1604 * normally use only DMA for commands which transfer more
1605 * than a single block of data.
1606 *
1607 * Much of the time, this could just work regardless.
1608 * So for now, just log the incident, and allow the attempt.
1609 */
1610 if (limit_warnings > 0 && (qc->nbytes / qc->sect_size) > 1) {
1611 --limit_warnings;
1612 ata_link_printk(qc->dev->link, KERN_WARNING, DRV_NAME
1613 ": attempting PIO w/multiple DRQ: "
1614 "this may fail due to h/w errata\n");
1615 }
1595 /* 1616 /*
1596 * We're about to send a non-EDMA capable command to the 1617 * We're about to send a non-EDMA capable command to the
1597 * port. Turn off EDMA so there won't be problems accessing 1618 * port. Turn off EDMA so there won't be problems accessing
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index 8ee6b5b4ede7..84ffcc26a74b 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -370,6 +370,7 @@ static const struct pci_device_id sil24_pci_tbl[] = {
370 { PCI_VDEVICE(INTEL, 0x3124), BID_SIL3124 }, 370 { PCI_VDEVICE(INTEL, 0x3124), BID_SIL3124 },
371 { PCI_VDEVICE(CMD, 0x3132), BID_SIL3132 }, 371 { PCI_VDEVICE(CMD, 0x3132), BID_SIL3132 },
372 { PCI_VDEVICE(CMD, 0x0242), BID_SIL3132 }, 372 { PCI_VDEVICE(CMD, 0x0242), BID_SIL3132 },
373 { PCI_VDEVICE(CMD, 0x0244), BID_SIL3132 },
373 { PCI_VDEVICE(CMD, 0x3131), BID_SIL3131 }, 374 { PCI_VDEVICE(CMD, 0x3131), BID_SIL3131 },
374 { PCI_VDEVICE(CMD, 0x3531), BID_SIL3131 }, 375 { PCI_VDEVICE(CMD, 0x3531), BID_SIL3131 },
375 376
diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c
index f277cea904ce..db529b849948 100644
--- a/drivers/ata/sata_uli.c
+++ b/drivers/ata/sata_uli.c
@@ -83,6 +83,7 @@ static struct ata_port_operations uli_ops = {
83 .inherits = &ata_bmdma_port_ops, 83 .inherits = &ata_bmdma_port_ops,
84 .scr_read = uli_scr_read, 84 .scr_read = uli_scr_read,
85 .scr_write = uli_scr_write, 85 .scr_write = uli_scr_write,
86 .hardreset = ATA_OP_NULL,
86}; 87};
87 88
88static const struct ata_port_info uli_port_info = { 89static const struct ata_port_info uli_port_info = {
diff --git a/drivers/atm/he.c b/drivers/atm/he.c
index ffc4a5a41946..ea495b21f916 100644
--- a/drivers/atm/he.c
+++ b/drivers/atm/he.c
@@ -1542,7 +1542,8 @@ he_start(struct atm_dev *dev)
1542 /* initialize framer */ 1542 /* initialize framer */
1543 1543
1544#ifdef CONFIG_ATM_HE_USE_SUNI 1544#ifdef CONFIG_ATM_HE_USE_SUNI
1545 suni_init(he_dev->atm_dev); 1545 if (he_isMM(he_dev))
1546 suni_init(he_dev->atm_dev);
1546 if (he_dev->atm_dev->phy && he_dev->atm_dev->phy->start) 1547 if (he_dev->atm_dev->phy && he_dev->atm_dev->phy->start)
1547 he_dev->atm_dev->phy->start(he_dev->atm_dev); 1548 he_dev->atm_dev->phy->start(he_dev->atm_dev);
1548#endif /* CONFIG_ATM_HE_USE_SUNI */ 1549#endif /* CONFIG_ATM_HE_USE_SUNI */
@@ -1554,6 +1555,7 @@ he_start(struct atm_dev *dev)
1554 val = he_phy_get(he_dev->atm_dev, SUNI_TPOP_APM); 1555 val = he_phy_get(he_dev->atm_dev, SUNI_TPOP_APM);
1555 val = (val & ~SUNI_TPOP_APM_S) | (SUNI_TPOP_S_SDH << SUNI_TPOP_APM_S_SHIFT); 1556 val = (val & ~SUNI_TPOP_APM_S) | (SUNI_TPOP_S_SDH << SUNI_TPOP_APM_S_SHIFT);
1556 he_phy_put(he_dev->atm_dev, val, SUNI_TPOP_APM); 1557 he_phy_put(he_dev->atm_dev, val, SUNI_TPOP_APM);
1558 he_phy_put(he_dev->atm_dev, SUNI_TACP_IUCHP_CLP, SUNI_TACP_IUCHP);
1557 } 1559 }
1558 1560
1559 /* 5.1.12 enable transmit and receive */ 1561 /* 5.1.12 enable transmit and receive */
@@ -2844,10 +2846,15 @@ he_ioctl(struct atm_dev *atm_dev, unsigned int cmd, void __user *arg)
2844 if (copy_from_user(&reg, arg, 2846 if (copy_from_user(&reg, arg,
2845 sizeof(struct he_ioctl_reg))) 2847 sizeof(struct he_ioctl_reg)))
2846 return -EFAULT; 2848 return -EFAULT;
2847 2849
2848 spin_lock_irqsave(&he_dev->global_lock, flags); 2850 spin_lock_irqsave(&he_dev->global_lock, flags);
2849 switch (reg.type) { 2851 switch (reg.type) {
2850 case HE_REGTYPE_PCI: 2852 case HE_REGTYPE_PCI:
2853 if (reg.addr < 0 || reg.addr >= HE_REGMAP_SIZE) {
2854 err = -EINVAL;
2855 break;
2856 }
2857
2851 reg.val = he_readl(he_dev, reg.addr); 2858 reg.val = he_readl(he_dev, reg.addr);
2852 break; 2859 break;
2853 case HE_REGTYPE_RCM: 2860 case HE_REGTYPE_RCM:
diff --git a/drivers/atm/he.h b/drivers/atm/he.h
index fe6cd15a78a4..b87d6ccabac1 100644
--- a/drivers/atm/he.h
+++ b/drivers/atm/he.h
@@ -267,13 +267,7 @@ struct he_dev {
267 267
268 char prod_id[30]; 268 char prod_id[30];
269 char mac_addr[6]; 269 char mac_addr[6];
270 int media; /* 270 int media;
271 * 0x26 = HE155 MM
272 * 0x27 = HE622 MM
273 * 0x46 = HE155 SM
274 * 0x47 = HE622 SM
275 */
276
277 271
278 unsigned int vcibits, vpibits; 272 unsigned int vcibits, vpibits;
279 unsigned int cells_per_row; 273 unsigned int cells_per_row;
@@ -392,6 +386,7 @@ struct he_vcc
392#define HE_DEV(dev) ((struct he_dev *) (dev)->dev_data) 386#define HE_DEV(dev) ((struct he_dev *) (dev)->dev_data)
393 387
394#define he_is622(dev) ((dev)->media & 0x1) 388#define he_is622(dev) ((dev)->media & 0x1)
389#define he_isMM(dev) ((dev)->media & 0x20)
395 390
396#define HE_REGMAP_SIZE 0x100000 391#define HE_REGMAP_SIZE 0x100000
397 392
@@ -876,8 +871,8 @@ struct he_vcc
876#define M_SN 0x3a /* integer */ 871#define M_SN 0x3a /* integer */
877#define MEDIA 0x3e /* integer */ 872#define MEDIA 0x3e /* integer */
878#define HE155MM 0x26 873#define HE155MM 0x26
879#define HE155SM 0x27 874#define HE622MM 0x27
880#define HE622MM 0x46 875#define HE155SM 0x46
881#define HE622SM 0x47 876#define HE622SM 0x47
882#define MAC_ADDR 0x42 /* char[] */ 877#define MAC_ADDR 0x42 /* char[] */
883 878
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
index 5c28ca7380ff..139fce6968a6 100644
--- a/drivers/atm/iphase.c
+++ b/drivers/atm/iphase.c
@@ -2562,17 +2562,11 @@ static int __devinit ia_start(struct atm_dev *dev)
2562 error = suni_init(dev); 2562 error = suni_init(dev);
2563 if (error) 2563 if (error)
2564 goto err_free_rx; 2564 goto err_free_rx;
2565 /* 2565 if (dev->phy->start) {
2566 * Enable interrupt on loss of signal 2566 error = dev->phy->start(dev);
2567 * SUNI_RSOP_CIE - 0x10 2567 if (error)
2568 * SUNI_RSOP_CIE_LOSE - 0x04 2568 goto err_free_rx;
2569 */ 2569 }
2570 ia_phy_put(dev, ia_phy_get(dev, 0x10) | 0x04, 0x10);
2571#ifndef MODULE
2572 error = dev->phy->start(dev);
2573 if (error)
2574 goto err_free_rx;
2575#endif
2576 /* Get iadev->carrier_detect status */ 2570 /* Get iadev->carrier_detect status */
2577 IaFrontEndIntr(iadev); 2571 IaFrontEndIntr(iadev);
2578 } 2572 }
@@ -3198,6 +3192,8 @@ static int __devinit ia_init_one(struct pci_dev *pdev,
3198 IF_INIT(printk("dev_id = 0x%x iadev->LineRate = %d \n", (u32)dev, 3192 IF_INIT(printk("dev_id = 0x%x iadev->LineRate = %d \n", (u32)dev,
3199 iadev->LineRate);) 3193 iadev->LineRate);)
3200 3194
3195 pci_set_drvdata(pdev, dev);
3196
3201 ia_dev[iadev_count] = iadev; 3197 ia_dev[iadev_count] = iadev;
3202 _ia_dev[iadev_count] = dev; 3198 _ia_dev[iadev_count] = dev;
3203 iadev_count++; 3199 iadev_count++;
@@ -3219,8 +3215,6 @@ static int __devinit ia_init_one(struct pci_dev *pdev,
3219 iadev->next_board = ia_boards; 3215 iadev->next_board = ia_boards;
3220 ia_boards = dev; 3216 ia_boards = dev;
3221 3217
3222 pci_set_drvdata(pdev, dev);
3223
3224 return 0; 3218 return 0;
3225 3219
3226err_out_deregister_dev: 3220err_out_deregister_dev:
@@ -3238,9 +3232,14 @@ static void __devexit ia_remove_one(struct pci_dev *pdev)
3238 struct atm_dev *dev = pci_get_drvdata(pdev); 3232 struct atm_dev *dev = pci_get_drvdata(pdev);
3239 IADEV *iadev = INPH_IA_DEV(dev); 3233 IADEV *iadev = INPH_IA_DEV(dev);
3240 3234
3241 ia_phy_put(dev, ia_phy_get(dev,0x10) & ~(0x4), 0x10); 3235 /* Disable phy interrupts */
3236 ia_phy_put(dev, ia_phy_get(dev, SUNI_RSOP_CIE) & ~(SUNI_RSOP_CIE_LOSE),
3237 SUNI_RSOP_CIE);
3242 udelay(1); 3238 udelay(1);
3243 3239
3240 if (dev->phy && dev->phy->stop)
3241 dev->phy->stop(dev);
3242
3244 /* De-register device */ 3243 /* De-register device */
3245 free_irq(iadev->irq, dev); 3244 free_irq(iadev->irq, dev);
3246 iadev_count--; 3245 iadev_count--;
diff --git a/drivers/auxdisplay/Kconfig b/drivers/auxdisplay/Kconfig
index 043353bd0600..14b9d5f4c203 100644
--- a/drivers/auxdisplay/Kconfig
+++ b/drivers/auxdisplay/Kconfig
@@ -64,7 +64,7 @@ config KS0108_DELAY
64 Amount of time the ks0108 should wait between each control write 64 Amount of time the ks0108 should wait between each control write
65 to the parallel port. 65 to the parallel port.
66 66
67 If your driver seems to miss random writings, increment this. 67 If your LCD seems to miss random writings, increment this.
68 68
69 If you don't know what I'm talking about, ignore it. 69 If you don't know what I'm talking about, ignore it.
70 70
diff --git a/drivers/auxdisplay/cfag12864b.c b/drivers/auxdisplay/cfag12864b.c
index 80bb06105387..683509f013ab 100644
--- a/drivers/auxdisplay/cfag12864b.c
+++ b/drivers/auxdisplay/cfag12864b.c
@@ -5,7 +5,7 @@
5 * License: GPLv2 5 * License: GPLv2
6 * Depends: ks0108 6 * Depends: ks0108
7 * 7 *
8 * Author: Copyright (C) Miguel Ojeda Sandonis <maxextreme@gmail.com> 8 * Author: Copyright (C) Miguel Ojeda Sandonis
9 * Date: 2006-10-31 9 * Date: 2006-10-31
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
@@ -398,5 +398,5 @@ module_init(cfag12864b_init);
398module_exit(cfag12864b_exit); 398module_exit(cfag12864b_exit);
399 399
400MODULE_LICENSE("GPL v2"); 400MODULE_LICENSE("GPL v2");
401MODULE_AUTHOR("Miguel Ojeda Sandonis <maxextreme@gmail.com>"); 401MODULE_AUTHOR("Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>");
402MODULE_DESCRIPTION("cfag12864b LCD driver"); 402MODULE_DESCRIPTION("cfag12864b LCD driver");
diff --git a/drivers/auxdisplay/cfag12864bfb.c b/drivers/auxdisplay/cfag12864bfb.c
index 307c190699e0..fe3a865be4e5 100644
--- a/drivers/auxdisplay/cfag12864bfb.c
+++ b/drivers/auxdisplay/cfag12864bfb.c
@@ -5,7 +5,7 @@
5 * License: GPLv2 5 * License: GPLv2
6 * Depends: cfag12864b 6 * Depends: cfag12864b
7 * 7 *
8 * Author: Copyright (C) Miguel Ojeda Sandonis <maxextreme@gmail.com> 8 * Author: Copyright (C) Miguel Ojeda Sandonis
9 * Date: 2006-10-31 9 * Date: 2006-10-31
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
@@ -186,5 +186,5 @@ module_init(cfag12864bfb_init);
186module_exit(cfag12864bfb_exit); 186module_exit(cfag12864bfb_exit);
187 187
188MODULE_LICENSE("GPL v2"); 188MODULE_LICENSE("GPL v2");
189MODULE_AUTHOR("Miguel Ojeda Sandonis <maxextreme@gmail.com>"); 189MODULE_AUTHOR("Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>");
190MODULE_DESCRIPTION("cfag12864b LCD framebuffer driver"); 190MODULE_DESCRIPTION("cfag12864b LCD framebuffer driver");
diff --git a/drivers/auxdisplay/ks0108.c b/drivers/auxdisplay/ks0108.c
index e6c3646ef18c..5b93852392b8 100644
--- a/drivers/auxdisplay/ks0108.c
+++ b/drivers/auxdisplay/ks0108.c
@@ -5,7 +5,7 @@
5 * License: GPLv2 5 * License: GPLv2
6 * Depends: parport 6 * Depends: parport
7 * 7 *
8 * Author: Copyright (C) Miguel Ojeda Sandonis <maxextreme@gmail.com> 8 * Author: Copyright (C) Miguel Ojeda Sandonis
9 * Date: 2006-10-31 9 * Date: 2006-10-31
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
@@ -173,6 +173,6 @@ module_init(ks0108_init);
173module_exit(ks0108_exit); 173module_exit(ks0108_exit);
174 174
175MODULE_LICENSE("GPL v2"); 175MODULE_LICENSE("GPL v2");
176MODULE_AUTHOR("Miguel Ojeda Sandonis <maxextreme@gmail.com>"); 176MODULE_AUTHOR("Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>");
177MODULE_DESCRIPTION("ks0108 LCD Controller driver"); 177MODULE_DESCRIPTION("ks0108 LCD Controller driver");
178 178
diff --git a/drivers/base/node.c b/drivers/base/node.c
index 39f3d1b3a213..0f867a083338 100644
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -84,8 +84,8 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf)
84 nid, K(i.totalram), 84 nid, K(i.totalram),
85 nid, K(i.freeram), 85 nid, K(i.freeram),
86 nid, K(i.totalram - i.freeram), 86 nid, K(i.totalram - i.freeram),
87 nid, node_page_state(nid, NR_ACTIVE), 87 nid, K(node_page_state(nid, NR_ACTIVE)),
88 nid, node_page_state(nid, NR_INACTIVE), 88 nid, K(node_page_state(nid, NR_INACTIVE)),
89#ifdef CONFIG_HIGHMEM 89#ifdef CONFIG_HIGHMEM
90 nid, K(i.totalhigh), 90 nid, K(i.totalhigh),
91 nid, K(i.freehigh), 91 nid, K(i.freehigh),
diff --git a/drivers/base/power/trace.c b/drivers/base/power/trace.c
index 2b4b392dcbc1..87a7f1d02578 100644
--- a/drivers/base/power/trace.c
+++ b/drivers/base/power/trace.c
@@ -153,7 +153,7 @@ EXPORT_SYMBOL(set_trace_device);
153 * it's not any guarantee, but it's a high _likelihood_ that 153 * it's not any guarantee, but it's a high _likelihood_ that
154 * the match is valid). 154 * the match is valid).
155 */ 155 */
156void generate_resume_trace(void *tracedata, unsigned int user) 156void generate_resume_trace(const void *tracedata, unsigned int user)
157{ 157{
158 unsigned short lineno = *(unsigned short *)tracedata; 158 unsigned short lineno = *(unsigned short *)tracedata;
159 const char *file = *(const char **)(tracedata + 2); 159 const char *file = *(const char **)(tracedata + 2);
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 5f1e1cc6165a..d81632cd7d06 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -106,35 +106,34 @@ MODULE_DEVICE_TABLE(pci, cciss_pci_device_id);
106/* board_id = Subsystem Device ID & Vendor ID 106/* board_id = Subsystem Device ID & Vendor ID
107 * product = Marketing Name for the board 107 * product = Marketing Name for the board
108 * access = Address of the struct of function pointers 108 * access = Address of the struct of function pointers
109 * nr_cmds = Number of commands supported by controller
110 */ 109 */
111static struct board_type products[] = { 110static struct board_type products[] = {
112 {0x40700E11, "Smart Array 5300", &SA5_access, 512}, 111 {0x40700E11, "Smart Array 5300", &SA5_access},
113 {0x40800E11, "Smart Array 5i", &SA5B_access, 512}, 112 {0x40800E11, "Smart Array 5i", &SA5B_access},
114 {0x40820E11, "Smart Array 532", &SA5B_access, 512}, 113 {0x40820E11, "Smart Array 532", &SA5B_access},
115 {0x40830E11, "Smart Array 5312", &SA5B_access, 512}, 114 {0x40830E11, "Smart Array 5312", &SA5B_access},
116 {0x409A0E11, "Smart Array 641", &SA5_access, 512}, 115 {0x409A0E11, "Smart Array 641", &SA5_access},
117 {0x409B0E11, "Smart Array 642", &SA5_access, 512}, 116 {0x409B0E11, "Smart Array 642", &SA5_access},
118 {0x409C0E11, "Smart Array 6400", &SA5_access, 512}, 117 {0x409C0E11, "Smart Array 6400", &SA5_access},
119 {0x409D0E11, "Smart Array 6400 EM", &SA5_access, 512}, 118 {0x409D0E11, "Smart Array 6400 EM", &SA5_access},
120 {0x40910E11, "Smart Array 6i", &SA5_access, 512}, 119 {0x40910E11, "Smart Array 6i", &SA5_access},
121 {0x3225103C, "Smart Array P600", &SA5_access, 512}, 120 {0x3225103C, "Smart Array P600", &SA5_access},
122 {0x3223103C, "Smart Array P800", &SA5_access, 512}, 121 {0x3223103C, "Smart Array P800", &SA5_access},
123 {0x3234103C, "Smart Array P400", &SA5_access, 512}, 122 {0x3234103C, "Smart Array P400", &SA5_access},
124 {0x3235103C, "Smart Array P400i", &SA5_access, 512}, 123 {0x3235103C, "Smart Array P400i", &SA5_access},
125 {0x3211103C, "Smart Array E200i", &SA5_access, 120}, 124 {0x3211103C, "Smart Array E200i", &SA5_access},
126 {0x3212103C, "Smart Array E200", &SA5_access, 120}, 125 {0x3212103C, "Smart Array E200", &SA5_access},
127 {0x3213103C, "Smart Array E200i", &SA5_access, 120}, 126 {0x3213103C, "Smart Array E200i", &SA5_access},
128 {0x3214103C, "Smart Array E200i", &SA5_access, 120}, 127 {0x3214103C, "Smart Array E200i", &SA5_access},
129 {0x3215103C, "Smart Array E200i", &SA5_access, 120}, 128 {0x3215103C, "Smart Array E200i", &SA5_access},
130 {0x3237103C, "Smart Array E500", &SA5_access, 512}, 129 {0x3237103C, "Smart Array E500", &SA5_access},
131 {0x323D103C, "Smart Array P700m", &SA5_access, 512}, 130 {0x323D103C, "Smart Array P700m", &SA5_access},
132 {0x3241103C, "Smart Array P212", &SA5_access, 384}, 131 {0x3241103C, "Smart Array P212", &SA5_access},
133 {0x3243103C, "Smart Array P410", &SA5_access, 384}, 132 {0x3243103C, "Smart Array P410", &SA5_access},
134 {0x3245103C, "Smart Array P410i", &SA5_access, 384}, 133 {0x3245103C, "Smart Array P410i", &SA5_access},
135 {0x3247103C, "Smart Array P411", &SA5_access, 384}, 134 {0x3247103C, "Smart Array P411", &SA5_access},
136 {0x3249103C, "Smart Array P812", &SA5_access, 384}, 135 {0x3249103C, "Smart Array P812", &SA5_access},
137 {0xFFFF103C, "Unknown Smart Array", &SA5_access, 120}, 136 {0xFFFF103C, "Unknown Smart Array", &SA5_access},
138}; 137};
139 138
140/* How long to wait (in milliseconds) for board to go into simple mode */ 139/* How long to wait (in milliseconds) for board to go into simple mode */
@@ -3086,11 +3085,20 @@ static int __devinit cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
3086 print_cfg_table(c->cfgtable); 3085 print_cfg_table(c->cfgtable);
3087#endif /* CCISS_DEBUG */ 3086#endif /* CCISS_DEBUG */
3088 3087
3088 /* Some controllers support Zero Memory Raid (ZMR).
3089 * When configured in ZMR mode the number of supported
3090 * commands drops to 64. So instead of just setting an
3091 * arbitrary value we make the driver a little smarter.
3092 * We read the config table to tell us how many commands
3093 * are supported on the controller then subtract 4 to
3094 * leave a little room for ioctl calls.
3095 */
3096 c->max_commands = readl(&(c->cfgtable->CmdsOutMax));
3089 for (i = 0; i < ARRAY_SIZE(products); i++) { 3097 for (i = 0; i < ARRAY_SIZE(products); i++) {
3090 if (board_id == products[i].board_id) { 3098 if (board_id == products[i].board_id) {
3091 c->product_name = products[i].product_name; 3099 c->product_name = products[i].product_name;
3092 c->access = *(products[i].access); 3100 c->access = *(products[i].access);
3093 c->nr_cmds = products[i].nr_cmds; 3101 c->nr_cmds = c->max_commands - 4;
3094 break; 3102 break;
3095 } 3103 }
3096 } 3104 }
@@ -3110,7 +3118,7 @@ static int __devinit cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
3110 if (subsystem_vendor_id == PCI_VENDOR_ID_HP) { 3118 if (subsystem_vendor_id == PCI_VENDOR_ID_HP) {
3111 c->product_name = products[i-1].product_name; 3119 c->product_name = products[i-1].product_name;
3112 c->access = *(products[i-1].access); 3120 c->access = *(products[i-1].access);
3113 c->nr_cmds = products[i-1].nr_cmds; 3121 c->nr_cmds = c->max_commands - 4;
3114 printk(KERN_WARNING "cciss: This is an unknown " 3122 printk(KERN_WARNING "cciss: This is an unknown "
3115 "Smart Array controller.\n" 3123 "Smart Array controller.\n"
3116 "cciss: Please update to the latest driver " 3124 "cciss: Please update to the latest driver "
@@ -3546,6 +3554,10 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
3546 for (j = 0; j <= hba[i]->highest_lun; j++) 3554 for (j = 0; j <= hba[i]->highest_lun; j++)
3547 add_disk(hba[i]->gendisk[j]); 3555 add_disk(hba[i]->gendisk[j]);
3548 3556
3557 /* we must register the controller even if no disks exist */
3558 if (hba[i]->highest_lun == -1)
3559 add_disk(hba[i]->gendisk[0]);
3560
3549 return 1; 3561 return 1;
3550 3562
3551 clean4: 3563 clean4:
diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h
index 99e6a406efb4..81e14bea54bd 100644
--- a/drivers/char/agp/agp.h
+++ b/drivers/char/agp/agp.h
@@ -99,8 +99,8 @@ struct agp_bridge_driver {
99 const void *aperture_sizes; 99 const void *aperture_sizes;
100 int num_aperture_sizes; 100 int num_aperture_sizes;
101 enum aper_size_type size_type; 101 enum aper_size_type size_type;
102 int cant_use_aperture; 102 bool cant_use_aperture;
103 int needs_scratch_page; 103 bool needs_scratch_page;
104 const struct gatt_mask *masks; 104 const struct gatt_mask *masks;
105 int (*fetch_size)(void); 105 int (*fetch_size)(void);
106 int (*configure)(void); 106 int (*configure)(void);
@@ -278,7 +278,7 @@ void agp_generic_destroy_page(void *addr, int flags);
278void agp_free_key(int key); 278void agp_free_key(int key);
279int agp_num_entries(void); 279int agp_num_entries(void);
280u32 agp_collect_device_status(struct agp_bridge_data *bridge, u32 mode, u32 command); 280u32 agp_collect_device_status(struct agp_bridge_data *bridge, u32 mode, u32 command);
281void agp_device_command(u32 command, int agp_v3); 281void agp_device_command(u32 command, bool agp_v3);
282int agp_3_5_enable(struct agp_bridge_data *bridge); 282int agp_3_5_enable(struct agp_bridge_data *bridge);
283void global_cache_flush(void); 283void global_cache_flush(void);
284void get_agp_version(struct agp_bridge_data *bridge); 284void get_agp_version(struct agp_bridge_data *bridge);
diff --git a/drivers/char/agp/alpha-agp.c b/drivers/char/agp/alpha-agp.c
index e77c17838c8a..5da89f6c6c25 100644
--- a/drivers/char/agp/alpha-agp.c
+++ b/drivers/char/agp/alpha-agp.c
@@ -80,7 +80,7 @@ static void alpha_core_agp_enable(struct agp_bridge_data *bridge, u32 mode)
80 agp->mode.bits.enable = 1; 80 agp->mode.bits.enable = 1;
81 agp->ops->configure(agp); 81 agp->ops->configure(agp);
82 82
83 agp_device_command(agp->mode.lw, 0); 83 agp_device_command(agp->mode.lw, false);
84} 84}
85 85
86static int alpha_core_agp_insert_memory(struct agp_memory *mem, off_t pg_start, 86static int alpha_core_agp_insert_memory(struct agp_memory *mem, off_t pg_start,
@@ -126,7 +126,7 @@ struct agp_bridge_driver alpha_core_agp_driver = {
126 .aperture_sizes = alpha_core_agp_sizes, 126 .aperture_sizes = alpha_core_agp_sizes,
127 .num_aperture_sizes = 1, 127 .num_aperture_sizes = 1,
128 .size_type = FIXED_APER_SIZE, 128 .size_type = FIXED_APER_SIZE,
129 .cant_use_aperture = 1, 129 .cant_use_aperture = true,
130 .masks = NULL, 130 .masks = NULL,
131 131
132 .fetch_size = alpha_core_agp_fetch_size, 132 .fetch_size = alpha_core_agp_fetch_size,
diff --git a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c
index 96bdb9296b07..39a0718bc616 100644
--- a/drivers/char/agp/amd-k7-agp.c
+++ b/drivers/char/agp/amd-k7-agp.c
@@ -314,9 +314,9 @@ static int amd_insert_memory(struct agp_memory *mem, off_t pg_start, int type)
314 j++; 314 j++;
315 } 315 }
316 316
317 if (mem->is_flushed == FALSE) { 317 if (!mem->is_flushed) {
318 global_cache_flush(); 318 global_cache_flush();
319 mem->is_flushed = TRUE; 319 mem->is_flushed = true;
320 } 320 }
321 321
322 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 322 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c
index d8200ac8f8cb..481ffe87c716 100644
--- a/drivers/char/agp/amd64-agp.c
+++ b/drivers/char/agp/amd64-agp.c
@@ -16,28 +16,9 @@
16#include <asm/page.h> /* PAGE_SIZE */ 16#include <asm/page.h> /* PAGE_SIZE */
17#include <asm/e820.h> 17#include <asm/e820.h>
18#include <asm/k8.h> 18#include <asm/k8.h>
19#include <asm/gart.h>
19#include "agp.h" 20#include "agp.h"
20 21
21/* PTE bits. */
22#define GPTE_VALID 1
23#define GPTE_COHERENT 2
24
25/* Aperture control register bits. */
26#define GARTEN (1<<0)
27#define DISGARTCPU (1<<4)
28#define DISGARTIO (1<<5)
29
30/* GART cache control register bits. */
31#define INVGART (1<<0)
32#define GARTPTEERR (1<<1)
33
34/* K8 On-cpu GART registers */
35#define AMD64_GARTAPERTURECTL 0x90
36#define AMD64_GARTAPERTUREBASE 0x94
37#define AMD64_GARTTABLEBASE 0x98
38#define AMD64_GARTCACHECTL 0x9c
39#define AMD64_GARTEN (1<<0)
40
41/* NVIDIA K8 registers */ 22/* NVIDIA K8 registers */
42#define NVIDIA_X86_64_0_APBASE 0x10 23#define NVIDIA_X86_64_0_APBASE 0x10
43#define NVIDIA_X86_64_1_APBASE1 0x50 24#define NVIDIA_X86_64_1_APBASE1 0x50
@@ -90,9 +71,9 @@ static int amd64_insert_memory(struct agp_memory *mem, off_t pg_start, int type)
90 j++; 71 j++;
91 } 72 }
92 73
93 if (mem->is_flushed == FALSE) { 74 if (!mem->is_flushed) {
94 global_cache_flush(); 75 global_cache_flush();
95 mem->is_flushed = TRUE; 76 mem->is_flushed = true;
96 } 77 }
97 78
98 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 79 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
@@ -165,29 +146,18 @@ static int amd64_fetch_size(void)
165 * In a multiprocessor x86-64 system, this function gets 146 * In a multiprocessor x86-64 system, this function gets
166 * called once for each CPU. 147 * called once for each CPU.
167 */ 148 */
168static u64 amd64_configure (struct pci_dev *hammer, u64 gatt_table) 149static u64 amd64_configure(struct pci_dev *hammer, u64 gatt_table)
169{ 150{
170 u64 aperturebase; 151 u64 aperturebase;
171 u32 tmp; 152 u32 tmp;
172 u64 addr, aper_base; 153 u64 aper_base;
173 154
174 /* Address to map to */ 155 /* Address to map to */
175 pci_read_config_dword (hammer, AMD64_GARTAPERTUREBASE, &tmp); 156 pci_read_config_dword(hammer, AMD64_GARTAPERTUREBASE, &tmp);
176 aperturebase = tmp << 25; 157 aperturebase = tmp << 25;
177 aper_base = (aperturebase & PCI_BASE_ADDRESS_MEM_MASK); 158 aper_base = (aperturebase & PCI_BASE_ADDRESS_MEM_MASK);
178 159
179 /* address of the mappings table */ 160 enable_gart_translation(hammer, gatt_table);
180 addr = (u64) gatt_table;
181 addr >>= 12;
182 tmp = (u32) addr<<4;
183 tmp &= ~0xf;
184 pci_write_config_dword (hammer, AMD64_GARTTABLEBASE, tmp);
185
186 /* Enable GART translation for this hammer. */
187 pci_read_config_dword(hammer, AMD64_GARTAPERTURECTL, &tmp);
188 tmp |= GARTEN;
189 tmp &= ~(DISGARTCPU | DISGARTIO);
190 pci_write_config_dword(hammer, AMD64_GARTAPERTURECTL, tmp);
191 161
192 return aper_base; 162 return aper_base;
193} 163}
@@ -226,9 +196,9 @@ static void amd64_cleanup(void)
226 for (i = 0; i < num_k8_northbridges; i++) { 196 for (i = 0; i < num_k8_northbridges; i++) {
227 struct pci_dev *dev = k8_northbridges[i]; 197 struct pci_dev *dev = k8_northbridges[i];
228 /* disable gart translation */ 198 /* disable gart translation */
229 pci_read_config_dword (dev, AMD64_GARTAPERTURECTL, &tmp); 199 pci_read_config_dword(dev, AMD64_GARTAPERTURECTL, &tmp);
230 tmp &= ~AMD64_GARTEN; 200 tmp &= ~AMD64_GARTEN;
231 pci_write_config_dword (dev, AMD64_GARTAPERTURECTL, tmp); 201 pci_write_config_dword(dev, AMD64_GARTAPERTURECTL, tmp);
232 } 202 }
233} 203}
234 204
@@ -258,24 +228,10 @@ static const struct agp_bridge_driver amd_8151_driver = {
258}; 228};
259 229
260/* Some basic sanity checks for the aperture. */ 230/* Some basic sanity checks for the aperture. */
261static int __devinit aperture_valid(u64 aper, u32 size) 231static int __devinit agp_aperture_valid(u64 aper, u32 size)
262{ 232{
263 if (aper == 0) { 233 if (!aperture_valid(aper, size, 32*1024*1024))
264 printk(KERN_ERR PFX "No aperture\n");
265 return 0;
266 }
267 if (size < 32*1024*1024) {
268 printk(KERN_ERR PFX "Aperture too small (%d MB)\n", size>>20);
269 return 0;
270 }
271 if ((u64)aper + size > 0x100000000ULL) {
272 printk(KERN_ERR PFX "Aperture out of bounds\n");
273 return 0; 234 return 0;
274 }
275 if (e820_any_mapped(aper, aper + size, E820_RAM)) {
276 printk(KERN_ERR PFX "Aperture pointing to RAM\n");
277 return 0;
278 }
279 235
280 /* Request the Aperture. This catches cases when someone else 236 /* Request the Aperture. This catches cases when someone else
281 already put a mapping in there - happens with some very broken BIOS 237 already put a mapping in there - happens with some very broken BIOS
@@ -308,11 +264,11 @@ static __devinit int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp,
308 u32 nb_order, nb_base; 264 u32 nb_order, nb_base;
309 u16 apsize; 265 u16 apsize;
310 266
311 pci_read_config_dword(nb, 0x90, &nb_order); 267 pci_read_config_dword(nb, AMD64_GARTAPERTURECTL, &nb_order);
312 nb_order = (nb_order >> 1) & 7; 268 nb_order = (nb_order >> 1) & 7;
313 pci_read_config_dword(nb, 0x94, &nb_base); 269 pci_read_config_dword(nb, AMD64_GARTAPERTUREBASE, &nb_base);
314 nb_aper = nb_base << 25; 270 nb_aper = nb_base << 25;
315 if (aperture_valid(nb_aper, (32*1024*1024)<<nb_order)) { 271 if (agp_aperture_valid(nb_aper, (32*1024*1024)<<nb_order)) {
316 return 0; 272 return 0;
317 } 273 }
318 274
@@ -331,12 +287,23 @@ static __devinit int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp,
331 pci_read_config_dword(agp, 0x10, &aper_low); 287 pci_read_config_dword(agp, 0x10, &aper_low);
332 pci_read_config_dword(agp, 0x14, &aper_hi); 288 pci_read_config_dword(agp, 0x14, &aper_hi);
333 aper = (aper_low & ~((1<<22)-1)) | ((u64)aper_hi << 32); 289 aper = (aper_low & ~((1<<22)-1)) | ((u64)aper_hi << 32);
290
291 /*
292 * On some sick chips APSIZE is 0. This means it wants 4G
293 * so let double check that order, and lets trust the AMD NB settings
294 */
295 if (order >=0 && aper + (32ULL<<(20 + order)) > 0x100000000ULL) {
296 printk(KERN_INFO "Aperture size %u MB is not right, using settings from NB\n",
297 32 << order);
298 order = nb_order;
299 }
300
334 printk(KERN_INFO PFX "Aperture from AGP @ %Lx size %u MB\n", aper, 32 << order); 301 printk(KERN_INFO PFX "Aperture from AGP @ %Lx size %u MB\n", aper, 32 << order);
335 if (order < 0 || !aperture_valid(aper, (32*1024*1024)<<order)) 302 if (order < 0 || !agp_aperture_valid(aper, (32*1024*1024)<<order))
336 return -1; 303 return -1;
337 304
338 pci_write_config_dword(nb, 0x90, order << 1); 305 pci_write_config_dword(nb, AMD64_GARTAPERTURECTL, order << 1);
339 pci_write_config_dword(nb, 0x94, aper >> 25); 306 pci_write_config_dword(nb, AMD64_GARTAPERTUREBASE, aper >> 25);
340 307
341 return 0; 308 return 0;
342} 309}
diff --git a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c
index 07b4d8ff56e5..3a4566c0d84f 100644
--- a/drivers/char/agp/ati-agp.c
+++ b/drivers/char/agp/ati-agp.c
@@ -287,10 +287,10 @@ static int ati_insert_memory(struct agp_memory * mem,
287 j++; 287 j++;
288 } 288 }
289 289
290 if (mem->is_flushed == FALSE) { 290 if (!mem->is_flushed) {
291 /*CACHE_FLUSH(); */ 291 /*CACHE_FLUSH(); */
292 global_cache_flush(); 292 global_cache_flush();
293 mem->is_flushed = TRUE; 293 mem->is_flushed = true;
294 } 294 }
295 295
296 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 296 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c
index b1bdd015165c..1ec87104e68c 100644
--- a/drivers/char/agp/backend.c
+++ b/drivers/char/agp/backend.c
@@ -188,10 +188,10 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
188 188
189err_out: 189err_out:
190 if (bridge->driver->needs_scratch_page) { 190 if (bridge->driver->needs_scratch_page) {
191 bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real), 191 void *va = gart_to_virt(bridge->scratch_page_real);
192 AGP_PAGE_DESTROY_UNMAP); 192
193 bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real), 193 bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
194 AGP_PAGE_DESTROY_FREE); 194 bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
195 } 195 }
196 if (got_gatt) 196 if (got_gatt)
197 bridge->driver->free_gatt_table(bridge); 197 bridge->driver->free_gatt_table(bridge);
@@ -215,10 +215,10 @@ static void agp_backend_cleanup(struct agp_bridge_data *bridge)
215 215
216 if (bridge->driver->agp_destroy_page && 216 if (bridge->driver->agp_destroy_page &&
217 bridge->driver->needs_scratch_page) { 217 bridge->driver->needs_scratch_page) {
218 bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real), 218 void *va = gart_to_virt(bridge->scratch_page_real);
219 AGP_PAGE_DESTROY_UNMAP); 219
220 bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real), 220 bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
221 AGP_PAGE_DESTROY_FREE); 221 bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
222 } 222 }
223} 223}
224 224
diff --git a/drivers/char/agp/compat_ioctl.c b/drivers/char/agp/compat_ioctl.c
index 39275794fe63..58c57cb2518c 100644
--- a/drivers/char/agp/compat_ioctl.c
+++ b/drivers/char/agp/compat_ioctl.c
@@ -214,7 +214,7 @@ long compat_agp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
214 ret_val = -EINVAL; 214 ret_val = -EINVAL;
215 goto ioctl_out; 215 goto ioctl_out;
216 } 216 }
217 if ((agp_fe.backend_acquired != TRUE) && 217 if ((agp_fe.backend_acquired != true) &&
218 (cmd != AGPIOC_ACQUIRE32)) { 218 (cmd != AGPIOC_ACQUIRE32)) {
219 ret_val = -EBUSY; 219 ret_val = -EBUSY;
220 goto ioctl_out; 220 goto ioctl_out;
diff --git a/drivers/char/agp/efficeon-agp.c b/drivers/char/agp/efficeon-agp.c
index cac0009cebc1..8ca6f262ef85 100644
--- a/drivers/char/agp/efficeon-agp.c
+++ b/drivers/char/agp/efficeon-agp.c
@@ -249,9 +249,9 @@ static int efficeon_insert_memory(struct agp_memory * mem, off_t pg_start, int t
249 if (type != 0 || mem->type != 0) 249 if (type != 0 || mem->type != 0)
250 return -EINVAL; 250 return -EINVAL;
251 251
252 if (mem->is_flushed == FALSE) { 252 if (!mem->is_flushed) {
253 global_cache_flush(); 253 global_cache_flush();
254 mem->is_flushed = TRUE; 254 mem->is_flushed = true;
255 } 255 }
256 256
257 last_page = NULL; 257 last_page = NULL;
@@ -329,7 +329,7 @@ static const struct agp_bridge_driver efficeon_driver = {
329 .free_gatt_table = efficeon_free_gatt_table, 329 .free_gatt_table = efficeon_free_gatt_table,
330 .insert_memory = efficeon_insert_memory, 330 .insert_memory = efficeon_insert_memory,
331 .remove_memory = efficeon_remove_memory, 331 .remove_memory = efficeon_remove_memory,
332 .cant_use_aperture = 0, // 1 might be faster? 332 .cant_use_aperture = false, // true might be faster?
333 333
334 // Generic 334 // Generic
335 .alloc_by_type = agp_generic_alloc_by_type, 335 .alloc_by_type = agp_generic_alloc_by_type,
diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c
index 857b26227d87..e6cb1ab03e06 100644
--- a/drivers/char/agp/frontend.c
+++ b/drivers/char/agp/frontend.c
@@ -395,7 +395,7 @@ static int agp_remove_controller(struct agp_controller *controller)
395 395
396 if (agp_fe.current_controller == controller) { 396 if (agp_fe.current_controller == controller) {
397 agp_fe.current_controller = NULL; 397 agp_fe.current_controller = NULL;
398 agp_fe.backend_acquired = FALSE; 398 agp_fe.backend_acquired = false;
399 agp_backend_release(agp_bridge); 399 agp_backend_release(agp_bridge);
400 } 400 }
401 kfree(controller); 401 kfree(controller);
@@ -443,7 +443,7 @@ static void agp_controller_release_current(struct agp_controller *controller,
443 } 443 }
444 444
445 agp_fe.current_controller = NULL; 445 agp_fe.current_controller = NULL;
446 agp_fe.used_by_controller = FALSE; 446 agp_fe.used_by_controller = false;
447 agp_backend_release(agp_bridge); 447 agp_backend_release(agp_bridge);
448} 448}
449 449
@@ -573,7 +573,7 @@ static int agp_mmap(struct file *file, struct vm_area_struct *vma)
573 573
574 mutex_lock(&(agp_fe.agp_mutex)); 574 mutex_lock(&(agp_fe.agp_mutex));
575 575
576 if (agp_fe.backend_acquired != TRUE) 576 if (agp_fe.backend_acquired != true)
577 goto out_eperm; 577 goto out_eperm;
578 578
579 if (!(test_bit(AGP_FF_IS_VALID, &priv->access_flags))) 579 if (!(test_bit(AGP_FF_IS_VALID, &priv->access_flags)))
@@ -768,7 +768,7 @@ int agpioc_acquire_wrap(struct agp_file_private *priv)
768 768
769 atomic_inc(&agp_bridge->agp_in_use); 769 atomic_inc(&agp_bridge->agp_in_use);
770 770
771 agp_fe.backend_acquired = TRUE; 771 agp_fe.backend_acquired = true;
772 772
773 controller = agp_find_controller_by_pid(priv->my_pid); 773 controller = agp_find_controller_by_pid(priv->my_pid);
774 774
@@ -778,7 +778,7 @@ int agpioc_acquire_wrap(struct agp_file_private *priv)
778 controller = agp_create_controller(priv->my_pid); 778 controller = agp_create_controller(priv->my_pid);
779 779
780 if (controller == NULL) { 780 if (controller == NULL) {
781 agp_fe.backend_acquired = FALSE; 781 agp_fe.backend_acquired = false;
782 agp_backend_release(agp_bridge); 782 agp_backend_release(agp_bridge);
783 return -ENOMEM; 783 return -ENOMEM;
784 } 784 }
@@ -981,7 +981,7 @@ static long agp_ioctl(struct file *file,
981 ret_val = -EINVAL; 981 ret_val = -EINVAL;
982 goto ioctl_out; 982 goto ioctl_out;
983 } 983 }
984 if ((agp_fe.backend_acquired != TRUE) && 984 if ((agp_fe.backend_acquired != true) &&
985 (cmd != AGPIOC_ACQUIRE)) { 985 (cmd != AGPIOC_ACQUIRE)) {
986 ret_val = -EBUSY; 986 ret_val = -EBUSY;
987 goto ioctl_out; 987 goto ioctl_out;
diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c
index 7fc0c99a3a58..564daaa6c7d0 100644
--- a/drivers/char/agp/generic.c
+++ b/drivers/char/agp/generic.c
@@ -96,13 +96,13 @@ EXPORT_SYMBOL(agp_flush_chipset);
96void agp_alloc_page_array(size_t size, struct agp_memory *mem) 96void agp_alloc_page_array(size_t size, struct agp_memory *mem)
97{ 97{
98 mem->memory = NULL; 98 mem->memory = NULL;
99 mem->vmalloc_flag = 0; 99 mem->vmalloc_flag = false;
100 100
101 if (size <= 2*PAGE_SIZE) 101 if (size <= 2*PAGE_SIZE)
102 mem->memory = kmalloc(size, GFP_KERNEL | __GFP_NORETRY); 102 mem->memory = kmalloc(size, GFP_KERNEL | __GFP_NORETRY);
103 if (mem->memory == NULL) { 103 if (mem->memory == NULL) {
104 mem->memory = vmalloc(size); 104 mem->memory = vmalloc(size);
105 mem->vmalloc_flag = 1; 105 mem->vmalloc_flag = true;
106 } 106 }
107} 107}
108EXPORT_SYMBOL(agp_alloc_page_array); 108EXPORT_SYMBOL(agp_alloc_page_array);
@@ -188,7 +188,7 @@ void agp_free_memory(struct agp_memory *curr)
188 if (curr == NULL) 188 if (curr == NULL)
189 return; 189 return;
190 190
191 if (curr->is_bound == TRUE) 191 if (curr->is_bound)
192 agp_unbind_memory(curr); 192 agp_unbind_memory(curr);
193 193
194 if (curr->type >= AGP_USER_TYPES) { 194 if (curr->type >= AGP_USER_TYPES) {
@@ -202,10 +202,13 @@ void agp_free_memory(struct agp_memory *curr)
202 } 202 }
203 if (curr->page_count != 0) { 203 if (curr->page_count != 0) {
204 for (i = 0; i < curr->page_count; i++) { 204 for (i = 0; i < curr->page_count; i++) {
205 curr->bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[i]), AGP_PAGE_DESTROY_UNMAP); 205 curr->memory[i] = (unsigned long)gart_to_virt(curr->memory[i]);
206 curr->bridge->driver->agp_destroy_page((void *)curr->memory[i],
207 AGP_PAGE_DESTROY_UNMAP);
206 } 208 }
207 for (i = 0; i < curr->page_count; i++) { 209 for (i = 0; i < curr->page_count; i++) {
208 curr->bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[i]), AGP_PAGE_DESTROY_FREE); 210 curr->bridge->driver->agp_destroy_page((void *)curr->memory[i],
211 AGP_PAGE_DESTROY_FREE);
209 } 212 }
210 } 213 }
211 agp_free_key(curr->key); 214 agp_free_key(curr->key);
@@ -411,20 +414,20 @@ int agp_bind_memory(struct agp_memory *curr, off_t pg_start)
411 if (curr == NULL) 414 if (curr == NULL)
412 return -EINVAL; 415 return -EINVAL;
413 416
414 if (curr->is_bound == TRUE) { 417 if (curr->is_bound) {
415 printk(KERN_INFO PFX "memory %p is already bound!\n", curr); 418 printk(KERN_INFO PFX "memory %p is already bound!\n", curr);
416 return -EINVAL; 419 return -EINVAL;
417 } 420 }
418 if (curr->is_flushed == FALSE) { 421 if (!curr->is_flushed) {
419 curr->bridge->driver->cache_flush(); 422 curr->bridge->driver->cache_flush();
420 curr->is_flushed = TRUE; 423 curr->is_flushed = true;
421 } 424 }
422 ret_val = curr->bridge->driver->insert_memory(curr, pg_start, curr->type); 425 ret_val = curr->bridge->driver->insert_memory(curr, pg_start, curr->type);
423 426
424 if (ret_val != 0) 427 if (ret_val != 0)
425 return ret_val; 428 return ret_val;
426 429
427 curr->is_bound = TRUE; 430 curr->is_bound = true;
428 curr->pg_start = pg_start; 431 curr->pg_start = pg_start;
429 return 0; 432 return 0;
430} 433}
@@ -446,7 +449,7 @@ int agp_unbind_memory(struct agp_memory *curr)
446 if (curr == NULL) 449 if (curr == NULL)
447 return -EINVAL; 450 return -EINVAL;
448 451
449 if (curr->is_bound != TRUE) { 452 if (!curr->is_bound) {
450 printk(KERN_INFO PFX "memory %p was not bound!\n", curr); 453 printk(KERN_INFO PFX "memory %p was not bound!\n", curr);
451 return -EINVAL; 454 return -EINVAL;
452 } 455 }
@@ -456,7 +459,7 @@ int agp_unbind_memory(struct agp_memory *curr)
456 if (ret_val != 0) 459 if (ret_val != 0)
457 return ret_val; 460 return ret_val;
458 461
459 curr->is_bound = FALSE; 462 curr->is_bound = false;
460 curr->pg_start = 0; 463 curr->pg_start = 0;
461 return 0; 464 return 0;
462} 465}
@@ -754,7 +757,7 @@ u32 agp_collect_device_status(struct agp_bridge_data *bridge, u32 requested_mode
754EXPORT_SYMBOL(agp_collect_device_status); 757EXPORT_SYMBOL(agp_collect_device_status);
755 758
756 759
757void agp_device_command(u32 bridge_agpstat, int agp_v3) 760void agp_device_command(u32 bridge_agpstat, bool agp_v3)
758{ 761{
759 struct pci_dev *device = NULL; 762 struct pci_dev *device = NULL;
760 int mode; 763 int mode;
@@ -818,7 +821,7 @@ void agp_generic_enable(struct agp_bridge_data *bridge, u32 requested_mode)
818 /* If we have 3.5, we can do the isoch stuff. */ 821 /* If we have 3.5, we can do the isoch stuff. */
819 if (bridge->minor_version >= 5) 822 if (bridge->minor_version >= 5)
820 agp_3_5_enable(bridge); 823 agp_3_5_enable(bridge);
821 agp_device_command(bridge_agpstat, TRUE); 824 agp_device_command(bridge_agpstat, true);
822 return; 825 return;
823 } else { 826 } else {
824 /* Disable calibration cycle in RX91<1> when not in AGP3.0 mode of operation.*/ 827 /* Disable calibration cycle in RX91<1> when not in AGP3.0 mode of operation.*/
@@ -835,7 +838,7 @@ void agp_generic_enable(struct agp_bridge_data *bridge, u32 requested_mode)
835 } 838 }
836 839
837 /* AGP v<3 */ 840 /* AGP v<3 */
838 agp_device_command(bridge_agpstat, FALSE); 841 agp_device_command(bridge_agpstat, false);
839} 842}
840EXPORT_SYMBOL(agp_generic_enable); 843EXPORT_SYMBOL(agp_generic_enable);
841 844
@@ -1083,9 +1086,9 @@ int agp_generic_insert_memory(struct agp_memory * mem, off_t pg_start, int type)
1083 j++; 1086 j++;
1084 } 1087 }
1085 1088
1086 if (mem->is_flushed == FALSE) { 1089 if (!mem->is_flushed) {
1087 bridge->driver->cache_flush(); 1090 bridge->driver->cache_flush();
1088 mem->is_flushed = TRUE; 1091 mem->is_flushed = true;
1089 } 1092 }
1090 1093
1091 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 1094 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
diff --git a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c
index cbb0444467ba..80d7317f85c9 100644
--- a/drivers/char/agp/hp-agp.c
+++ b/drivers/char/agp/hp-agp.c
@@ -353,9 +353,9 @@ hp_zx1_insert_memory (struct agp_memory *mem, off_t pg_start, int type)
353 j++; 353 j++;
354 } 354 }
355 355
356 if (mem->is_flushed == FALSE) { 356 if (!mem->is_flushed) {
357 global_cache_flush(); 357 global_cache_flush();
358 mem->is_flushed = TRUE; 358 mem->is_flushed = true;
359 } 359 }
360 360
361 for (i = 0, j = io_pg_start; i < mem->page_count; i++) { 361 for (i = 0, j = io_pg_start; i < mem->page_count; i++) {
@@ -437,7 +437,7 @@ const struct agp_bridge_driver hp_zx1_driver = {
437 .agp_alloc_page = agp_generic_alloc_page, 437 .agp_alloc_page = agp_generic_alloc_page,
438 .agp_destroy_page = agp_generic_destroy_page, 438 .agp_destroy_page = agp_generic_destroy_page,
439 .agp_type_to_mask_type = agp_generic_type_to_mask_type, 439 .agp_type_to_mask_type = agp_generic_type_to_mask_type,
440 .cant_use_aperture = 1, 440 .cant_use_aperture = true,
441}; 441};
442 442
443static int __init 443static int __init
diff --git a/drivers/char/agp/i460-agp.c b/drivers/char/agp/i460-agp.c
index 76f581c85a7d..e587eebebc67 100644
--- a/drivers/char/agp/i460-agp.c
+++ b/drivers/char/agp/i460-agp.c
@@ -580,7 +580,7 @@ const struct agp_bridge_driver intel_i460_driver = {
580 .alloc_by_type = agp_generic_alloc_by_type, 580 .alloc_by_type = agp_generic_alloc_by_type,
581 .free_by_type = agp_generic_free_by_type, 581 .free_by_type = agp_generic_free_by_type,
582 .agp_type_to_mask_type = agp_generic_type_to_mask_type, 582 .agp_type_to_mask_type = agp_generic_type_to_mask_type,
583 .cant_use_aperture = 1, 583 .cant_use_aperture = true,
584}; 584};
585 585
586static int __devinit agp_intel_i460_probe(struct pci_dev *pdev, 586static int __devinit agp_intel_i460_probe(struct pci_dev *pdev,
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index eeea50a1d22a..df702642ab8f 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -34,6 +34,12 @@
34#define PCI_DEVICE_ID_INTEL_Q33_IG 0x29D2 34#define PCI_DEVICE_ID_INTEL_Q33_IG 0x29D2
35#define PCI_DEVICE_ID_INTEL_IGD_HB 0x2A40 35#define PCI_DEVICE_ID_INTEL_IGD_HB 0x2A40
36#define PCI_DEVICE_ID_INTEL_IGD_IG 0x2A42 36#define PCI_DEVICE_ID_INTEL_IGD_IG 0x2A42
37#define PCI_DEVICE_ID_INTEL_IGD_E_HB 0x2E00
38#define PCI_DEVICE_ID_INTEL_IGD_E_IG 0x2E02
39#define PCI_DEVICE_ID_INTEL_Q45_HB 0x2E10
40#define PCI_DEVICE_ID_INTEL_Q45_IG 0x2E12
41#define PCI_DEVICE_ID_INTEL_G45_HB 0x2E20
42#define PCI_DEVICE_ID_INTEL_G45_IG 0x2E22
37 43
38/* cover 915 and 945 variants */ 44/* cover 915 and 945 variants */
39#define IS_I915 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || \ 45#define IS_I915 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || \
@@ -55,6 +61,10 @@
55 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \ 61 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \
56 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q33_HB) 62 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q33_HB)
57 63
64#define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_E_HB || \
65 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \
66 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB)
67
58extern int agp_memory_reserved; 68extern int agp_memory_reserved;
59 69
60 70
@@ -80,8 +90,13 @@ extern int agp_memory_reserved;
80#define I915_PTEADDR 0x1C 90#define I915_PTEADDR 0x1C
81#define I915_GMCH_GMS_STOLEN_48M (0x6 << 4) 91#define I915_GMCH_GMS_STOLEN_48M (0x6 << 4)
82#define I915_GMCH_GMS_STOLEN_64M (0x7 << 4) 92#define I915_GMCH_GMS_STOLEN_64M (0x7 << 4)
83#define G33_GMCH_GMS_STOLEN_128M (0x8 << 4) 93#define G33_GMCH_GMS_STOLEN_128M (0x8 << 4)
84#define G33_GMCH_GMS_STOLEN_256M (0x9 << 4) 94#define G33_GMCH_GMS_STOLEN_256M (0x9 << 4)
95#define INTEL_GMCH_GMS_STOLEN_96M (0xa << 4)
96#define INTEL_GMCH_GMS_STOLEN_160M (0xb << 4)
97#define INTEL_GMCH_GMS_STOLEN_224M (0xc << 4)
98#define INTEL_GMCH_GMS_STOLEN_352M (0xd << 4)
99
85#define I915_IFPADDR 0x60 100#define I915_IFPADDR 0x60
86 101
87/* Intel 965G registers */ 102/* Intel 965G registers */
@@ -325,7 +340,7 @@ static int intel_i810_insert_entries(struct agp_memory *mem, off_t pg_start,
325out: 340out:
326 ret = 0; 341 ret = 0;
327out_err: 342out_err:
328 mem->is_flushed = 1; 343 mem->is_flushed = true;
329 return ret; 344 return ret;
330} 345}
331 346
@@ -418,9 +433,11 @@ static void intel_i810_free_by_type(struct agp_memory *curr)
418 if (curr->page_count == 4) 433 if (curr->page_count == 4)
419 i8xx_destroy_pages(gart_to_virt(curr->memory[0])); 434 i8xx_destroy_pages(gart_to_virt(curr->memory[0]));
420 else { 435 else {
421 agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]), 436 void *va = gart_to_virt(curr->memory[0]);
437
438 agp_bridge->driver->agp_destroy_page(va,
422 AGP_PAGE_DESTROY_UNMAP); 439 AGP_PAGE_DESTROY_UNMAP);
423 agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]), 440 agp_bridge->driver->agp_destroy_page(va,
424 AGP_PAGE_DESTROY_FREE); 441 AGP_PAGE_DESTROY_FREE);
425 } 442 }
426 agp_free_page_array(curr); 443 agp_free_page_array(curr);
@@ -504,6 +521,10 @@ static void intel_i830_init_gtt_entries(void)
504 size = 512; 521 size = 512;
505 } 522 }
506 size += 4; 523 size += 4;
524 } else if (IS_G4X) {
525 /* On 4 series hardware, GTT stolen is separate from graphics
526 * stolen, ignore it in stolen gtt entries counting */
527 size = 0;
507 } else { 528 } else {
508 /* On previous hardware, the GTT size was just what was 529 /* On previous hardware, the GTT size was just what was
509 * required to map the aperture. 530 * required to map the aperture.
@@ -552,30 +573,54 @@ static void intel_i830_init_gtt_entries(void)
552 break; 573 break;
553 case I915_GMCH_GMS_STOLEN_48M: 574 case I915_GMCH_GMS_STOLEN_48M:
554 /* Check it's really I915G */ 575 /* Check it's really I915G */
555 if (IS_I915 || IS_I965 || IS_G33) 576 if (IS_I915 || IS_I965 || IS_G33 || IS_G4X)
556 gtt_entries = MB(48) - KB(size); 577 gtt_entries = MB(48) - KB(size);
557 else 578 else
558 gtt_entries = 0; 579 gtt_entries = 0;
559 break; 580 break;
560 case I915_GMCH_GMS_STOLEN_64M: 581 case I915_GMCH_GMS_STOLEN_64M:
561 /* Check it's really I915G */ 582 /* Check it's really I915G */
562 if (IS_I915 || IS_I965 || IS_G33) 583 if (IS_I915 || IS_I965 || IS_G33 || IS_G4X)
563 gtt_entries = MB(64) - KB(size); 584 gtt_entries = MB(64) - KB(size);
564 else 585 else
565 gtt_entries = 0; 586 gtt_entries = 0;
566 break; 587 break;
567 case G33_GMCH_GMS_STOLEN_128M: 588 case G33_GMCH_GMS_STOLEN_128M:
568 if (IS_G33) 589 if (IS_G33 || IS_I965 || IS_G4X)
569 gtt_entries = MB(128) - KB(size); 590 gtt_entries = MB(128) - KB(size);
570 else 591 else
571 gtt_entries = 0; 592 gtt_entries = 0;
572 break; 593 break;
573 case G33_GMCH_GMS_STOLEN_256M: 594 case G33_GMCH_GMS_STOLEN_256M:
574 if (IS_G33) 595 if (IS_G33 || IS_I965 || IS_G4X)
575 gtt_entries = MB(256) - KB(size); 596 gtt_entries = MB(256) - KB(size);
576 else 597 else
577 gtt_entries = 0; 598 gtt_entries = 0;
578 break; 599 break;
600 case INTEL_GMCH_GMS_STOLEN_96M:
601 if (IS_I965 || IS_G4X)
602 gtt_entries = MB(96) - KB(size);
603 else
604 gtt_entries = 0;
605 break;
606 case INTEL_GMCH_GMS_STOLEN_160M:
607 if (IS_I965 || IS_G4X)
608 gtt_entries = MB(160) - KB(size);
609 else
610 gtt_entries = 0;
611 break;
612 case INTEL_GMCH_GMS_STOLEN_224M:
613 if (IS_I965 || IS_G4X)
614 gtt_entries = MB(224) - KB(size);
615 else
616 gtt_entries = 0;
617 break;
618 case INTEL_GMCH_GMS_STOLEN_352M:
619 if (IS_I965 || IS_G4X)
620 gtt_entries = MB(352) - KB(size);
621 else
622 gtt_entries = 0;
623 break;
579 default: 624 default:
580 gtt_entries = 0; 625 gtt_entries = 0;
581 break; 626 break;
@@ -793,7 +838,7 @@ static int intel_i830_insert_entries(struct agp_memory *mem, off_t pg_start,
793out: 838out:
794 ret = 0; 839 ret = 0;
795out_err: 840out_err:
796 mem->is_flushed = 1; 841 mem->is_flushed = true;
797 return ret; 842 return ret;
798} 843}
799 844
@@ -903,7 +948,7 @@ static void intel_i9xx_setup_flush(void)
903 intel_private.ifp_resource.flags = IORESOURCE_MEM; 948 intel_private.ifp_resource.flags = IORESOURCE_MEM;
904 949
905 /* Setup chipset flush for 915 */ 950 /* Setup chipset flush for 915 */
906 if (IS_I965 || IS_G33) { 951 if (IS_I965 || IS_G33 || IS_G4X) {
907 intel_i965_g33_setup_chipset_flush(); 952 intel_i965_g33_setup_chipset_flush();
908 } else { 953 } else {
909 intel_i915_setup_chipset_flush(); 954 intel_i915_setup_chipset_flush();
@@ -1020,7 +1065,7 @@ static int intel_i915_insert_entries(struct agp_memory *mem, off_t pg_start,
1020 out: 1065 out:
1021 ret = 0; 1066 ret = 0;
1022 out_err: 1067 out_err:
1023 mem->is_flushed = 1; 1068 mem->is_flushed = true;
1024 return ret; 1069 return ret;
1025} 1070}
1026 1071
@@ -1134,53 +1179,64 @@ static unsigned long intel_i965_mask_memory(struct agp_bridge_data *bridge,
1134 return addr | bridge->driver->masks[type].mask; 1179 return addr | bridge->driver->masks[type].mask;
1135} 1180}
1136 1181
1182static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size)
1183{
1184 switch (agp_bridge->dev->device) {
1185 case PCI_DEVICE_ID_INTEL_IGD_HB:
1186 case PCI_DEVICE_ID_INTEL_IGD_E_HB:
1187 case PCI_DEVICE_ID_INTEL_Q45_HB:
1188 case PCI_DEVICE_ID_INTEL_G45_HB:
1189 *gtt_offset = *gtt_size = MB(2);
1190 break;
1191 default:
1192 *gtt_offset = *gtt_size = KB(512);
1193 }
1194}
1195
1137/* The intel i965 automatically initializes the agp aperture during POST. 1196/* The intel i965 automatically initializes the agp aperture during POST.
1138 * Use the memory already set aside for in the GTT. 1197 * Use the memory already set aside for in the GTT.
1139 */ 1198 */
1140static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge) 1199static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge)
1141{ 1200{
1142 int page_order; 1201 int page_order;
1143 struct aper_size_info_fixed *size; 1202 struct aper_size_info_fixed *size;
1144 int num_entries; 1203 int num_entries;
1145 u32 temp; 1204 u32 temp;
1146 int gtt_offset, gtt_size; 1205 int gtt_offset, gtt_size;
1147 1206
1148 size = agp_bridge->current_size; 1207 size = agp_bridge->current_size;
1149 page_order = size->page_order; 1208 page_order = size->page_order;
1150 num_entries = size->num_entries; 1209 num_entries = size->num_entries;
1151 agp_bridge->gatt_table_real = NULL; 1210 agp_bridge->gatt_table_real = NULL;
1152 1211
1153 pci_read_config_dword(intel_private.pcidev, I915_MMADDR, &temp); 1212 pci_read_config_dword(intel_private.pcidev, I915_MMADDR, &temp);
1154 1213
1155 temp &= 0xfff00000; 1214 temp &= 0xfff00000;
1156 1215
1157 if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_HB) 1216 intel_i965_get_gtt_range(&gtt_offset, &gtt_size);
1158 gtt_offset = gtt_size = MB(2);
1159 else
1160 gtt_offset = gtt_size = KB(512);
1161 1217
1162 intel_private.gtt = ioremap((temp + gtt_offset) , gtt_size); 1218 intel_private.gtt = ioremap((temp + gtt_offset) , gtt_size);
1163 1219
1164 if (!intel_private.gtt) 1220 if (!intel_private.gtt)
1165 return -ENOMEM; 1221 return -ENOMEM;
1166 1222
1167 intel_private.registers = ioremap(temp, 128 * 4096); 1223 intel_private.registers = ioremap(temp, 128 * 4096);
1168 if (!intel_private.registers) { 1224 if (!intel_private.registers) {
1169 iounmap(intel_private.gtt); 1225 iounmap(intel_private.gtt);
1170 return -ENOMEM; 1226 return -ENOMEM;
1171 } 1227 }
1172 1228
1173 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 1229 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000;
1174 global_cache_flush(); /* FIXME: ? */ 1230 global_cache_flush(); /* FIXME: ? */
1175 1231
1176 /* we have to call this as early as possible after the MMIO base address is known */ 1232 /* we have to call this as early as possible after the MMIO base address is known */
1177 intel_i830_init_gtt_entries(); 1233 intel_i830_init_gtt_entries();
1178 1234
1179 agp_bridge->gatt_table = NULL; 1235 agp_bridge->gatt_table = NULL;
1180 1236
1181 agp_bridge->gatt_bus_addr = temp; 1237 agp_bridge->gatt_bus_addr = temp;
1182 1238
1183 return 0; 1239 return 0;
1184} 1240}
1185 1241
1186 1242
@@ -1656,7 +1712,7 @@ static const struct agp_bridge_driver intel_810_driver = {
1656 .aperture_sizes = intel_i810_sizes, 1712 .aperture_sizes = intel_i810_sizes,
1657 .size_type = FIXED_APER_SIZE, 1713 .size_type = FIXED_APER_SIZE,
1658 .num_aperture_sizes = 2, 1714 .num_aperture_sizes = 2,
1659 .needs_scratch_page = TRUE, 1715 .needs_scratch_page = true,
1660 .configure = intel_i810_configure, 1716 .configure = intel_i810_configure,
1661 .fetch_size = intel_i810_fetch_size, 1717 .fetch_size = intel_i810_fetch_size,
1662 .cleanup = intel_i810_cleanup, 1718 .cleanup = intel_i810_cleanup,
@@ -1697,7 +1753,7 @@ static const struct agp_bridge_driver intel_815_driver = {
1697 .free_by_type = agp_generic_free_by_type, 1753 .free_by_type = agp_generic_free_by_type,
1698 .agp_alloc_page = agp_generic_alloc_page, 1754 .agp_alloc_page = agp_generic_alloc_page,
1699 .agp_destroy_page = agp_generic_destroy_page, 1755 .agp_destroy_page = agp_generic_destroy_page,
1700 .agp_type_to_mask_type = agp_generic_type_to_mask_type, 1756 .agp_type_to_mask_type = agp_generic_type_to_mask_type,
1701}; 1757};
1702 1758
1703static const struct agp_bridge_driver intel_830_driver = { 1759static const struct agp_bridge_driver intel_830_driver = {
@@ -1705,7 +1761,7 @@ static const struct agp_bridge_driver intel_830_driver = {
1705 .aperture_sizes = intel_i830_sizes, 1761 .aperture_sizes = intel_i830_sizes,
1706 .size_type = FIXED_APER_SIZE, 1762 .size_type = FIXED_APER_SIZE,
1707 .num_aperture_sizes = 4, 1763 .num_aperture_sizes = 4,
1708 .needs_scratch_page = TRUE, 1764 .needs_scratch_page = true,
1709 .configure = intel_i830_configure, 1765 .configure = intel_i830_configure,
1710 .fetch_size = intel_i830_fetch_size, 1766 .fetch_size = intel_i830_fetch_size,
1711 .cleanup = intel_i830_cleanup, 1767 .cleanup = intel_i830_cleanup,
@@ -1876,7 +1932,7 @@ static const struct agp_bridge_driver intel_915_driver = {
1876 .aperture_sizes = intel_i830_sizes, 1932 .aperture_sizes = intel_i830_sizes,
1877 .size_type = FIXED_APER_SIZE, 1933 .size_type = FIXED_APER_SIZE,
1878 .num_aperture_sizes = 4, 1934 .num_aperture_sizes = 4,
1879 .needs_scratch_page = TRUE, 1935 .needs_scratch_page = true,
1880 .configure = intel_i915_configure, 1936 .configure = intel_i915_configure,
1881 .fetch_size = intel_i9xx_fetch_size, 1937 .fetch_size = intel_i9xx_fetch_size,
1882 .cleanup = intel_i915_cleanup, 1938 .cleanup = intel_i915_cleanup,
@@ -1898,28 +1954,28 @@ static const struct agp_bridge_driver intel_915_driver = {
1898}; 1954};
1899 1955
1900static const struct agp_bridge_driver intel_i965_driver = { 1956static const struct agp_bridge_driver intel_i965_driver = {
1901 .owner = THIS_MODULE, 1957 .owner = THIS_MODULE,
1902 .aperture_sizes = intel_i830_sizes, 1958 .aperture_sizes = intel_i830_sizes,
1903 .size_type = FIXED_APER_SIZE, 1959 .size_type = FIXED_APER_SIZE,
1904 .num_aperture_sizes = 4, 1960 .num_aperture_sizes = 4,
1905 .needs_scratch_page = TRUE, 1961 .needs_scratch_page = true,
1906 .configure = intel_i915_configure, 1962 .configure = intel_i915_configure,
1907 .fetch_size = intel_i9xx_fetch_size, 1963 .fetch_size = intel_i9xx_fetch_size,
1908 .cleanup = intel_i915_cleanup, 1964 .cleanup = intel_i915_cleanup,
1909 .tlb_flush = intel_i810_tlbflush, 1965 .tlb_flush = intel_i810_tlbflush,
1910 .mask_memory = intel_i965_mask_memory, 1966 .mask_memory = intel_i965_mask_memory,
1911 .masks = intel_i810_masks, 1967 .masks = intel_i810_masks,
1912 .agp_enable = intel_i810_agp_enable, 1968 .agp_enable = intel_i810_agp_enable,
1913 .cache_flush = global_cache_flush, 1969 .cache_flush = global_cache_flush,
1914 .create_gatt_table = intel_i965_create_gatt_table, 1970 .create_gatt_table = intel_i965_create_gatt_table,
1915 .free_gatt_table = intel_i830_free_gatt_table, 1971 .free_gatt_table = intel_i830_free_gatt_table,
1916 .insert_memory = intel_i915_insert_entries, 1972 .insert_memory = intel_i915_insert_entries,
1917 .remove_memory = intel_i915_remove_entries, 1973 .remove_memory = intel_i915_remove_entries,
1918 .alloc_by_type = intel_i830_alloc_by_type, 1974 .alloc_by_type = intel_i830_alloc_by_type,
1919 .free_by_type = intel_i810_free_by_type, 1975 .free_by_type = intel_i810_free_by_type,
1920 .agp_alloc_page = agp_generic_alloc_page, 1976 .agp_alloc_page = agp_generic_alloc_page,
1921 .agp_destroy_page = agp_generic_destroy_page, 1977 .agp_destroy_page = agp_generic_destroy_page,
1922 .agp_type_to_mask_type = intel_i830_type_to_mask_type, 1978 .agp_type_to_mask_type = intel_i830_type_to_mask_type,
1923 .chipset_flush = intel_i915_chipset_flush, 1979 .chipset_flush = intel_i915_chipset_flush,
1924}; 1980};
1925 1981
@@ -1948,28 +2004,28 @@ static const struct agp_bridge_driver intel_7505_driver = {
1948}; 2004};
1949 2005
1950static const struct agp_bridge_driver intel_g33_driver = { 2006static const struct agp_bridge_driver intel_g33_driver = {
1951 .owner = THIS_MODULE, 2007 .owner = THIS_MODULE,
1952 .aperture_sizes = intel_i830_sizes, 2008 .aperture_sizes = intel_i830_sizes,
1953 .size_type = FIXED_APER_SIZE, 2009 .size_type = FIXED_APER_SIZE,
1954 .num_aperture_sizes = 4, 2010 .num_aperture_sizes = 4,
1955 .needs_scratch_page = TRUE, 2011 .needs_scratch_page = true,
1956 .configure = intel_i915_configure, 2012 .configure = intel_i915_configure,
1957 .fetch_size = intel_i9xx_fetch_size, 2013 .fetch_size = intel_i9xx_fetch_size,
1958 .cleanup = intel_i915_cleanup, 2014 .cleanup = intel_i915_cleanup,
1959 .tlb_flush = intel_i810_tlbflush, 2015 .tlb_flush = intel_i810_tlbflush,
1960 .mask_memory = intel_i965_mask_memory, 2016 .mask_memory = intel_i965_mask_memory,
1961 .masks = intel_i810_masks, 2017 .masks = intel_i810_masks,
1962 .agp_enable = intel_i810_agp_enable, 2018 .agp_enable = intel_i810_agp_enable,
1963 .cache_flush = global_cache_flush, 2019 .cache_flush = global_cache_flush,
1964 .create_gatt_table = intel_i915_create_gatt_table, 2020 .create_gatt_table = intel_i915_create_gatt_table,
1965 .free_gatt_table = intel_i830_free_gatt_table, 2021 .free_gatt_table = intel_i830_free_gatt_table,
1966 .insert_memory = intel_i915_insert_entries, 2022 .insert_memory = intel_i915_insert_entries,
1967 .remove_memory = intel_i915_remove_entries, 2023 .remove_memory = intel_i915_remove_entries,
1968 .alloc_by_type = intel_i830_alloc_by_type, 2024 .alloc_by_type = intel_i830_alloc_by_type,
1969 .free_by_type = intel_i810_free_by_type, 2025 .free_by_type = intel_i810_free_by_type,
1970 .agp_alloc_page = agp_generic_alloc_page, 2026 .agp_alloc_page = agp_generic_alloc_page,
1971 .agp_destroy_page = agp_generic_destroy_page, 2027 .agp_destroy_page = agp_generic_destroy_page,
1972 .agp_type_to_mask_type = intel_i830_type_to_mask_type, 2028 .agp_type_to_mask_type = intel_i830_type_to_mask_type,
1973 .chipset_flush = intel_i915_chipset_flush, 2029 .chipset_flush = intel_i915_chipset_flush,
1974}; 2030};
1975 2031
@@ -2063,6 +2119,12 @@ static const struct intel_driver_description {
2063 NULL, &intel_g33_driver }, 2119 NULL, &intel_g33_driver },
2064 { PCI_DEVICE_ID_INTEL_IGD_HB, PCI_DEVICE_ID_INTEL_IGD_IG, 0, 2120 { PCI_DEVICE_ID_INTEL_IGD_HB, PCI_DEVICE_ID_INTEL_IGD_IG, 0,
2065 "Intel Integrated Graphics Device", NULL, &intel_i965_driver }, 2121 "Intel Integrated Graphics Device", NULL, &intel_i965_driver },
2122 { PCI_DEVICE_ID_INTEL_IGD_E_HB, PCI_DEVICE_ID_INTEL_IGD_E_IG, 0,
2123 "Intel Integrated Graphics Device", NULL, &intel_i965_driver },
2124 { PCI_DEVICE_ID_INTEL_Q45_HB, PCI_DEVICE_ID_INTEL_Q45_IG, 0,
2125 "Q45/Q43", NULL, &intel_i965_driver },
2126 { PCI_DEVICE_ID_INTEL_G45_HB, PCI_DEVICE_ID_INTEL_G45_IG, 0,
2127 "G45/G43", NULL, &intel_i965_driver },
2066 { 0, 0, 0, NULL, NULL, NULL } 2128 { 0, 0, 0, NULL, NULL, NULL }
2067}; 2129};
2068 2130
@@ -2254,6 +2316,9 @@ static struct pci_device_id agp_intel_pci_table[] = {
2254 ID(PCI_DEVICE_ID_INTEL_Q35_HB), 2316 ID(PCI_DEVICE_ID_INTEL_Q35_HB),
2255 ID(PCI_DEVICE_ID_INTEL_Q33_HB), 2317 ID(PCI_DEVICE_ID_INTEL_Q33_HB),
2256 ID(PCI_DEVICE_ID_INTEL_IGD_HB), 2318 ID(PCI_DEVICE_ID_INTEL_IGD_HB),
2319 ID(PCI_DEVICE_ID_INTEL_IGD_E_HB),
2320 ID(PCI_DEVICE_ID_INTEL_Q45_HB),
2321 ID(PCI_DEVICE_ID_INTEL_G45_HB),
2257 { } 2322 { }
2258}; 2323};
2259 2324
diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c
index 225ed2a53d45..eaceb61ba2dc 100644
--- a/drivers/char/agp/nvidia-agp.c
+++ b/drivers/char/agp/nvidia-agp.c
@@ -214,9 +214,9 @@ static int nvidia_insert_memory(struct agp_memory *mem, off_t pg_start, int type
214 return -EBUSY; 214 return -EBUSY;
215 } 215 }
216 216
217 if (mem->is_flushed == FALSE) { 217 if (!mem->is_flushed) {
218 global_cache_flush(); 218 global_cache_flush();
219 mem->is_flushed = TRUE; 219 mem->is_flushed = true;
220 } 220 }
221 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 221 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
222 writel(agp_bridge->driver->mask_memory(agp_bridge, 222 writel(agp_bridge->driver->mask_memory(agp_bridge,
diff --git a/drivers/char/agp/parisc-agp.c b/drivers/char/agp/parisc-agp.c
index 2939e3570f9d..8c42dcc5958c 100644
--- a/drivers/char/agp/parisc-agp.c
+++ b/drivers/char/agp/parisc-agp.c
@@ -141,9 +141,9 @@ parisc_agp_insert_memory(struct agp_memory *mem, off_t pg_start, int type)
141 j++; 141 j++;
142 } 142 }
143 143
144 if (mem->is_flushed == FALSE) { 144 if (!mem->is_flushed) {
145 global_cache_flush(); 145 global_cache_flush();
146 mem->is_flushed = TRUE; 146 mem->is_flushed = true;
147 } 147 }
148 148
149 for (i = 0, j = io_pg_start; i < mem->page_count; i++) { 149 for (i = 0, j = io_pg_start; i < mem->page_count; i++) {
@@ -226,7 +226,7 @@ static const struct agp_bridge_driver parisc_agp_driver = {
226 .agp_alloc_page = agp_generic_alloc_page, 226 .agp_alloc_page = agp_generic_alloc_page,
227 .agp_destroy_page = agp_generic_destroy_page, 227 .agp_destroy_page = agp_generic_destroy_page,
228 .agp_type_to_mask_type = agp_generic_type_to_mask_type, 228 .agp_type_to_mask_type = agp_generic_type_to_mask_type,
229 .cant_use_aperture = 1, 229 .cant_use_aperture = true,
230}; 230};
231 231
232static int __init 232static int __init
diff --git a/drivers/char/agp/sgi-agp.c b/drivers/char/agp/sgi-agp.c
index 98cf8abb3e57..b972d83bb1b2 100644
--- a/drivers/char/agp/sgi-agp.c
+++ b/drivers/char/agp/sgi-agp.c
@@ -182,9 +182,9 @@ static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start,
182 j++; 182 j++;
183 } 183 }
184 184
185 if (mem->is_flushed == FALSE) { 185 if (!mem->is_flushed) {
186 bridge->driver->cache_flush(); 186 bridge->driver->cache_flush();
187 mem->is_flushed = TRUE; 187 mem->is_flushed = true;
188 } 188 }
189 189
190 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 190 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
@@ -264,8 +264,8 @@ const struct agp_bridge_driver sgi_tioca_driver = {
264 .agp_alloc_page = sgi_tioca_alloc_page, 264 .agp_alloc_page = sgi_tioca_alloc_page,
265 .agp_destroy_page = agp_generic_destroy_page, 265 .agp_destroy_page = agp_generic_destroy_page,
266 .agp_type_to_mask_type = agp_generic_type_to_mask_type, 266 .agp_type_to_mask_type = agp_generic_type_to_mask_type,
267 .cant_use_aperture = 1, 267 .cant_use_aperture = true,
268 .needs_scratch_page = 0, 268 .needs_scratch_page = false,
269 .num_aperture_sizes = 1, 269 .num_aperture_sizes = 1,
270}; 270};
271 271
diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c
index e08934e58f32..0e054c134490 100644
--- a/drivers/char/agp/sworks-agp.c
+++ b/drivers/char/agp/sworks-agp.c
@@ -339,9 +339,9 @@ static int serverworks_insert_memory(struct agp_memory *mem,
339 j++; 339 j++;
340 } 340 }
341 341
342 if (mem->is_flushed == FALSE) { 342 if (!mem->is_flushed) {
343 global_cache_flush(); 343 global_cache_flush();
344 mem->is_flushed = TRUE; 344 mem->is_flushed = true;
345 } 345 }
346 346
347 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 347 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
@@ -412,7 +412,7 @@ static void serverworks_agp_enable(struct agp_bridge_data *bridge, u32 mode)
412 bridge->capndx + PCI_AGP_COMMAND, 412 bridge->capndx + PCI_AGP_COMMAND,
413 command); 413 command);
414 414
415 agp_device_command(command, 0); 415 agp_device_command(command, false);
416} 416}
417 417
418static const struct agp_bridge_driver sworks_driver = { 418static const struct agp_bridge_driver sworks_driver = {
diff --git a/drivers/char/agp/uninorth-agp.c b/drivers/char/agp/uninorth-agp.c
index 42c0a600b1ac..d2fa3cfca02a 100644
--- a/drivers/char/agp/uninorth-agp.c
+++ b/drivers/char/agp/uninorth-agp.c
@@ -281,10 +281,10 @@ static void uninorth_agp_enable(struct agp_bridge_data *bridge, u32 mode)
281 281
282 if (uninorth_rev >= 0x30) { 282 if (uninorth_rev >= 0x30) {
283 /* This is an AGP V3 */ 283 /* This is an AGP V3 */
284 agp_device_command(command, (status & AGPSTAT_MODE_3_0)); 284 agp_device_command(command, (status & AGPSTAT_MODE_3_0) != 0);
285 } else { 285 } else {
286 /* AGP V2 */ 286 /* AGP V2 */
287 agp_device_command(command, 0); 287 agp_device_command(command, false);
288 } 288 }
289 289
290 uninorth_tlbflush(NULL); 290 uninorth_tlbflush(NULL);
@@ -511,7 +511,7 @@ const struct agp_bridge_driver uninorth_agp_driver = {
511 .agp_alloc_page = agp_generic_alloc_page, 511 .agp_alloc_page = agp_generic_alloc_page,
512 .agp_destroy_page = agp_generic_destroy_page, 512 .agp_destroy_page = agp_generic_destroy_page,
513 .agp_type_to_mask_type = agp_generic_type_to_mask_type, 513 .agp_type_to_mask_type = agp_generic_type_to_mask_type,
514 .cant_use_aperture = 1, 514 .cant_use_aperture = true,
515}; 515};
516 516
517const struct agp_bridge_driver u3_agp_driver = { 517const struct agp_bridge_driver u3_agp_driver = {
@@ -536,8 +536,8 @@ const struct agp_bridge_driver u3_agp_driver = {
536 .agp_alloc_page = agp_generic_alloc_page, 536 .agp_alloc_page = agp_generic_alloc_page,
537 .agp_destroy_page = agp_generic_destroy_page, 537 .agp_destroy_page = agp_generic_destroy_page,
538 .agp_type_to_mask_type = agp_generic_type_to_mask_type, 538 .agp_type_to_mask_type = agp_generic_type_to_mask_type,
539 .cant_use_aperture = 1, 539 .cant_use_aperture = true,
540 .needs_scratch_page = 1, 540 .needs_scratch_page = true,
541}; 541};
542 542
543static struct agp_device_ids uninorth_agp_device_ids[] __devinitdata = { 543static struct agp_device_ids uninorth_agp_device_ids[] __devinitdata = {
diff --git a/drivers/char/agp/via-agp.c b/drivers/char/agp/via-agp.c
index 0ecc54d327bc..7b36476dff41 100644
--- a/drivers/char/agp/via-agp.c
+++ b/drivers/char/agp/via-agp.c
@@ -389,11 +389,20 @@ static struct agp_device_ids via_agp_device_ids[] __devinitdata =
389 .device_id = PCI_DEVICE_ID_VIA_VT3324, 389 .device_id = PCI_DEVICE_ID_VIA_VT3324,
390 .chipset_name = "CX700", 390 .chipset_name = "CX700",
391 }, 391 },
392 /* VT3336 */ 392 /* VT3336 - this is a chipset for AMD Athlon/K8 CPU. Due to K8's unique
393 * architecture, the AGP resource and behavior are different from
394 * the traditional AGP which resides only in chipset. AGP is used
395 * by 3D driver which wasn't available for the VT3336 and VT3364
396 * generation until now. Unfortunately, by testing, VT3364 works
397 * but VT3336 doesn't. - explaination from via, just leave this as
398 * as a placeholder to avoid future patches adding it back in.
399 */
400#if 0
393 { 401 {
394 .device_id = PCI_DEVICE_ID_VIA_VT3336, 402 .device_id = PCI_DEVICE_ID_VIA_VT3336,
395 .chipset_name = "VT3336", 403 .chipset_name = "VT3336",
396 }, 404 },
405#endif
397 /* P4M890 */ 406 /* P4M890 */
398 { 407 {
399 .device_id = PCI_DEVICE_ID_VIA_P4M890, 408 .device_id = PCI_DEVICE_ID_VIA_P4M890,
@@ -546,8 +555,8 @@ static const struct pci_device_id agp_via_pci_table[] = {
546 ID(PCI_DEVICE_ID_VIA_3296_0), 555 ID(PCI_DEVICE_ID_VIA_3296_0),
547 ID(PCI_DEVICE_ID_VIA_P4M800CE), 556 ID(PCI_DEVICE_ID_VIA_P4M800CE),
548 ID(PCI_DEVICE_ID_VIA_VT3324), 557 ID(PCI_DEVICE_ID_VIA_VT3324),
549 ID(PCI_DEVICE_ID_VIA_VT3336),
550 ID(PCI_DEVICE_ID_VIA_P4M890), 558 ID(PCI_DEVICE_ID_VIA_P4M890),
559 ID(PCI_DEVICE_ID_VIA_VT3364),
551 { } 560 { }
552}; 561};
553 562
diff --git a/drivers/char/drm/ati_pcigart.c b/drivers/char/drm/ati_pcigart.c
index b710426bab3e..c533d0c9ec61 100644
--- a/drivers/char/drm/ati_pcigart.c
+++ b/drivers/char/drm/ati_pcigart.c
@@ -76,7 +76,7 @@ int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info
76 for (i = 0; i < pages; i++) { 76 for (i = 0; i < pages; i++) {
77 if (!entry->busaddr[i]) 77 if (!entry->busaddr[i])
78 break; 78 break;
79 pci_unmap_single(dev->pdev, entry->busaddr[i], 79 pci_unmap_page(dev->pdev, entry->busaddr[i],
80 PAGE_SIZE, PCI_DMA_TODEVICE); 80 PAGE_SIZE, PCI_DMA_TODEVICE);
81 } 81 }
82 82
@@ -137,10 +137,8 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
137 137
138 for (i = 0; i < pages; i++) { 138 for (i = 0; i < pages; i++) {
139 /* we need to support large memory configurations */ 139 /* we need to support large memory configurations */
140 entry->busaddr[i] = pci_map_single(dev->pdev, 140 entry->busaddr[i] = pci_map_page(dev->pdev, entry->pagelist[i],
141 page_address(entry-> 141 0, PAGE_SIZE, PCI_DMA_TODEVICE);
142 pagelist[i]),
143 PAGE_SIZE, PCI_DMA_TODEVICE);
144 if (entry->busaddr[i] == 0) { 142 if (entry->busaddr[i] == 0) {
145 DRM_ERROR("unable to map PCIGART pages!\n"); 143 DRM_ERROR("unable to map PCIGART pages!\n");
146 drm_ati_pcigart_cleanup(dev, gart_info); 144 drm_ati_pcigart_cleanup(dev, gart_info);
diff --git a/drivers/char/drm/drm.h b/drivers/char/drm/drm.h
index 3a05c6d5ebe1..38d3c6b8276a 100644
--- a/drivers/char/drm/drm.h
+++ b/drivers/char/drm/drm.h
@@ -628,7 +628,7 @@ struct drm_set_version {
628#define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, struct drm_agp_binding) 628#define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, struct drm_agp_binding)
629#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, struct drm_agp_binding) 629#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, struct drm_agp_binding)
630 630
631#define DRM_IOCTL_SG_ALLOC DRM_IOW( 0x38, struct drm_scatter_gather) 631#define DRM_IOCTL_SG_ALLOC DRM_IOWR(0x38, struct drm_scatter_gather)
632#define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, struct drm_scatter_gather) 632#define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, struct drm_scatter_gather)
633 633
634#define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank) 634#define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank)
diff --git a/drivers/char/drm/drm_drv.c b/drivers/char/drm/drm_drv.c
index fc54140551a7..564138714bb5 100644
--- a/drivers/char/drm/drm_drv.c
+++ b/drivers/char/drm/drm_drv.c
@@ -470,17 +470,18 @@ int drm_ioctl(struct inode *inode, struct file *filp,
470 if ((nr >= DRM_COMMAND_BASE) && (nr < DRM_COMMAND_END) && 470 if ((nr >= DRM_COMMAND_BASE) && (nr < DRM_COMMAND_END) &&
471 (nr < DRM_COMMAND_BASE + dev->driver->num_ioctls)) 471 (nr < DRM_COMMAND_BASE + dev->driver->num_ioctls))
472 ioctl = &dev->driver->ioctls[nr - DRM_COMMAND_BASE]; 472 ioctl = &dev->driver->ioctls[nr - DRM_COMMAND_BASE];
473 else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) 473 else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) {
474 ioctl = &drm_ioctls[nr]; 474 ioctl = &drm_ioctls[nr];
475 else 475 cmd = ioctl->cmd;
476 } else
476 goto err_i1; 477 goto err_i1;
477 478
479 /* Do not trust userspace, use our own definition */
478 func = ioctl->func; 480 func = ioctl->func;
479 /* is there a local override? */ 481 /* is there a local override? */
480 if ((nr == DRM_IOCTL_NR(DRM_IOCTL_DMA)) && dev->driver->dma_ioctl) 482 if ((nr == DRM_IOCTL_NR(DRM_IOCTL_DMA)) && dev->driver->dma_ioctl)
481 func = dev->driver->dma_ioctl; 483 func = dev->driver->dma_ioctl;
482 484
483
484 if (!func) { 485 if (!func) {
485 DRM_DEBUG("no function\n"); 486 DRM_DEBUG("no function\n");
486 retcode = -EINVAL; 487 retcode = -EINVAL;
diff --git a/drivers/char/drm/drm_pciids.h b/drivers/char/drm/drm_pciids.h
index a6a499f97e22..135bd19499fc 100644
--- a/drivers/char/drm/drm_pciids.h
+++ b/drivers/char/drm/drm_pciids.h
@@ -103,20 +103,18 @@
103 {0x1002, 0x5653, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV410|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 103 {0x1002, 0x5653, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV410|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
104 {0x1002, 0x5834, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP}, \ 104 {0x1002, 0x5834, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP}, \
105 {0x1002, 0x5835, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_IS_MOBILITY}, \ 105 {0x1002, 0x5835, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_IS_MOBILITY}, \
106 {0x1002, 0x5954, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \ 106 {0x1002, 0x5954, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS480|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
107 {0x1002, 0x5955, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \ 107 {0x1002, 0x5955, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS480|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
108 {0x1002, 0x5974, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \ 108 {0x1002, 0x5974, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS480|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
109 {0x1002, 0x5975, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \ 109 {0x1002, 0x5975, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS480|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
110 {0x1002, 0x5960, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ 110 {0x1002, 0x5960, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
111 {0x1002, 0x5961, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ 111 {0x1002, 0x5961, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
112 {0x1002, 0x5962, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ 112 {0x1002, 0x5962, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
113 {0x1002, 0x5964, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ 113 {0x1002, 0x5964, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
114 {0x1002, 0x5965, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \ 114 {0x1002, 0x5965, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
115 {0x1002, 0x5969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100}, \ 115 {0x1002, 0x5969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100}, \
116 {0x1002, 0x5a41, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \ 116 {0x1002, 0x5a61, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS480|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
117 {0x1002, 0x5a42, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \ 117 {0x1002, 0x5a62, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS480|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
118 {0x1002, 0x5a61, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
119 {0x1002, 0x5a62, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
120 {0x1002, 0x5b60, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \ 118 {0x1002, 0x5b60, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \
121 {0x1002, 0x5b62, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \ 119 {0x1002, 0x5b62, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \
122 {0x1002, 0x5b63, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \ 120 {0x1002, 0x5b63, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \
@@ -411,4 +409,7 @@
411 {0x8086, 0x2a02, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 409 {0x8086, 0x2a02, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
412 {0x8086, 0x2a12, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 410 {0x8086, 0x2a12, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
413 {0x8086, 0x2a42, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 411 {0x8086, 0x2a42, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
412 {0x8086, 0x2e02, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
413 {0x8086, 0x2e12, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
414 {0x8086, 0x2e22, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
414 {0, 0, 0} 415 {0, 0, 0}
diff --git a/drivers/char/drm/i915_drv.c b/drivers/char/drm/i915_drv.c
index e8f3d682e3b1..93aed1c38bd2 100644
--- a/drivers/char/drm/i915_drv.c
+++ b/drivers/char/drm/i915_drv.c
@@ -389,6 +389,7 @@ static int i915_resume(struct drm_device *dev)
389 pci_restore_state(dev->pdev); 389 pci_restore_state(dev->pdev);
390 if (pci_enable_device(dev->pdev)) 390 if (pci_enable_device(dev->pdev))
391 return -1; 391 return -1;
392 pci_set_master(dev->pdev);
392 393
393 pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB); 394 pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB);
394 395
diff --git a/drivers/char/drm/i915_drv.h b/drivers/char/drm/i915_drv.h
index 1b20f7c0639c..d7326d92a237 100644
--- a/drivers/char/drm/i915_drv.h
+++ b/drivers/char/drm/i915_drv.h
@@ -1112,12 +1112,19 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
1112 (dev)->pci_device == 0x29A2 || \ 1112 (dev)->pci_device == 0x29A2 || \
1113 (dev)->pci_device == 0x2A02 || \ 1113 (dev)->pci_device == 0x2A02 || \
1114 (dev)->pci_device == 0x2A12 || \ 1114 (dev)->pci_device == 0x2A12 || \
1115 (dev)->pci_device == 0x2A42) 1115 (dev)->pci_device == 0x2A42 || \
1116 (dev)->pci_device == 0x2E02 || \
1117 (dev)->pci_device == 0x2E12 || \
1118 (dev)->pci_device == 0x2E22)
1116 1119
1117#define IS_I965GM(dev) ((dev)->pci_device == 0x2A02) 1120#define IS_I965GM(dev) ((dev)->pci_device == 0x2A02)
1118 1121
1119#define IS_IGD_GM(dev) ((dev)->pci_device == 0x2A42) 1122#define IS_IGD_GM(dev) ((dev)->pci_device == 0x2A42)
1120 1123
1124#define IS_G4X(dev) ((dev)->pci_device == 0x2E02 || \
1125 (dev)->pci_device == 0x2E12 || \
1126 (dev)->pci_device == 0x2E22)
1127
1121#define IS_G33(dev) ((dev)->pci_device == 0x29C2 || \ 1128#define IS_G33(dev) ((dev)->pci_device == 0x29C2 || \
1122 (dev)->pci_device == 0x29B2 || \ 1129 (dev)->pci_device == 0x29B2 || \
1123 (dev)->pci_device == 0x29D2) 1130 (dev)->pci_device == 0x29D2)
@@ -1128,7 +1135,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
1128#define IS_MOBILE(dev) (IS_I830(dev) || IS_I85X(dev) || IS_I915GM(dev) || \ 1135#define IS_MOBILE(dev) (IS_I830(dev) || IS_I85X(dev) || IS_I915GM(dev) || \
1129 IS_I945GM(dev) || IS_I965GM(dev) || IS_IGD_GM(dev)) 1136 IS_I945GM(dev) || IS_I965GM(dev) || IS_IGD_GM(dev))
1130 1137
1131#define I915_NEED_GFX_HWS(dev) (IS_G33(dev) || IS_IGD_GM(dev)) 1138#define I915_NEED_GFX_HWS(dev) (IS_G33(dev) || IS_IGD_GM(dev) || IS_G4X(dev))
1132 1139
1133#define PRIMARY_RINGBUFFER_SIZE (128*1024) 1140#define PRIMARY_RINGBUFFER_SIZE (128*1024)
1134 1141
diff --git a/drivers/char/drm/i915_irq.c b/drivers/char/drm/i915_irq.c
index f7f16e7a8bf3..df036118b8b1 100644
--- a/drivers/char/drm/i915_irq.c
+++ b/drivers/char/drm/i915_irq.c
@@ -62,11 +62,11 @@ static void i915_vblank_tasklet(struct drm_device *dev)
62 u32 ropcpp = (0xcc << 16) | ((cpp - 1) << 24); 62 u32 ropcpp = (0xcc << 16) | ((cpp - 1) << 24);
63 RING_LOCALS; 63 RING_LOCALS;
64 64
65 if (sarea_priv->front_tiled) { 65 if (IS_I965G(dev) && sarea_priv->front_tiled) {
66 cmd |= XY_SRC_COPY_BLT_DST_TILED; 66 cmd |= XY_SRC_COPY_BLT_DST_TILED;
67 dst_pitch >>= 2; 67 dst_pitch >>= 2;
68 } 68 }
69 if (sarea_priv->back_tiled) { 69 if (IS_I965G(dev) && sarea_priv->back_tiled) {
70 cmd |= XY_SRC_COPY_BLT_SRC_TILED; 70 cmd |= XY_SRC_COPY_BLT_SRC_TILED;
71 src_pitch >>= 2; 71 src_pitch >>= 2;
72 } 72 }
diff --git a/drivers/char/drm/r300_cmdbuf.c b/drivers/char/drm/r300_cmdbuf.c
index f535812e4057..702df45320f7 100644
--- a/drivers/char/drm/r300_cmdbuf.c
+++ b/drivers/char/drm/r300_cmdbuf.c
@@ -189,18 +189,12 @@ void r300_init_reg_flags(struct drm_device *dev)
189 ADD_RANGE(R300_RE_CULL_CNTL, 1); 189 ADD_RANGE(R300_RE_CULL_CNTL, 1);
190 ADD_RANGE(0x42C0, 2); 190 ADD_RANGE(0x42C0, 2);
191 ADD_RANGE(R300_RS_CNTL_0, 2); 191 ADD_RANGE(R300_RS_CNTL_0, 2);
192 ADD_RANGE(R300_RS_INTERP_0, 8); 192
193 ADD_RANGE(R300_RS_ROUTE_0, 8); 193 ADD_RANGE(R300_SC_HYPERZ, 2);
194 ADD_RANGE(0x43A4, 2);
195 ADD_RANGE(0x43E8, 1); 194 ADD_RANGE(0x43E8, 1);
196 ADD_RANGE(R300_PFS_CNTL_0, 3); 195
197 ADD_RANGE(R300_PFS_NODE_0, 4);
198 ADD_RANGE(R300_PFS_TEXI_0, 64);
199 ADD_RANGE(0x46A4, 5); 196 ADD_RANGE(0x46A4, 5);
200 ADD_RANGE(R300_PFS_INSTR0_0, 64); 197
201 ADD_RANGE(R300_PFS_INSTR1_0, 64);
202 ADD_RANGE(R300_PFS_INSTR2_0, 64);
203 ADD_RANGE(R300_PFS_INSTR3_0, 64);
204 ADD_RANGE(R300_RE_FOG_STATE, 1); 198 ADD_RANGE(R300_RE_FOG_STATE, 1);
205 ADD_RANGE(R300_FOG_COLOR_R, 3); 199 ADD_RANGE(R300_FOG_COLOR_R, 3);
206 ADD_RANGE(R300_PP_ALPHA_TEST, 2); 200 ADD_RANGE(R300_PP_ALPHA_TEST, 2);
@@ -215,14 +209,12 @@ void r300_init_reg_flags(struct drm_device *dev)
215 ADD_RANGE(0x4E50, 9); 209 ADD_RANGE(0x4E50, 9);
216 ADD_RANGE(0x4E88, 1); 210 ADD_RANGE(0x4E88, 1);
217 ADD_RANGE(0x4EA0, 2); 211 ADD_RANGE(0x4EA0, 2);
218 ADD_RANGE(R300_RB3D_ZSTENCIL_CNTL_0, 3); 212 ADD_RANGE(R300_ZB_CNTL, 3);
219 ADD_RANGE(R300_RB3D_ZSTENCIL_FORMAT, 4); 213 ADD_RANGE(R300_ZB_FORMAT, 4);
220 ADD_RANGE_MARK(R300_RB3D_DEPTHOFFSET, 1, MARK_CHECK_OFFSET); /* check offset */ 214 ADD_RANGE_MARK(R300_ZB_DEPTHOFFSET, 1, MARK_CHECK_OFFSET); /* check offset */
221 ADD_RANGE(R300_RB3D_DEPTHPITCH, 1); 215 ADD_RANGE(R300_ZB_DEPTHPITCH, 1);
222 ADD_RANGE(0x4F28, 1); 216 ADD_RANGE(R300_ZB_DEPTHCLEARVALUE, 1);
223 ADD_RANGE(0x4F30, 2); 217 ADD_RANGE(R300_ZB_ZMASK_OFFSET, 13);
224 ADD_RANGE(0x4F44, 1);
225 ADD_RANGE(0x4F54, 1);
226 218
227 ADD_RANGE(R300_TX_FILTER_0, 16); 219 ADD_RANGE(R300_TX_FILTER_0, 16);
228 ADD_RANGE(R300_TX_FILTER1_0, 16); 220 ADD_RANGE(R300_TX_FILTER1_0, 16);
@@ -235,13 +227,32 @@ void r300_init_reg_flags(struct drm_device *dev)
235 ADD_RANGE(R300_TX_BORDER_COLOR_0, 16); 227 ADD_RANGE(R300_TX_BORDER_COLOR_0, 16);
236 228
237 /* Sporadic registers used as primitives are emitted */ 229 /* Sporadic registers used as primitives are emitted */
238 ADD_RANGE(R300_RB3D_ZCACHE_CTLSTAT, 1); 230 ADD_RANGE(R300_ZB_ZCACHE_CTLSTAT, 1);
239 ADD_RANGE(R300_RB3D_DSTCACHE_CTLSTAT, 1); 231 ADD_RANGE(R300_RB3D_DSTCACHE_CTLSTAT, 1);
240 ADD_RANGE(R300_VAP_INPUT_ROUTE_0_0, 8); 232 ADD_RANGE(R300_VAP_INPUT_ROUTE_0_0, 8);
241 ADD_RANGE(R300_VAP_INPUT_ROUTE_1_0, 8); 233 ADD_RANGE(R300_VAP_INPUT_ROUTE_1_0, 8);
242 234
243 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV515) { 235 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV515) {
244 ADD_RANGE(0x4074, 16); 236 ADD_RANGE(R500_VAP_INDEX_OFFSET, 1);
237 ADD_RANGE(R500_US_CONFIG, 2);
238 ADD_RANGE(R500_US_CODE_ADDR, 3);
239 ADD_RANGE(R500_US_FC_CTRL, 1);
240 ADD_RANGE(R500_RS_IP_0, 16);
241 ADD_RANGE(R500_RS_INST_0, 16);
242 ADD_RANGE(R500_RB3D_COLOR_CLEAR_VALUE_AR, 2);
243 ADD_RANGE(R500_RB3D_CONSTANT_COLOR_AR, 2);
244 ADD_RANGE(R500_ZB_FIFO_SIZE, 2);
245 } else {
246 ADD_RANGE(R300_PFS_CNTL_0, 3);
247 ADD_RANGE(R300_PFS_NODE_0, 4);
248 ADD_RANGE(R300_PFS_TEXI_0, 64);
249 ADD_RANGE(R300_PFS_INSTR0_0, 64);
250 ADD_RANGE(R300_PFS_INSTR1_0, 64);
251 ADD_RANGE(R300_PFS_INSTR2_0, 64);
252 ADD_RANGE(R300_PFS_INSTR3_0, 64);
253 ADD_RANGE(R300_RS_INTERP_0, 8);
254 ADD_RANGE(R300_RS_ROUTE_0, 8);
255
245 } 256 }
246} 257}
247 258
@@ -707,8 +718,9 @@ static __inline__ void r300_pacify(drm_radeon_private_t *dev_priv)
707 BEGIN_RING(6); 718 BEGIN_RING(6);
708 OUT_RING(CP_PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); 719 OUT_RING(CP_PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
709 OUT_RING(R300_RB3D_DSTCACHE_UNKNOWN_0A); 720 OUT_RING(R300_RB3D_DSTCACHE_UNKNOWN_0A);
710 OUT_RING(CP_PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0)); 721 OUT_RING(CP_PACKET0(R300_ZB_ZCACHE_CTLSTAT, 0));
711 OUT_RING(R300_RB3D_ZCACHE_UNKNOWN_03); 722 OUT_RING(R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE|
723 R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE);
712 OUT_RING(CP_PACKET3(RADEON_CP_NOP, 0)); 724 OUT_RING(CP_PACKET3(RADEON_CP_NOP, 0));
713 OUT_RING(0x0); 725 OUT_RING(0x0);
714 ADVANCE_RING(); 726 ADVANCE_RING();
@@ -829,6 +841,54 @@ static int r300_scratch(drm_radeon_private_t *dev_priv,
829} 841}
830 842
831/** 843/**
844 * Uploads user-supplied vertex program instructions or parameters onto
845 * the graphics card.
846 * Called by r300_do_cp_cmdbuf.
847 */
848static inline int r300_emit_r500fp(drm_radeon_private_t *dev_priv,
849 drm_radeon_kcmd_buffer_t *cmdbuf,
850 drm_r300_cmd_header_t header)
851{
852 int sz;
853 int addr;
854 int type;
855 int clamp;
856 int stride;
857 RING_LOCALS;
858
859 sz = header.r500fp.count;
860 /* address is 9 bits 0 - 8, bit 1 of flags is part of address */
861 addr = ((header.r500fp.adrhi_flags & 1) << 8) | header.r500fp.adrlo;
862
863 type = !!(header.r500fp.adrhi_flags & R500FP_CONSTANT_TYPE);
864 clamp = !!(header.r500fp.adrhi_flags & R500FP_CONSTANT_CLAMP);
865
866 addr |= (type << 16);
867 addr |= (clamp << 17);
868
869 stride = type ? 4 : 6;
870
871 DRM_DEBUG("r500fp %d %d type: %d\n", sz, addr, type);
872 if (!sz)
873 return 0;
874 if (sz * stride * 4 > cmdbuf->bufsz)
875 return -EINVAL;
876
877 BEGIN_RING(3 + sz * stride);
878 OUT_RING_REG(R500_GA_US_VECTOR_INDEX, addr);
879 OUT_RING(CP_PACKET0_TABLE(R500_GA_US_VECTOR_DATA, sz * stride - 1));
880 OUT_RING_TABLE((int *)cmdbuf->buf, sz * stride);
881
882 ADVANCE_RING();
883
884 cmdbuf->buf += sz * stride * 4;
885 cmdbuf->bufsz -= sz * stride * 4;
886
887 return 0;
888}
889
890
891/**
832 * Parses and validates a user-supplied command buffer and emits appropriate 892 * Parses and validates a user-supplied command buffer and emits appropriate
833 * commands on the DMA ring buffer. 893 * commands on the DMA ring buffer.
834 * Called by the ioctl handler function radeon_cp_cmdbuf. 894 * Called by the ioctl handler function radeon_cp_cmdbuf.
@@ -963,6 +1023,19 @@ int r300_do_cp_cmdbuf(struct drm_device *dev,
963 } 1023 }
964 break; 1024 break;
965 1025
1026 case R300_CMD_R500FP:
1027 if ((dev_priv->flags & RADEON_FAMILY_MASK) < CHIP_RV515) {
1028 DRM_ERROR("Calling r500 command on r300 card\n");
1029 ret = -EINVAL;
1030 goto cleanup;
1031 }
1032 DRM_DEBUG("R300_CMD_R500FP\n");
1033 ret = r300_emit_r500fp(dev_priv, cmdbuf, header);
1034 if (ret) {
1035 DRM_ERROR("r300_emit_r500fp failed\n");
1036 goto cleanup;
1037 }
1038 break;
966 default: 1039 default:
967 DRM_ERROR("bad cmd_type %i at %p\n", 1040 DRM_ERROR("bad cmd_type %i at %p\n",
968 header.header.cmd_type, 1041 header.header.cmd_type,
diff --git a/drivers/char/drm/r300_reg.h b/drivers/char/drm/r300_reg.h
index 8f664af9c4a4..a6802f26afc4 100644
--- a/drivers/char/drm/r300_reg.h
+++ b/drivers/char/drm/r300_reg.h
@@ -702,6 +702,27 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
702# define R300_RS_ROUTE_1_UNKNOWN11 (1 << 11) 702# define R300_RS_ROUTE_1_UNKNOWN11 (1 << 11)
703/* END: Rasterization / Interpolators - many guesses */ 703/* END: Rasterization / Interpolators - many guesses */
704 704
705/* Hierarchical Z Enable */
706#define R300_SC_HYPERZ 0x43a4
707# define R300_SC_HYPERZ_DISABLE (0 << 0)
708# define R300_SC_HYPERZ_ENABLE (1 << 0)
709# define R300_SC_HYPERZ_MIN (0 << 1)
710# define R300_SC_HYPERZ_MAX (1 << 1)
711# define R300_SC_HYPERZ_ADJ_256 (0 << 2)
712# define R300_SC_HYPERZ_ADJ_128 (1 << 2)
713# define R300_SC_HYPERZ_ADJ_64 (2 << 2)
714# define R300_SC_HYPERZ_ADJ_32 (3 << 2)
715# define R300_SC_HYPERZ_ADJ_16 (4 << 2)
716# define R300_SC_HYPERZ_ADJ_8 (5 << 2)
717# define R300_SC_HYPERZ_ADJ_4 (6 << 2)
718# define R300_SC_HYPERZ_ADJ_2 (7 << 2)
719# define R300_SC_HYPERZ_HZ_Z0MIN_NO (0 << 5)
720# define R300_SC_HYPERZ_HZ_Z0MIN (1 << 5)
721# define R300_SC_HYPERZ_HZ_Z0MAX_NO (0 << 6)
722# define R300_SC_HYPERZ_HZ_Z0MAX (1 << 6)
723
724#define R300_SC_EDGERULE 0x43a8
725
705/* BEGIN: Scissors and cliprects */ 726/* BEGIN: Scissors and cliprects */
706 727
707/* There are four clipping rectangles. Their corner coordinates are inclusive. 728/* There are four clipping rectangles. Their corner coordinates are inclusive.
@@ -1346,7 +1367,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
1346/* Guess by Vladimir. 1367/* Guess by Vladimir.
1347 * Set to 0A before 3D operations, set to 02 afterwards. 1368 * Set to 0A before 3D operations, set to 02 afterwards.
1348 */ 1369 */
1349#define R300_RB3D_DSTCACHE_CTLSTAT 0x4E4C 1370/*#define R300_RB3D_DSTCACHE_CTLSTAT 0x4E4C*/
1350# define R300_RB3D_DSTCACHE_UNKNOWN_02 0x00000002 1371# define R300_RB3D_DSTCACHE_UNKNOWN_02 0x00000002
1351# define R300_RB3D_DSTCACHE_UNKNOWN_0A 0x0000000A 1372# define R300_RB3D_DSTCACHE_UNKNOWN_0A 0x0000000A
1352 1373
@@ -1355,19 +1376,14 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
1355 * for this. 1376 * for this.
1356 * Bit (1<<8) is the "test" bit. so plain write is 6 - vd 1377 * Bit (1<<8) is the "test" bit. so plain write is 6 - vd
1357 */ 1378 */
1358#define R300_RB3D_ZSTENCIL_CNTL_0 0x4F00 1379#define R300_ZB_CNTL 0x4F00
1359# define R300_RB3D_Z_DISABLED_1 0x00000010 1380# define R300_STENCIL_ENABLE (1 << 0)
1360# define R300_RB3D_Z_DISABLED_2 0x00000014 1381# define R300_Z_ENABLE (1 << 1)
1361# define R300_RB3D_Z_TEST 0x00000012 1382# define R300_Z_WRITE_ENABLE (1 << 2)
1362# define R300_RB3D_Z_TEST_AND_WRITE 0x00000016 1383# define R300_Z_SIGNED_COMPARE (1 << 3)
1363# define R300_RB3D_Z_WRITE_ONLY 0x00000006 1384# define R300_STENCIL_FRONT_BACK (1 << 4)
1364 1385
1365# define R300_RB3D_Z_TEST 0x00000012 1386#define R300_ZB_ZSTENCILCNTL 0x4f04
1366# define R300_RB3D_Z_TEST_AND_WRITE 0x00000016
1367# define R300_RB3D_Z_WRITE_ONLY 0x00000006
1368# define R300_RB3D_STENCIL_ENABLE 0x00000001
1369
1370#define R300_RB3D_ZSTENCIL_CNTL_1 0x4F04
1371 /* functions */ 1387 /* functions */
1372# define R300_ZS_NEVER 0 1388# define R300_ZS_NEVER 0
1373# define R300_ZS_LESS 1 1389# define R300_ZS_LESS 1
@@ -1387,52 +1403,166 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
1387# define R300_ZS_INVERT 5 1403# define R300_ZS_INVERT 5
1388# define R300_ZS_INCR_WRAP 6 1404# define R300_ZS_INCR_WRAP 6
1389# define R300_ZS_DECR_WRAP 7 1405# define R300_ZS_DECR_WRAP 7
1406# define R300_Z_FUNC_SHIFT 0
1390 /* front and back refer to operations done for front 1407 /* front and back refer to operations done for front
1391 and back faces, i.e. separate stencil function support */ 1408 and back faces, i.e. separate stencil function support */
1392# define R300_RB3D_ZS1_DEPTH_FUNC_SHIFT 0 1409# define R300_S_FRONT_FUNC_SHIFT 3
1393# define R300_RB3D_ZS1_FRONT_FUNC_SHIFT 3 1410# define R300_S_FRONT_SFAIL_OP_SHIFT 6
1394# define R300_RB3D_ZS1_FRONT_FAIL_OP_SHIFT 6 1411# define R300_S_FRONT_ZPASS_OP_SHIFT 9
1395# define R300_RB3D_ZS1_FRONT_ZPASS_OP_SHIFT 9 1412# define R300_S_FRONT_ZFAIL_OP_SHIFT 12
1396# define R300_RB3D_ZS1_FRONT_ZFAIL_OP_SHIFT 12 1413# define R300_S_BACK_FUNC_SHIFT 15
1397# define R300_RB3D_ZS1_BACK_FUNC_SHIFT 15 1414# define R300_S_BACK_SFAIL_OP_SHIFT 18
1398# define R300_RB3D_ZS1_BACK_FAIL_OP_SHIFT 18 1415# define R300_S_BACK_ZPASS_OP_SHIFT 21
1399# define R300_RB3D_ZS1_BACK_ZPASS_OP_SHIFT 21 1416# define R300_S_BACK_ZFAIL_OP_SHIFT 24
1400# define R300_RB3D_ZS1_BACK_ZFAIL_OP_SHIFT 24 1417
1401 1418#define R300_ZB_STENCILREFMASK 0x4f08
1402#define R300_RB3D_ZSTENCIL_CNTL_2 0x4F08 1419# define R300_STENCILREF_SHIFT 0
1403# define R300_RB3D_ZS2_STENCIL_REF_SHIFT 0 1420# define R300_STENCILREF_MASK 0x000000ff
1404# define R300_RB3D_ZS2_STENCIL_MASK 0xFF 1421# define R300_STENCILMASK_SHIFT 8
1405# define R300_RB3D_ZS2_STENCIL_MASK_SHIFT 8 1422# define R300_STENCILMASK_MASK 0x0000ff00
1406# define R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT 16 1423# define R300_STENCILWRITEMASK_SHIFT 16
1424# define R300_STENCILWRITEMASK_MASK 0x00ff0000
1407 1425
1408/* gap */ 1426/* gap */
1409 1427
1410#define R300_RB3D_ZSTENCIL_FORMAT 0x4F10 1428#define R300_ZB_FORMAT 0x4f10
1411# define R300_DEPTH_FORMAT_16BIT_INT_Z (0 << 0) 1429# define R300_DEPTHFORMAT_16BIT_INT_Z (0 << 0)
1412# define R300_DEPTH_FORMAT_24BIT_INT_Z (2 << 0) 1430# define R300_DEPTHFORMAT_16BIT_13E3 (1 << 0)
1413 /* 16 bit format or some aditional bit ? */ 1431# define R300_DEPTHFORMAT_24BIT_INT_Z_8BIT_STENCIL (2 << 0)
1414# define R300_DEPTH_FORMAT_UNK32 (32 << 0) 1432/* reserved up to (15 << 0) */
1433# define R300_INVERT_13E3_LEADING_ONES (0 << 4)
1434# define R300_INVERT_13E3_LEADING_ZEROS (1 << 4)
1415 1435
1416#define R300_RB3D_EARLY_Z 0x4F14 1436#define R300_ZB_ZTOP 0x4F14
1417# define R300_EARLY_Z_DISABLE (0 << 0) 1437# define R300_ZTOP_DISABLE (0 << 0)
1418# define R300_EARLY_Z_ENABLE (1 << 0) 1438# define R300_ZTOP_ENABLE (1 << 0)
1419 1439
1420/* gap */ 1440/* gap */
1421 1441
1422#define R300_RB3D_ZCACHE_CTLSTAT 0x4F18 /* GUESS */ 1442#define R300_ZB_ZCACHE_CTLSTAT 0x4f18
1423# define R300_RB3D_ZCACHE_UNKNOWN_01 0x1 1443# define R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_NO_EFFECT (0 << 0)
1424# define R300_RB3D_ZCACHE_UNKNOWN_03 0x3 1444# define R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE (1 << 0)
1445# define R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_NO_EFFECT (0 << 1)
1446# define R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE (1 << 1)
1447# define R300_ZB_ZCACHE_CTLSTAT_ZC_BUSY_IDLE (0 << 31)
1448# define R300_ZB_ZCACHE_CTLSTAT_ZC_BUSY_BUSY (1 << 31)
1449
1450#define R300_ZB_BW_CNTL 0x4f1c
1451# define R300_HIZ_DISABLE (0 << 0)
1452# define R300_HIZ_ENABLE (1 << 0)
1453# define R300_HIZ_MIN (0 << 1)
1454# define R300_HIZ_MAX (1 << 1)
1455# define R300_FAST_FILL_DISABLE (0 << 2)
1456# define R300_FAST_FILL_ENABLE (1 << 2)
1457# define R300_RD_COMP_DISABLE (0 << 3)
1458# define R300_RD_COMP_ENABLE (1 << 3)
1459# define R300_WR_COMP_DISABLE (0 << 4)
1460# define R300_WR_COMP_ENABLE (1 << 4)
1461# define R300_ZB_CB_CLEAR_RMW (0 << 5)
1462# define R300_ZB_CB_CLEAR_CACHE_LINEAR (1 << 5)
1463# define R300_FORCE_COMPRESSED_STENCIL_VALUE_DISABLE (0 << 6)
1464# define R300_FORCE_COMPRESSED_STENCIL_VALUE_ENABLE (1 << 6)
1465
1466# define R500_ZEQUAL_OPTIMIZE_ENABLE (0 << 7)
1467# define R500_ZEQUAL_OPTIMIZE_DISABLE (1 << 7)
1468# define R500_SEQUAL_OPTIMIZE_ENABLE (0 << 8)
1469# define R500_SEQUAL_OPTIMIZE_DISABLE (1 << 8)
1470
1471# define R500_BMASK_ENABLE (0 << 10)
1472# define R500_BMASK_DISABLE (1 << 10)
1473# define R500_HIZ_EQUAL_REJECT_DISABLE (0 << 11)
1474# define R500_HIZ_EQUAL_REJECT_ENABLE (1 << 11)
1475# define R500_HIZ_FP_EXP_BITS_DISABLE (0 << 12)
1476# define R500_HIZ_FP_EXP_BITS_1 (1 << 12)
1477# define R500_HIZ_FP_EXP_BITS_2 (2 << 12)
1478# define R500_HIZ_FP_EXP_BITS_3 (3 << 12)
1479# define R500_HIZ_FP_EXP_BITS_4 (4 << 12)
1480# define R500_HIZ_FP_EXP_BITS_5 (5 << 12)
1481# define R500_HIZ_FP_INVERT_LEADING_ONES (0 << 15)
1482# define R500_HIZ_FP_INVERT_LEADING_ZEROS (1 << 15)
1483# define R500_TILE_OVERWRITE_RECOMPRESSION_ENABLE (0 << 16)
1484# define R500_TILE_OVERWRITE_RECOMPRESSION_DISABLE (1 << 16)
1485# define R500_CONTIGUOUS_6XAA_SAMPLES_ENABLE (0 << 17)
1486# define R500_CONTIGUOUS_6XAA_SAMPLES_DISABLE (1 << 17)
1487# define R500_PEQ_PACKING_DISABLE (0 << 18)
1488# define R500_PEQ_PACKING_ENABLE (1 << 18)
1489# define R500_COVERED_PTR_MASKING_DISABLE (0 << 18)
1490# define R500_COVERED_PTR_MASKING_ENABLE (1 << 18)
1491
1425 1492
1426/* gap */ 1493/* gap */
1427 1494
1428#define R300_RB3D_DEPTHOFFSET 0x4F20 1495/* Z Buffer Address Offset.
1429#define R300_RB3D_DEPTHPITCH 0x4F24 1496 * Bits 31 to 5 are used for aligned Z buffer address offset for macro tiles.
1430# define R300_DEPTHPITCH_MASK 0x00001FF8 /* GUESS */ 1497 */
1431# define R300_DEPTH_TILE_ENABLE (1 << 16) /* GUESS */ 1498#define R300_ZB_DEPTHOFFSET 0x4f20
1432# define R300_DEPTH_MICROTILE_ENABLE (1 << 17) /* GUESS */ 1499
1433# define R300_DEPTH_ENDIAN_NO_SWAP (0 << 18) /* GUESS */ 1500/* Z Buffer Pitch and Endian Control */
1434# define R300_DEPTH_ENDIAN_WORD_SWAP (1 << 18) /* GUESS */ 1501#define R300_ZB_DEPTHPITCH 0x4f24
1435# define R300_DEPTH_ENDIAN_DWORD_SWAP (2 << 18) /* GUESS */ 1502# define R300_DEPTHPITCH_MASK 0x00003FFC
1503# define R300_DEPTHMACROTILE_DISABLE (0 << 16)
1504# define R300_DEPTHMACROTILE_ENABLE (1 << 16)
1505# define R300_DEPTHMICROTILE_LINEAR (0 << 17)
1506# define R300_DEPTHMICROTILE_TILED (1 << 17)
1507# define R300_DEPTHMICROTILE_TILED_SQUARE (2 << 17)
1508# define R300_DEPTHENDIAN_NO_SWAP (0 << 18)
1509# define R300_DEPTHENDIAN_WORD_SWAP (1 << 18)
1510# define R300_DEPTHENDIAN_DWORD_SWAP (2 << 18)
1511# define R300_DEPTHENDIAN_HALF_DWORD_SWAP (3 << 18)
1512
1513/* Z Buffer Clear Value */
1514#define R300_ZB_DEPTHCLEARVALUE 0x4f28
1515
1516#define R300_ZB_ZMASK_OFFSET 0x4f30
1517#define R300_ZB_ZMASK_PITCH 0x4f34
1518#define R300_ZB_ZMASK_WRINDEX 0x4f38
1519#define R300_ZB_ZMASK_DWORD 0x4f3c
1520#define R300_ZB_ZMASK_RDINDEX 0x4f40
1521
1522/* Hierarchical Z Memory Offset */
1523#define R300_ZB_HIZ_OFFSET 0x4f44
1524
1525/* Hierarchical Z Write Index */
1526#define R300_ZB_HIZ_WRINDEX 0x4f48
1527
1528/* Hierarchical Z Data */
1529#define R300_ZB_HIZ_DWORD 0x4f4c
1530
1531/* Hierarchical Z Read Index */
1532#define R300_ZB_HIZ_RDINDEX 0x4f50
1533
1534/* Hierarchical Z Pitch */
1535#define R300_ZB_HIZ_PITCH 0x4f54
1536
1537/* Z Buffer Z Pass Counter Data */
1538#define R300_ZB_ZPASS_DATA 0x4f58
1539
1540/* Z Buffer Z Pass Counter Address */
1541#define R300_ZB_ZPASS_ADDR 0x4f5c
1542
1543/* Depth buffer X and Y coordinate offset */
1544#define R300_ZB_DEPTHXY_OFFSET 0x4f60
1545# define R300_DEPTHX_OFFSET_SHIFT 1
1546# define R300_DEPTHX_OFFSET_MASK 0x000007FE
1547# define R300_DEPTHY_OFFSET_SHIFT 17
1548# define R300_DEPTHY_OFFSET_MASK 0x07FE0000
1549
1550/* Sets the fifo sizes */
1551#define R500_ZB_FIFO_SIZE 0x4fd0
1552# define R500_OP_FIFO_SIZE_FULL (0 << 0)
1553# define R500_OP_FIFO_SIZE_HALF (1 << 0)
1554# define R500_OP_FIFO_SIZE_QUATER (2 << 0)
1555# define R500_OP_FIFO_SIZE_EIGTHS (4 << 0)
1556
1557/* Stencil Reference Value and Mask for backfacing quads */
1558/* R300_ZB_STENCILREFMASK handles front face */
1559#define R500_ZB_STENCILREFMASK_BF 0x4fd4
1560# define R500_STENCILREF_SHIFT 0
1561# define R500_STENCILREF_MASK 0x000000ff
1562# define R500_STENCILMASK_SHIFT 8
1563# define R500_STENCILMASK_MASK 0x0000ff00
1564# define R500_STENCILWRITEMASK_SHIFT 16
1565# define R500_STENCILWRITEMASK_MASK 0x00ff0000
1436 1566
1437/* BEGIN: Vertex program instruction set */ 1567/* BEGIN: Vertex program instruction set */
1438 1568
@@ -1623,4 +1753,20 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
1623 */ 1753 */
1624#define R300_CP_CMD_BITBLT_MULTI 0xC0009B00 1754#define R300_CP_CMD_BITBLT_MULTI 0xC0009B00
1625 1755
1756#define R500_VAP_INDEX_OFFSET 0x208c
1757
1758#define R500_GA_US_VECTOR_INDEX 0x4250
1759#define R500_GA_US_VECTOR_DATA 0x4254
1760
1761#define R500_RS_IP_0 0x4074
1762#define R500_RS_INST_0 0x4320
1763
1764#define R500_US_CONFIG 0x4600
1765
1766#define R500_US_FC_CTRL 0x4624
1767#define R500_US_CODE_ADDR 0x4630
1768
1769#define R500_RB3D_COLOR_CLEAR_VALUE_AR 0x46c0
1770#define R500_RB3D_CONSTANT_COLOR_AR 0x4ef8
1771
1626#endif /* _R300_REG_H */ 1772#endif /* _R300_REG_H */
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c
index f6f6c92bf771..e53158f0ecb5 100644
--- a/drivers/char/drm/radeon_cp.c
+++ b/drivers/char/drm/radeon_cp.c
@@ -2,6 +2,7 @@
2/* 2/*
3 * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. 3 * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas.
4 * Copyright 2000 VA Linux Systems, Inc., Fremont, California. 4 * Copyright 2000 VA Linux Systems, Inc., Fremont, California.
5 * Copyright 2007 Advanced Micro Devices, Inc.
5 * All Rights Reserved. 6 * All Rights Reserved.
6 * 7 *
7 * Permission is hereby granted, free of charge, to any person obtaining a 8 * Permission is hereby granted, free of charge, to any person obtaining a
@@ -34,789 +35,13 @@
34#include "radeon_drv.h" 35#include "radeon_drv.h"
35#include "r300_reg.h" 36#include "r300_reg.h"
36 37
38#include "radeon_microcode.h"
39
37#define RADEON_FIFO_DEBUG 0 40#define RADEON_FIFO_DEBUG 0
38 41
39static int radeon_do_cleanup_cp(struct drm_device * dev); 42static int radeon_do_cleanup_cp(struct drm_device * dev);
40 43
41/* CP microcode (from ATI) */ 44static u32 R500_READ_MCIND(drm_radeon_private_t *dev_priv, int addr)
42static const u32 R200_cp_microcode[][2] = {
43 {0x21007000, 0000000000},
44 {0x20007000, 0000000000},
45 {0x000000ab, 0x00000004},
46 {0x000000af, 0x00000004},
47 {0x66544a49, 0000000000},
48 {0x49494174, 0000000000},
49 {0x54517d83, 0000000000},
50 {0x498d8b64, 0000000000},
51 {0x49494949, 0000000000},
52 {0x49da493c, 0000000000},
53 {0x49989898, 0000000000},
54 {0xd34949d5, 0000000000},
55 {0x9dc90e11, 0000000000},
56 {0xce9b9b9b, 0000000000},
57 {0x000f0000, 0x00000016},
58 {0x352e232c, 0000000000},
59 {0x00000013, 0x00000004},
60 {0x000f0000, 0x00000016},
61 {0x352e272c, 0000000000},
62 {0x000f0001, 0x00000016},
63 {0x3239362f, 0000000000},
64 {0x000077ef, 0x00000002},
65 {0x00061000, 0x00000002},
66 {0x00000020, 0x0000001a},
67 {0x00004000, 0x0000001e},
68 {0x00061000, 0x00000002},
69 {0x00000020, 0x0000001a},
70 {0x00004000, 0x0000001e},
71 {0x00061000, 0x00000002},
72 {0x00000020, 0x0000001a},
73 {0x00004000, 0x0000001e},
74 {0x00000016, 0x00000004},
75 {0x0003802a, 0x00000002},
76 {0x040067e0, 0x00000002},
77 {0x00000016, 0x00000004},
78 {0x000077e0, 0x00000002},
79 {0x00065000, 0x00000002},
80 {0x000037e1, 0x00000002},
81 {0x040067e1, 0x00000006},
82 {0x000077e0, 0x00000002},
83 {0x000077e1, 0x00000002},
84 {0x000077e1, 0x00000006},
85 {0xffffffff, 0000000000},
86 {0x10000000, 0000000000},
87 {0x0003802a, 0x00000002},
88 {0x040067e0, 0x00000006},
89 {0x00007675, 0x00000002},
90 {0x00007676, 0x00000002},
91 {0x00007677, 0x00000002},
92 {0x00007678, 0x00000006},
93 {0x0003802b, 0x00000002},
94 {0x04002676, 0x00000002},
95 {0x00007677, 0x00000002},
96 {0x00007678, 0x00000006},
97 {0x0000002e, 0x00000018},
98 {0x0000002e, 0x00000018},
99 {0000000000, 0x00000006},
100 {0x0000002f, 0x00000018},
101 {0x0000002f, 0x00000018},
102 {0000000000, 0x00000006},
103 {0x01605000, 0x00000002},
104 {0x00065000, 0x00000002},
105 {0x00098000, 0x00000002},
106 {0x00061000, 0x00000002},
107 {0x64c0603d, 0x00000004},
108 {0x00080000, 0x00000016},
109 {0000000000, 0000000000},
110 {0x0400251d, 0x00000002},
111 {0x00007580, 0x00000002},
112 {0x00067581, 0x00000002},
113 {0x04002580, 0x00000002},
114 {0x00067581, 0x00000002},
115 {0x00000046, 0x00000004},
116 {0x00005000, 0000000000},
117 {0x00061000, 0x00000002},
118 {0x0000750e, 0x00000002},
119 {0x00019000, 0x00000002},
120 {0x00011055, 0x00000014},
121 {0x00000055, 0x00000012},
122 {0x0400250f, 0x00000002},
123 {0x0000504a, 0x00000004},
124 {0x00007565, 0x00000002},
125 {0x00007566, 0x00000002},
126 {0x00000051, 0x00000004},
127 {0x01e655b4, 0x00000002},
128 {0x4401b0dc, 0x00000002},
129 {0x01c110dc, 0x00000002},
130 {0x2666705d, 0x00000018},
131 {0x040c2565, 0x00000002},
132 {0x0000005d, 0x00000018},
133 {0x04002564, 0x00000002},
134 {0x00007566, 0x00000002},
135 {0x00000054, 0x00000004},
136 {0x00401060, 0x00000008},
137 {0x00101000, 0x00000002},
138 {0x000d80ff, 0x00000002},
139 {0x00800063, 0x00000008},
140 {0x000f9000, 0x00000002},
141 {0x000e00ff, 0x00000002},
142 {0000000000, 0x00000006},
143 {0x00000080, 0x00000018},
144 {0x00000054, 0x00000004},
145 {0x00007576, 0x00000002},
146 {0x00065000, 0x00000002},
147 {0x00009000, 0x00000002},
148 {0x00041000, 0x00000002},
149 {0x0c00350e, 0x00000002},
150 {0x00049000, 0x00000002},
151 {0x00051000, 0x00000002},
152 {0x01e785f8, 0x00000002},
153 {0x00200000, 0x00000002},
154 {0x00600073, 0x0000000c},
155 {0x00007563, 0x00000002},
156 {0x006075f0, 0x00000021},
157 {0x20007068, 0x00000004},
158 {0x00005068, 0x00000004},
159 {0x00007576, 0x00000002},
160 {0x00007577, 0x00000002},
161 {0x0000750e, 0x00000002},
162 {0x0000750f, 0x00000002},
163 {0x00a05000, 0x00000002},
164 {0x00600076, 0x0000000c},
165 {0x006075f0, 0x00000021},
166 {0x000075f8, 0x00000002},
167 {0x00000076, 0x00000004},
168 {0x000a750e, 0x00000002},
169 {0x0020750f, 0x00000002},
170 {0x00600079, 0x00000004},
171 {0x00007570, 0x00000002},
172 {0x00007571, 0x00000002},
173 {0x00007572, 0x00000006},
174 {0x00005000, 0x00000002},
175 {0x00a05000, 0x00000002},
176 {0x00007568, 0x00000002},
177 {0x00061000, 0x00000002},
178 {0x00000084, 0x0000000c},
179 {0x00058000, 0x00000002},
180 {0x0c607562, 0x00000002},
181 {0x00000086, 0x00000004},
182 {0x00600085, 0x00000004},
183 {0x400070dd, 0000000000},
184 {0x000380dd, 0x00000002},
185 {0x00000093, 0x0000001c},
186 {0x00065095, 0x00000018},
187 {0x040025bb, 0x00000002},
188 {0x00061096, 0x00000018},
189 {0x040075bc, 0000000000},
190 {0x000075bb, 0x00000002},
191 {0x000075bc, 0000000000},
192 {0x00090000, 0x00000006},
193 {0x00090000, 0x00000002},
194 {0x000d8002, 0x00000006},
195 {0x00005000, 0x00000002},
196 {0x00007821, 0x00000002},
197 {0x00007800, 0000000000},
198 {0x00007821, 0x00000002},
199 {0x00007800, 0000000000},
200 {0x01665000, 0x00000002},
201 {0x000a0000, 0x00000002},
202 {0x000671cc, 0x00000002},
203 {0x0286f1cd, 0x00000002},
204 {0x000000a3, 0x00000010},
205 {0x21007000, 0000000000},
206 {0x000000aa, 0x0000001c},
207 {0x00065000, 0x00000002},
208 {0x000a0000, 0x00000002},
209 {0x00061000, 0x00000002},
210 {0x000b0000, 0x00000002},
211 {0x38067000, 0x00000002},
212 {0x000a00a6, 0x00000004},
213 {0x20007000, 0000000000},
214 {0x01200000, 0x00000002},
215 {0x20077000, 0x00000002},
216 {0x01200000, 0x00000002},
217 {0x20007000, 0000000000},
218 {0x00061000, 0x00000002},
219 {0x0120751b, 0x00000002},
220 {0x8040750a, 0x00000002},
221 {0x8040750b, 0x00000002},
222 {0x00110000, 0x00000002},
223 {0x000380dd, 0x00000002},
224 {0x000000bd, 0x0000001c},
225 {0x00061096, 0x00000018},
226 {0x844075bd, 0x00000002},
227 {0x00061095, 0x00000018},
228 {0x840075bb, 0x00000002},
229 {0x00061096, 0x00000018},
230 {0x844075bc, 0x00000002},
231 {0x000000c0, 0x00000004},
232 {0x804075bd, 0x00000002},
233 {0x800075bb, 0x00000002},
234 {0x804075bc, 0x00000002},
235 {0x00108000, 0x00000002},
236 {0x01400000, 0x00000002},
237 {0x006000c4, 0x0000000c},
238 {0x20c07000, 0x00000020},
239 {0x000000c6, 0x00000012},
240 {0x00800000, 0x00000006},
241 {0x0080751d, 0x00000006},
242 {0x000025bb, 0x00000002},
243 {0x000040c0, 0x00000004},
244 {0x0000775c, 0x00000002},
245 {0x00a05000, 0x00000002},
246 {0x00661000, 0x00000002},
247 {0x0460275d, 0x00000020},
248 {0x00004000, 0000000000},
249 {0x00007999, 0x00000002},
250 {0x00a05000, 0x00000002},
251 {0x00661000, 0x00000002},
252 {0x0460299b, 0x00000020},
253 {0x00004000, 0000000000},
254 {0x01e00830, 0x00000002},
255 {0x21007000, 0000000000},
256 {0x00005000, 0x00000002},
257 {0x00038042, 0x00000002},
258 {0x040025e0, 0x00000002},
259 {0x000075e1, 0000000000},
260 {0x00000001, 0000000000},
261 {0x000380d9, 0x00000002},
262 {0x04007394, 0000000000},
263 {0000000000, 0000000000},
264 {0000000000, 0000000000},
265 {0000000000, 0000000000},
266 {0000000000, 0000000000},
267 {0000000000, 0000000000},
268 {0000000000, 0000000000},
269 {0000000000, 0000000000},
270 {0000000000, 0000000000},
271 {0000000000, 0000000000},
272 {0000000000, 0000000000},
273 {0000000000, 0000000000},
274 {0000000000, 0000000000},
275 {0000000000, 0000000000},
276 {0000000000, 0000000000},
277 {0000000000, 0000000000},
278 {0000000000, 0000000000},
279 {0000000000, 0000000000},
280 {0000000000, 0000000000},
281 {0000000000, 0000000000},
282 {0000000000, 0000000000},
283 {0000000000, 0000000000},
284 {0000000000, 0000000000},
285 {0000000000, 0000000000},
286 {0000000000, 0000000000},
287 {0000000000, 0000000000},
288 {0000000000, 0000000000},
289 {0000000000, 0000000000},
290 {0000000000, 0000000000},
291 {0000000000, 0000000000},
292 {0000000000, 0000000000},
293 {0000000000, 0000000000},
294 {0000000000, 0000000000},
295 {0000000000, 0000000000},
296 {0000000000, 0000000000},
297 {0000000000, 0000000000},
298 {0000000000, 0000000000},
299};
300
301static const u32 radeon_cp_microcode[][2] = {
302 {0x21007000, 0000000000},
303 {0x20007000, 0000000000},
304 {0x000000b4, 0x00000004},
305 {0x000000b8, 0x00000004},
306 {0x6f5b4d4c, 0000000000},
307 {0x4c4c427f, 0000000000},
308 {0x5b568a92, 0000000000},
309 {0x4ca09c6d, 0000000000},
310 {0xad4c4c4c, 0000000000},
311 {0x4ce1af3d, 0000000000},
312 {0xd8afafaf, 0000000000},
313 {0xd64c4cdc, 0000000000},
314 {0x4cd10d10, 0000000000},
315 {0x000f0000, 0x00000016},
316 {0x362f242d, 0000000000},
317 {0x00000012, 0x00000004},
318 {0x000f0000, 0x00000016},
319 {0x362f282d, 0000000000},
320 {0x000380e7, 0x00000002},
321 {0x04002c97, 0x00000002},
322 {0x000f0001, 0x00000016},
323 {0x333a3730, 0000000000},
324 {0x000077ef, 0x00000002},
325 {0x00061000, 0x00000002},
326 {0x00000021, 0x0000001a},
327 {0x00004000, 0x0000001e},
328 {0x00061000, 0x00000002},
329 {0x00000021, 0x0000001a},
330 {0x00004000, 0x0000001e},
331 {0x00061000, 0x00000002},
332 {0x00000021, 0x0000001a},
333 {0x00004000, 0x0000001e},
334 {0x00000017, 0x00000004},
335 {0x0003802b, 0x00000002},
336 {0x040067e0, 0x00000002},
337 {0x00000017, 0x00000004},
338 {0x000077e0, 0x00000002},
339 {0x00065000, 0x00000002},
340 {0x000037e1, 0x00000002},
341 {0x040067e1, 0x00000006},
342 {0x000077e0, 0x00000002},
343 {0x000077e1, 0x00000002},
344 {0x000077e1, 0x00000006},
345 {0xffffffff, 0000000000},
346 {0x10000000, 0000000000},
347 {0x0003802b, 0x00000002},
348 {0x040067e0, 0x00000006},
349 {0x00007675, 0x00000002},
350 {0x00007676, 0x00000002},
351 {0x00007677, 0x00000002},
352 {0x00007678, 0x00000006},
353 {0x0003802c, 0x00000002},
354 {0x04002676, 0x00000002},
355 {0x00007677, 0x00000002},
356 {0x00007678, 0x00000006},
357 {0x0000002f, 0x00000018},
358 {0x0000002f, 0x00000018},
359 {0000000000, 0x00000006},
360 {0x00000030, 0x00000018},
361 {0x00000030, 0x00000018},
362 {0000000000, 0x00000006},
363 {0x01605000, 0x00000002},
364 {0x00065000, 0x00000002},
365 {0x00098000, 0x00000002},
366 {0x00061000, 0x00000002},
367 {0x64c0603e, 0x00000004},
368 {0x000380e6, 0x00000002},
369 {0x040025c5, 0x00000002},
370 {0x00080000, 0x00000016},
371 {0000000000, 0000000000},
372 {0x0400251d, 0x00000002},
373 {0x00007580, 0x00000002},
374 {0x00067581, 0x00000002},
375 {0x04002580, 0x00000002},
376 {0x00067581, 0x00000002},
377 {0x00000049, 0x00000004},
378 {0x00005000, 0000000000},
379 {0x000380e6, 0x00000002},
380 {0x040025c5, 0x00000002},
381 {0x00061000, 0x00000002},
382 {0x0000750e, 0x00000002},
383 {0x00019000, 0x00000002},
384 {0x00011055, 0x00000014},
385 {0x00000055, 0x00000012},
386 {0x0400250f, 0x00000002},
387 {0x0000504f, 0x00000004},
388 {0x000380e6, 0x00000002},
389 {0x040025c5, 0x00000002},
390 {0x00007565, 0x00000002},
391 {0x00007566, 0x00000002},
392 {0x00000058, 0x00000004},
393 {0x000380e6, 0x00000002},
394 {0x040025c5, 0x00000002},
395 {0x01e655b4, 0x00000002},
396 {0x4401b0e4, 0x00000002},
397 {0x01c110e4, 0x00000002},
398 {0x26667066, 0x00000018},
399 {0x040c2565, 0x00000002},
400 {0x00000066, 0x00000018},
401 {0x04002564, 0x00000002},
402 {0x00007566, 0x00000002},
403 {0x0000005d, 0x00000004},
404 {0x00401069, 0x00000008},
405 {0x00101000, 0x00000002},
406 {0x000d80ff, 0x00000002},
407 {0x0080006c, 0x00000008},
408 {0x000f9000, 0x00000002},
409 {0x000e00ff, 0x00000002},
410 {0000000000, 0x00000006},
411 {0x0000008f, 0x00000018},
412 {0x0000005b, 0x00000004},
413 {0x000380e6, 0x00000002},
414 {0x040025c5, 0x00000002},
415 {0x00007576, 0x00000002},
416 {0x00065000, 0x00000002},
417 {0x00009000, 0x00000002},
418 {0x00041000, 0x00000002},
419 {0x0c00350e, 0x00000002},
420 {0x00049000, 0x00000002},
421 {0x00051000, 0x00000002},
422 {0x01e785f8, 0x00000002},
423 {0x00200000, 0x00000002},
424 {0x0060007e, 0x0000000c},
425 {0x00007563, 0x00000002},
426 {0x006075f0, 0x00000021},
427 {0x20007073, 0x00000004},
428 {0x00005073, 0x00000004},
429 {0x000380e6, 0x00000002},
430 {0x040025c5, 0x00000002},
431 {0x00007576, 0x00000002},
432 {0x00007577, 0x00000002},
433 {0x0000750e, 0x00000002},
434 {0x0000750f, 0x00000002},
435 {0x00a05000, 0x00000002},
436 {0x00600083, 0x0000000c},
437 {0x006075f0, 0x00000021},
438 {0x000075f8, 0x00000002},
439 {0x00000083, 0x00000004},
440 {0x000a750e, 0x00000002},
441 {0x000380e6, 0x00000002},
442 {0x040025c5, 0x00000002},
443 {0x0020750f, 0x00000002},
444 {0x00600086, 0x00000004},
445 {0x00007570, 0x00000002},
446 {0x00007571, 0x00000002},
447 {0x00007572, 0x00000006},
448 {0x000380e6, 0x00000002},
449 {0x040025c5, 0x00000002},
450 {0x00005000, 0x00000002},
451 {0x00a05000, 0x00000002},
452 {0x00007568, 0x00000002},
453 {0x00061000, 0x00000002},
454 {0x00000095, 0x0000000c},
455 {0x00058000, 0x00000002},
456 {0x0c607562, 0x00000002},
457 {0x00000097, 0x00000004},
458 {0x000380e6, 0x00000002},
459 {0x040025c5, 0x00000002},
460 {0x00600096, 0x00000004},
461 {0x400070e5, 0000000000},
462 {0x000380e6, 0x00000002},
463 {0x040025c5, 0x00000002},
464 {0x000380e5, 0x00000002},
465 {0x000000a8, 0x0000001c},
466 {0x000650aa, 0x00000018},
467 {0x040025bb, 0x00000002},
468 {0x000610ab, 0x00000018},
469 {0x040075bc, 0000000000},
470 {0x000075bb, 0x00000002},
471 {0x000075bc, 0000000000},
472 {0x00090000, 0x00000006},
473 {0x00090000, 0x00000002},
474 {0x000d8002, 0x00000006},
475 {0x00007832, 0x00000002},
476 {0x00005000, 0x00000002},
477 {0x000380e7, 0x00000002},
478 {0x04002c97, 0x00000002},
479 {0x00007820, 0x00000002},
480 {0x00007821, 0x00000002},
481 {0x00007800, 0000000000},
482 {0x01200000, 0x00000002},
483 {0x20077000, 0x00000002},
484 {0x01200000, 0x00000002},
485 {0x20007000, 0x00000002},
486 {0x00061000, 0x00000002},
487 {0x0120751b, 0x00000002},
488 {0x8040750a, 0x00000002},
489 {0x8040750b, 0x00000002},
490 {0x00110000, 0x00000002},
491 {0x000380e5, 0x00000002},
492 {0x000000c6, 0x0000001c},
493 {0x000610ab, 0x00000018},
494 {0x844075bd, 0x00000002},
495 {0x000610aa, 0x00000018},
496 {0x840075bb, 0x00000002},
497 {0x000610ab, 0x00000018},
498 {0x844075bc, 0x00000002},
499 {0x000000c9, 0x00000004},
500 {0x804075bd, 0x00000002},
501 {0x800075bb, 0x00000002},
502 {0x804075bc, 0x00000002},
503 {0x00108000, 0x00000002},
504 {0x01400000, 0x00000002},
505 {0x006000cd, 0x0000000c},
506 {0x20c07000, 0x00000020},
507 {0x000000cf, 0x00000012},
508 {0x00800000, 0x00000006},
509 {0x0080751d, 0x00000006},
510 {0000000000, 0000000000},
511 {0x0000775c, 0x00000002},
512 {0x00a05000, 0x00000002},
513 {0x00661000, 0x00000002},
514 {0x0460275d, 0x00000020},
515 {0x00004000, 0000000000},
516 {0x01e00830, 0x00000002},
517 {0x21007000, 0000000000},
518 {0x6464614d, 0000000000},
519 {0x69687420, 0000000000},
520 {0x00000073, 0000000000},
521 {0000000000, 0000000000},
522 {0x00005000, 0x00000002},
523 {0x000380d0, 0x00000002},
524 {0x040025e0, 0x00000002},
525 {0x000075e1, 0000000000},
526 {0x00000001, 0000000000},
527 {0x000380e0, 0x00000002},
528 {0x04002394, 0x00000002},
529 {0x00005000, 0000000000},
530 {0000000000, 0000000000},
531 {0000000000, 0000000000},
532 {0x00000008, 0000000000},
533 {0x00000004, 0000000000},
534 {0000000000, 0000000000},
535 {0000000000, 0000000000},
536 {0000000000, 0000000000},
537 {0000000000, 0000000000},
538 {0000000000, 0000000000},
539 {0000000000, 0000000000},
540 {0000000000, 0000000000},
541 {0000000000, 0000000000},
542 {0000000000, 0000000000},
543 {0000000000, 0000000000},
544 {0000000000, 0000000000},
545 {0000000000, 0000000000},
546 {0000000000, 0000000000},
547 {0000000000, 0000000000},
548 {0000000000, 0000000000},
549 {0000000000, 0000000000},
550 {0000000000, 0000000000},
551 {0000000000, 0000000000},
552 {0000000000, 0000000000},
553 {0000000000, 0000000000},
554 {0000000000, 0000000000},
555 {0000000000, 0000000000},
556 {0000000000, 0000000000},
557 {0000000000, 0000000000},
558};
559
560static const u32 R300_cp_microcode[][2] = {
561 {0x4200e000, 0000000000},
562 {0x4000e000, 0000000000},
563 {0x000000af, 0x00000008},
564 {0x000000b3, 0x00000008},
565 {0x6c5a504f, 0000000000},
566 {0x4f4f497a, 0000000000},
567 {0x5a578288, 0000000000},
568 {0x4f91906a, 0000000000},
569 {0x4f4f4f4f, 0000000000},
570 {0x4fe24f44, 0000000000},
571 {0x4f9c9c9c, 0000000000},
572 {0xdc4f4fde, 0000000000},
573 {0xa1cd4f4f, 0000000000},
574 {0xd29d9d9d, 0000000000},
575 {0x4f0f9fd7, 0000000000},
576 {0x000ca000, 0x00000004},
577 {0x000d0012, 0x00000038},
578 {0x0000e8b4, 0x00000004},
579 {0x000d0014, 0x00000038},
580 {0x0000e8b6, 0x00000004},
581 {0x000d0016, 0x00000038},
582 {0x0000e854, 0x00000004},
583 {0x000d0018, 0x00000038},
584 {0x0000e855, 0x00000004},
585 {0x000d001a, 0x00000038},
586 {0x0000e856, 0x00000004},
587 {0x000d001c, 0x00000038},
588 {0x0000e857, 0x00000004},
589 {0x000d001e, 0x00000038},
590 {0x0000e824, 0x00000004},
591 {0x000d0020, 0x00000038},
592 {0x0000e825, 0x00000004},
593 {0x000d0022, 0x00000038},
594 {0x0000e830, 0x00000004},
595 {0x000d0024, 0x00000038},
596 {0x0000f0c0, 0x00000004},
597 {0x000d0026, 0x00000038},
598 {0x0000f0c1, 0x00000004},
599 {0x000d0028, 0x00000038},
600 {0x0000f041, 0x00000004},
601 {0x000d002a, 0x00000038},
602 {0x0000f184, 0x00000004},
603 {0x000d002c, 0x00000038},
604 {0x0000f185, 0x00000004},
605 {0x000d002e, 0x00000038},
606 {0x0000f186, 0x00000004},
607 {0x000d0030, 0x00000038},
608 {0x0000f187, 0x00000004},
609 {0x000d0032, 0x00000038},
610 {0x0000f180, 0x00000004},
611 {0x000d0034, 0x00000038},
612 {0x0000f393, 0x00000004},
613 {0x000d0036, 0x00000038},
614 {0x0000f38a, 0x00000004},
615 {0x000d0038, 0x00000038},
616 {0x0000f38e, 0x00000004},
617 {0x0000e821, 0x00000004},
618 {0x0140a000, 0x00000004},
619 {0x00000043, 0x00000018},
620 {0x00cce800, 0x00000004},
621 {0x001b0001, 0x00000004},
622 {0x08004800, 0x00000004},
623 {0x001b0001, 0x00000004},
624 {0x08004800, 0x00000004},
625 {0x001b0001, 0x00000004},
626 {0x08004800, 0x00000004},
627 {0x0000003a, 0x00000008},
628 {0x0000a000, 0000000000},
629 {0x02c0a000, 0x00000004},
630 {0x000ca000, 0x00000004},
631 {0x00130000, 0x00000004},
632 {0x000c2000, 0x00000004},
633 {0xc980c045, 0x00000008},
634 {0x2000451d, 0x00000004},
635 {0x0000e580, 0x00000004},
636 {0x000ce581, 0x00000004},
637 {0x08004580, 0x00000004},
638 {0x000ce581, 0x00000004},
639 {0x0000004c, 0x00000008},
640 {0x0000a000, 0000000000},
641 {0x000c2000, 0x00000004},
642 {0x0000e50e, 0x00000004},
643 {0x00032000, 0x00000004},
644 {0x00022056, 0x00000028},
645 {0x00000056, 0x00000024},
646 {0x0800450f, 0x00000004},
647 {0x0000a050, 0x00000008},
648 {0x0000e565, 0x00000004},
649 {0x0000e566, 0x00000004},
650 {0x00000057, 0x00000008},
651 {0x03cca5b4, 0x00000004},
652 {0x05432000, 0x00000004},
653 {0x00022000, 0x00000004},
654 {0x4ccce063, 0x00000030},
655 {0x08274565, 0x00000004},
656 {0x00000063, 0x00000030},
657 {0x08004564, 0x00000004},
658 {0x0000e566, 0x00000004},
659 {0x0000005a, 0x00000008},
660 {0x00802066, 0x00000010},
661 {0x00202000, 0x00000004},
662 {0x001b00ff, 0x00000004},
663 {0x01000069, 0x00000010},
664 {0x001f2000, 0x00000004},
665 {0x001c00ff, 0x00000004},
666 {0000000000, 0x0000000c},
667 {0x00000085, 0x00000030},
668 {0x0000005a, 0x00000008},
669 {0x0000e576, 0x00000004},
670 {0x000ca000, 0x00000004},
671 {0x00012000, 0x00000004},
672 {0x00082000, 0x00000004},
673 {0x1800650e, 0x00000004},
674 {0x00092000, 0x00000004},
675 {0x000a2000, 0x00000004},
676 {0x000f0000, 0x00000004},
677 {0x00400000, 0x00000004},
678 {0x00000079, 0x00000018},
679 {0x0000e563, 0x00000004},
680 {0x00c0e5f9, 0x000000c2},
681 {0x0000006e, 0x00000008},
682 {0x0000a06e, 0x00000008},
683 {0x0000e576, 0x00000004},
684 {0x0000e577, 0x00000004},
685 {0x0000e50e, 0x00000004},
686 {0x0000e50f, 0x00000004},
687 {0x0140a000, 0x00000004},
688 {0x0000007c, 0x00000018},
689 {0x00c0e5f9, 0x000000c2},
690 {0x0000007c, 0x00000008},
691 {0x0014e50e, 0x00000004},
692 {0x0040e50f, 0x00000004},
693 {0x00c0007f, 0x00000008},
694 {0x0000e570, 0x00000004},
695 {0x0000e571, 0x00000004},
696 {0x0000e572, 0x0000000c},
697 {0x0000a000, 0x00000004},
698 {0x0140a000, 0x00000004},
699 {0x0000e568, 0x00000004},
700 {0x000c2000, 0x00000004},
701 {0x00000089, 0x00000018},
702 {0x000b0000, 0x00000004},
703 {0x18c0e562, 0x00000004},
704 {0x0000008b, 0x00000008},
705 {0x00c0008a, 0x00000008},
706 {0x000700e4, 0x00000004},
707 {0x00000097, 0x00000038},
708 {0x000ca099, 0x00000030},
709 {0x080045bb, 0x00000004},
710 {0x000c209a, 0x00000030},
711 {0x0800e5bc, 0000000000},
712 {0x0000e5bb, 0x00000004},
713 {0x0000e5bc, 0000000000},
714 {0x00120000, 0x0000000c},
715 {0x00120000, 0x00000004},
716 {0x001b0002, 0x0000000c},
717 {0x0000a000, 0x00000004},
718 {0x0000e821, 0x00000004},
719 {0x0000e800, 0000000000},
720 {0x0000e821, 0x00000004},
721 {0x0000e82e, 0000000000},
722 {0x02cca000, 0x00000004},
723 {0x00140000, 0x00000004},
724 {0x000ce1cc, 0x00000004},
725 {0x050de1cd, 0x00000004},
726 {0x000000a7, 0x00000020},
727 {0x4200e000, 0000000000},
728 {0x000000ae, 0x00000038},
729 {0x000ca000, 0x00000004},
730 {0x00140000, 0x00000004},
731 {0x000c2000, 0x00000004},
732 {0x00160000, 0x00000004},
733 {0x700ce000, 0x00000004},
734 {0x001400aa, 0x00000008},
735 {0x4000e000, 0000000000},
736 {0x02400000, 0x00000004},
737 {0x400ee000, 0x00000004},
738 {0x02400000, 0x00000004},
739 {0x4000e000, 0000000000},
740 {0x000c2000, 0x00000004},
741 {0x0240e51b, 0x00000004},
742 {0x0080e50a, 0x00000005},
743 {0x0080e50b, 0x00000005},
744 {0x00220000, 0x00000004},
745 {0x000700e4, 0x00000004},
746 {0x000000c1, 0x00000038},
747 {0x000c209a, 0x00000030},
748 {0x0880e5bd, 0x00000005},
749 {0x000c2099, 0x00000030},
750 {0x0800e5bb, 0x00000005},
751 {0x000c209a, 0x00000030},
752 {0x0880e5bc, 0x00000005},
753 {0x000000c4, 0x00000008},
754 {0x0080e5bd, 0x00000005},
755 {0x0000e5bb, 0x00000005},
756 {0x0080e5bc, 0x00000005},
757 {0x00210000, 0x00000004},
758 {0x02800000, 0x00000004},
759 {0x00c000c8, 0x00000018},
760 {0x4180e000, 0x00000040},
761 {0x000000ca, 0x00000024},
762 {0x01000000, 0x0000000c},
763 {0x0100e51d, 0x0000000c},
764 {0x000045bb, 0x00000004},
765 {0x000080c4, 0x00000008},
766 {0x0000f3ce, 0x00000004},
767 {0x0140a000, 0x00000004},
768 {0x00cc2000, 0x00000004},
769 {0x08c053cf, 0x00000040},
770 {0x00008000, 0000000000},
771 {0x0000f3d2, 0x00000004},
772 {0x0140a000, 0x00000004},
773 {0x00cc2000, 0x00000004},
774 {0x08c053d3, 0x00000040},
775 {0x00008000, 0000000000},
776 {0x0000f39d, 0x00000004},
777 {0x0140a000, 0x00000004},
778 {0x00cc2000, 0x00000004},
779 {0x08c0539e, 0x00000040},
780 {0x00008000, 0000000000},
781 {0x03c00830, 0x00000004},
782 {0x4200e000, 0000000000},
783 {0x0000a000, 0x00000004},
784 {0x200045e0, 0x00000004},
785 {0x0000e5e1, 0000000000},
786 {0x00000001, 0000000000},
787 {0x000700e1, 0x00000004},
788 {0x0800e394, 0000000000},
789 {0000000000, 0000000000},
790 {0000000000, 0000000000},
791 {0000000000, 0000000000},
792 {0000000000, 0000000000},
793 {0000000000, 0000000000},
794 {0000000000, 0000000000},
795 {0000000000, 0000000000},
796 {0000000000, 0000000000},
797 {0000000000, 0000000000},
798 {0000000000, 0000000000},
799 {0000000000, 0000000000},
800 {0000000000, 0000000000},
801 {0000000000, 0000000000},
802 {0000000000, 0000000000},
803 {0000000000, 0000000000},
804 {0000000000, 0000000000},
805 {0000000000, 0000000000},
806 {0000000000, 0000000000},
807 {0000000000, 0000000000},
808 {0000000000, 0000000000},
809 {0000000000, 0000000000},
810 {0000000000, 0000000000},
811 {0000000000, 0000000000},
812 {0000000000, 0000000000},
813 {0000000000, 0000000000},
814 {0000000000, 0000000000},
815 {0000000000, 0000000000},
816 {0000000000, 0000000000},
817};
818
819static u32 RADEON_READ_MCIND(drm_radeon_private_t *dev_priv, int addr)
820{ 45{
821 u32 ret; 46 u32 ret;
822 RADEON_WRITE(R520_MC_IND_INDEX, 0x7f0000 | (addr & 0xff)); 47 RADEON_WRITE(R520_MC_IND_INDEX, 0x7f0000 | (addr & 0xff));
@@ -825,21 +50,41 @@ static u32 RADEON_READ_MCIND(drm_radeon_private_t *dev_priv, int addr)
825 return ret; 50 return ret;
826} 51}
827 52
53static u32 RS480_READ_MCIND(drm_radeon_private_t *dev_priv, int addr)
54{
55 u32 ret;
56 RADEON_WRITE(RS480_NB_MC_INDEX, addr & 0xff);
57 ret = RADEON_READ(RS480_NB_MC_DATA);
58 RADEON_WRITE(RS480_NB_MC_INDEX, 0xff);
59 return ret;
60}
61
828static u32 RS690_READ_MCIND(drm_radeon_private_t *dev_priv, int addr) 62static u32 RS690_READ_MCIND(drm_radeon_private_t *dev_priv, int addr)
829{ 63{
64 u32 ret;
830 RADEON_WRITE(RS690_MC_INDEX, (addr & RS690_MC_INDEX_MASK)); 65 RADEON_WRITE(RS690_MC_INDEX, (addr & RS690_MC_INDEX_MASK));
831 return RADEON_READ(RS690_MC_DATA); 66 ret = RADEON_READ(RS690_MC_DATA);
67 RADEON_WRITE(RS690_MC_INDEX, RS690_MC_INDEX_MASK);
68 return ret;
69}
70
71static u32 IGP_READ_MCIND(drm_radeon_private_t *dev_priv, int addr)
72{
73 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690)
74 return RS690_READ_MCIND(dev_priv, addr);
75 else
76 return RS480_READ_MCIND(dev_priv, addr);
832} 77}
833 78
834u32 radeon_read_fb_location(drm_radeon_private_t *dev_priv) 79u32 radeon_read_fb_location(drm_radeon_private_t *dev_priv)
835{ 80{
836 81
837 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515) 82 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515)
838 return RADEON_READ_MCIND(dev_priv, RV515_MC_FB_LOCATION); 83 return R500_READ_MCIND(dev_priv, RV515_MC_FB_LOCATION);
839 else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) 84 else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690)
840 return RS690_READ_MCIND(dev_priv, RS690_MC_FB_LOCATION); 85 return RS690_READ_MCIND(dev_priv, RS690_MC_FB_LOCATION);
841 else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515) 86 else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515)
842 return RADEON_READ_MCIND(dev_priv, R520_MC_FB_LOCATION); 87 return R500_READ_MCIND(dev_priv, R520_MC_FB_LOCATION);
843 else 88 else
844 return RADEON_READ(RADEON_MC_FB_LOCATION); 89 return RADEON_READ(RADEON_MC_FB_LOCATION);
845} 90}
@@ -847,11 +92,11 @@ u32 radeon_read_fb_location(drm_radeon_private_t *dev_priv)
847static void radeon_write_fb_location(drm_radeon_private_t *dev_priv, u32 fb_loc) 92static void radeon_write_fb_location(drm_radeon_private_t *dev_priv, u32 fb_loc)
848{ 93{
849 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515) 94 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515)
850 RADEON_WRITE_MCIND(RV515_MC_FB_LOCATION, fb_loc); 95 R500_WRITE_MCIND(RV515_MC_FB_LOCATION, fb_loc);
851 else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) 96 else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690)
852 RS690_WRITE_MCIND(RS690_MC_FB_LOCATION, fb_loc); 97 RS690_WRITE_MCIND(RS690_MC_FB_LOCATION, fb_loc);
853 else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515) 98 else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515)
854 RADEON_WRITE_MCIND(R520_MC_FB_LOCATION, fb_loc); 99 R500_WRITE_MCIND(R520_MC_FB_LOCATION, fb_loc);
855 else 100 else
856 RADEON_WRITE(RADEON_MC_FB_LOCATION, fb_loc); 101 RADEON_WRITE(RADEON_MC_FB_LOCATION, fb_loc);
857} 102}
@@ -859,15 +104,39 @@ static void radeon_write_fb_location(drm_radeon_private_t *dev_priv, u32 fb_loc)
859static void radeon_write_agp_location(drm_radeon_private_t *dev_priv, u32 agp_loc) 104static void radeon_write_agp_location(drm_radeon_private_t *dev_priv, u32 agp_loc)
860{ 105{
861 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515) 106 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515)
862 RADEON_WRITE_MCIND(RV515_MC_AGP_LOCATION, agp_loc); 107 R500_WRITE_MCIND(RV515_MC_AGP_LOCATION, agp_loc);
863 else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) 108 else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690)
864 RS690_WRITE_MCIND(RS690_MC_AGP_LOCATION, agp_loc); 109 RS690_WRITE_MCIND(RS690_MC_AGP_LOCATION, agp_loc);
865 else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515) 110 else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515)
866 RADEON_WRITE_MCIND(R520_MC_AGP_LOCATION, agp_loc); 111 R500_WRITE_MCIND(R520_MC_AGP_LOCATION, agp_loc);
867 else 112 else
868 RADEON_WRITE(RADEON_MC_AGP_LOCATION, agp_loc); 113 RADEON_WRITE(RADEON_MC_AGP_LOCATION, agp_loc);
869} 114}
870 115
116static void radeon_write_agp_base(drm_radeon_private_t *dev_priv, u64 agp_base)
117{
118 u32 agp_base_hi = upper_32_bits(agp_base);
119 u32 agp_base_lo = agp_base & 0xffffffff;
120
121 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515) {
122 R500_WRITE_MCIND(RV515_MC_AGP_BASE, agp_base_lo);
123 R500_WRITE_MCIND(RV515_MC_AGP_BASE_2, agp_base_hi);
124 } else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) {
125 RS690_WRITE_MCIND(RS690_MC_AGP_BASE, agp_base_lo);
126 RS690_WRITE_MCIND(RS690_MC_AGP_BASE_2, agp_base_hi);
127 } else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515) {
128 R500_WRITE_MCIND(R520_MC_AGP_BASE, agp_base_lo);
129 R500_WRITE_MCIND(R520_MC_AGP_BASE_2, agp_base_hi);
130 } else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS480) {
131 RADEON_WRITE(RADEON_AGP_BASE, agp_base_lo);
132 RADEON_WRITE(RS480_AGP_BASE_2, 0);
133 } else {
134 RADEON_WRITE(RADEON_AGP_BASE, agp_base_lo);
135 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R200)
136 RADEON_WRITE(RADEON_AGP_BASE_2, agp_base_hi);
137 }
138}
139
871static int RADEON_READ_PLL(struct drm_device * dev, int addr) 140static int RADEON_READ_PLL(struct drm_device * dev, int addr)
872{ 141{
873 drm_radeon_private_t *dev_priv = dev->dev_private; 142 drm_radeon_private_t *dev_priv = dev->dev_private;
@@ -882,15 +151,6 @@ static u32 RADEON_READ_PCIE(drm_radeon_private_t *dev_priv, int addr)
882 return RADEON_READ(RADEON_PCIE_DATA); 151 return RADEON_READ(RADEON_PCIE_DATA);
883} 152}
884 153
885static u32 RADEON_READ_IGPGART(drm_radeon_private_t *dev_priv, int addr)
886{
887 u32 ret;
888 RADEON_WRITE(RADEON_IGPGART_INDEX, addr & 0x7f);
889 ret = RADEON_READ(RADEON_IGPGART_DATA);
890 RADEON_WRITE(RADEON_IGPGART_INDEX, 0x7f);
891 return ret;
892}
893
894#if RADEON_FIFO_DEBUG 154#if RADEON_FIFO_DEBUG
895static void radeon_status(drm_radeon_private_t * dev_priv) 155static void radeon_status(drm_radeon_private_t * dev_priv)
896{ 156{
@@ -925,16 +185,36 @@ static int radeon_do_pixcache_flush(drm_radeon_private_t * dev_priv)
925 185
926 dev_priv->stats.boxes |= RADEON_BOX_WAIT_IDLE; 186 dev_priv->stats.boxes |= RADEON_BOX_WAIT_IDLE;
927 187
928 tmp = RADEON_READ(RADEON_RB3D_DSTCACHE_CTLSTAT); 188 if ((dev_priv->flags & RADEON_FAMILY_MASK) <= CHIP_RV280) {
929 tmp |= RADEON_RB3D_DC_FLUSH_ALL; 189 tmp = RADEON_READ(RADEON_RB3D_DSTCACHE_CTLSTAT);
930 RADEON_WRITE(RADEON_RB3D_DSTCACHE_CTLSTAT, tmp); 190 tmp |= RADEON_RB3D_DC_FLUSH_ALL;
191 RADEON_WRITE(RADEON_RB3D_DSTCACHE_CTLSTAT, tmp);
931 192
932 for (i = 0; i < dev_priv->usec_timeout; i++) { 193 for (i = 0; i < dev_priv->usec_timeout; i++) {
933 if (!(RADEON_READ(RADEON_RB3D_DSTCACHE_CTLSTAT) 194 if (!(RADEON_READ(RADEON_RB3D_DSTCACHE_CTLSTAT)
934 & RADEON_RB3D_DC_BUSY)) { 195 & RADEON_RB3D_DC_BUSY)) {
935 return 0; 196 return 0;
197 }
198 DRM_UDELAY(1);
199 }
200 } else {
201 /* 3D */
202 tmp = RADEON_READ(R300_RB3D_DSTCACHE_CTLSTAT);
203 tmp |= RADEON_RB3D_DC_FLUSH_ALL;
204 RADEON_WRITE(R300_RB3D_DSTCACHE_CTLSTAT, tmp);
205
206 /* 2D */
207 tmp = RADEON_READ(R300_DSTCACHE_CTLSTAT);
208 tmp |= RADEON_RB3D_DC_FLUSH_ALL;
209 RADEON_WRITE(R300_DSTCACHE_CTLSTAT, tmp);
210
211 for (i = 0; i < dev_priv->usec_timeout; i++) {
212 if (!(RADEON_READ(R300_DSTCACHE_CTLSTAT)
213 & RADEON_RB3D_DC_BUSY)) {
214 return 0;
215 }
216 DRM_UDELAY(1);
936 } 217 }
937 DRM_UDELAY(1);
938 } 218 }
939 219
940#if RADEON_FIFO_DEBUG 220#if RADEON_FIFO_DEBUG
@@ -991,6 +271,50 @@ static int radeon_do_wait_for_idle(drm_radeon_private_t * dev_priv)
991 return -EBUSY; 271 return -EBUSY;
992} 272}
993 273
274static void radeon_init_pipes(drm_radeon_private_t *dev_priv)
275{
276 uint32_t gb_tile_config, gb_pipe_sel = 0;
277
278 /* RS4xx/RS6xx/R4xx/R5xx */
279 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R420) {
280 gb_pipe_sel = RADEON_READ(R400_GB_PIPE_SELECT);
281 dev_priv->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1;
282 } else {
283 /* R3xx */
284 if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300) ||
285 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R350)) {
286 dev_priv->num_gb_pipes = 2;
287 } else {
288 /* R3Vxx */
289 dev_priv->num_gb_pipes = 1;
290 }
291 }
292 DRM_INFO("Num pipes: %d\n", dev_priv->num_gb_pipes);
293
294 gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16 /*| R300_SUBPIXEL_1_16*/);
295
296 switch (dev_priv->num_gb_pipes) {
297 case 2: gb_tile_config |= R300_PIPE_COUNT_R300; break;
298 case 3: gb_tile_config |= R300_PIPE_COUNT_R420_3P; break;
299 case 4: gb_tile_config |= R300_PIPE_COUNT_R420; break;
300 default:
301 case 1: gb_tile_config |= R300_PIPE_COUNT_RV350; break;
302 }
303
304 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV515) {
305 RADEON_WRITE_PLL(R500_DYN_SCLK_PWMEM_PIPE, (1 | ((gb_pipe_sel >> 8) & 0xf) << 4));
306 RADEON_WRITE(R500_SU_REG_DEST, ((1 << dev_priv->num_gb_pipes) - 1));
307 }
308 RADEON_WRITE(R300_GB_TILE_CONFIG, gb_tile_config);
309 radeon_do_wait_for_idle(dev_priv);
310 RADEON_WRITE(R300_DST_PIPE_CONFIG, RADEON_READ(R300_DST_PIPE_CONFIG) | R300_PIPE_AUTO_CONFIG);
311 RADEON_WRITE(R300_RB2D_DSTCACHE_MODE, (RADEON_READ(R300_RB2D_DSTCACHE_MODE) |
312 R300_DC_AUTOFLUSH_ENABLE |
313 R300_DC_DC_DISABLE_IGNORE_PE));
314
315
316}
317
994/* ================================================================ 318/* ================================================================
995 * CP control, initialization 319 * CP control, initialization
996 */ 320 */
@@ -1004,8 +328,22 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
1004 radeon_do_wait_for_idle(dev_priv); 328 radeon_do_wait_for_idle(dev_priv);
1005 329
1006 RADEON_WRITE(RADEON_CP_ME_RAM_ADDR, 0); 330 RADEON_WRITE(RADEON_CP_ME_RAM_ADDR, 0);
1007 331 if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R100) ||
1008 if (dev_priv->microcode_version == UCODE_R200) { 332 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV100) ||
333 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV200) ||
334 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS100) ||
335 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS200)) {
336 DRM_INFO("Loading R100 Microcode\n");
337 for (i = 0; i < 256; i++) {
338 RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
339 R100_cp_microcode[i][1]);
340 RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
341 R100_cp_microcode[i][0]);
342 }
343 } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R200) ||
344 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV250) ||
345 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV280) ||
346 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS300)) {
1009 DRM_INFO("Loading R200 Microcode\n"); 347 DRM_INFO("Loading R200 Microcode\n");
1010 for (i = 0; i < 256; i++) { 348 for (i = 0; i < 256; i++) {
1011 RADEON_WRITE(RADEON_CP_ME_RAM_DATAH, 349 RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
@@ -1013,7 +351,11 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
1013 RADEON_WRITE(RADEON_CP_ME_RAM_DATAL, 351 RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
1014 R200_cp_microcode[i][0]); 352 R200_cp_microcode[i][0]);
1015 } 353 }
1016 } else if (dev_priv->microcode_version == UCODE_R300) { 354 } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300) ||
355 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R350) ||
356 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV350) ||
357 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV380) ||
358 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS480)) {
1017 DRM_INFO("Loading R300 Microcode\n"); 359 DRM_INFO("Loading R300 Microcode\n");
1018 for (i = 0; i < 256; i++) { 360 for (i = 0; i < 256; i++) {
1019 RADEON_WRITE(RADEON_CP_ME_RAM_DATAH, 361 RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
@@ -1021,12 +363,35 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
1021 RADEON_WRITE(RADEON_CP_ME_RAM_DATAL, 363 RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
1022 R300_cp_microcode[i][0]); 364 R300_cp_microcode[i][0]);
1023 } 365 }
1024 } else { 366 } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R420) ||
367 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV410)) {
368 DRM_INFO("Loading R400 Microcode\n");
1025 for (i = 0; i < 256; i++) { 369 for (i = 0; i < 256; i++) {
1026 RADEON_WRITE(RADEON_CP_ME_RAM_DATAH, 370 RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
1027 radeon_cp_microcode[i][1]); 371 R420_cp_microcode[i][1]);
1028 RADEON_WRITE(RADEON_CP_ME_RAM_DATAL, 372 RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
1029 radeon_cp_microcode[i][0]); 373 R420_cp_microcode[i][0]);
374 }
375 } else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) {
376 DRM_INFO("Loading RS690 Microcode\n");
377 for (i = 0; i < 256; i++) {
378 RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
379 RS690_cp_microcode[i][1]);
380 RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
381 RS690_cp_microcode[i][0]);
382 }
383 } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515) ||
384 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R520) ||
385 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV530) ||
386 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R580) ||
387 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV560) ||
388 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV570)) {
389 DRM_INFO("Loading R500 Microcode\n");
390 for (i = 0; i < 256; i++) {
391 RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
392 R520_cp_microcode[i][1]);
393 RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
394 R520_cp_microcode[i][0]);
1030 } 395 }
1031 } 396 }
1032} 397}
@@ -1121,12 +486,13 @@ static void radeon_do_cp_stop(drm_radeon_private_t * dev_priv)
1121static int radeon_do_engine_reset(struct drm_device * dev) 486static int radeon_do_engine_reset(struct drm_device * dev)
1122{ 487{
1123 drm_radeon_private_t *dev_priv = dev->dev_private; 488 drm_radeon_private_t *dev_priv = dev->dev_private;
1124 u32 clock_cntl_index, mclk_cntl, rbbm_soft_reset; 489 u32 clock_cntl_index = 0, mclk_cntl = 0, rbbm_soft_reset;
1125 DRM_DEBUG("\n"); 490 DRM_DEBUG("\n");
1126 491
1127 radeon_do_pixcache_flush(dev_priv); 492 radeon_do_pixcache_flush(dev_priv);
1128 493
1129 if ((dev_priv->flags & RADEON_FAMILY_MASK) < CHIP_RV515) { 494 if ((dev_priv->flags & RADEON_FAMILY_MASK) <= CHIP_RV410) {
495 /* may need something similar for newer chips */
1130 clock_cntl_index = RADEON_READ(RADEON_CLOCK_CNTL_INDEX); 496 clock_cntl_index = RADEON_READ(RADEON_CLOCK_CNTL_INDEX);
1131 mclk_cntl = RADEON_READ_PLL(dev, RADEON_MCLK_CNTL); 497 mclk_cntl = RADEON_READ_PLL(dev, RADEON_MCLK_CNTL);
1132 498
@@ -1137,33 +503,39 @@ static int radeon_do_engine_reset(struct drm_device * dev)
1137 RADEON_FORCEON_YCLKB | 503 RADEON_FORCEON_YCLKB |
1138 RADEON_FORCEON_MC | 504 RADEON_FORCEON_MC |
1139 RADEON_FORCEON_AIC)); 505 RADEON_FORCEON_AIC));
506 }
1140 507
1141 rbbm_soft_reset = RADEON_READ(RADEON_RBBM_SOFT_RESET); 508 rbbm_soft_reset = RADEON_READ(RADEON_RBBM_SOFT_RESET);
1142 509
1143 RADEON_WRITE(RADEON_RBBM_SOFT_RESET, (rbbm_soft_reset | 510 RADEON_WRITE(RADEON_RBBM_SOFT_RESET, (rbbm_soft_reset |
1144 RADEON_SOFT_RESET_CP | 511 RADEON_SOFT_RESET_CP |
1145 RADEON_SOFT_RESET_HI | 512 RADEON_SOFT_RESET_HI |
1146 RADEON_SOFT_RESET_SE | 513 RADEON_SOFT_RESET_SE |
1147 RADEON_SOFT_RESET_RE | 514 RADEON_SOFT_RESET_RE |
1148 RADEON_SOFT_RESET_PP | 515 RADEON_SOFT_RESET_PP |
1149 RADEON_SOFT_RESET_E2 | 516 RADEON_SOFT_RESET_E2 |
1150 RADEON_SOFT_RESET_RB)); 517 RADEON_SOFT_RESET_RB));
1151 RADEON_READ(RADEON_RBBM_SOFT_RESET); 518 RADEON_READ(RADEON_RBBM_SOFT_RESET);
1152 RADEON_WRITE(RADEON_RBBM_SOFT_RESET, (rbbm_soft_reset & 519 RADEON_WRITE(RADEON_RBBM_SOFT_RESET, (rbbm_soft_reset &
1153 ~(RADEON_SOFT_RESET_CP | 520 ~(RADEON_SOFT_RESET_CP |
1154 RADEON_SOFT_RESET_HI | 521 RADEON_SOFT_RESET_HI |
1155 RADEON_SOFT_RESET_SE | 522 RADEON_SOFT_RESET_SE |
1156 RADEON_SOFT_RESET_RE | 523 RADEON_SOFT_RESET_RE |
1157 RADEON_SOFT_RESET_PP | 524 RADEON_SOFT_RESET_PP |
1158 RADEON_SOFT_RESET_E2 | 525 RADEON_SOFT_RESET_E2 |
1159 RADEON_SOFT_RESET_RB))); 526 RADEON_SOFT_RESET_RB)));
1160 RADEON_READ(RADEON_RBBM_SOFT_RESET); 527 RADEON_READ(RADEON_RBBM_SOFT_RESET);
1161 528
529 if ((dev_priv->flags & RADEON_FAMILY_MASK) <= CHIP_RV410) {
1162 RADEON_WRITE_PLL(RADEON_MCLK_CNTL, mclk_cntl); 530 RADEON_WRITE_PLL(RADEON_MCLK_CNTL, mclk_cntl);
1163 RADEON_WRITE(RADEON_CLOCK_CNTL_INDEX, clock_cntl_index); 531 RADEON_WRITE(RADEON_CLOCK_CNTL_INDEX, clock_cntl_index);
1164 RADEON_WRITE(RADEON_RBBM_SOFT_RESET, rbbm_soft_reset); 532 RADEON_WRITE(RADEON_RBBM_SOFT_RESET, rbbm_soft_reset);
1165 } 533 }
1166 534
535 /* setup the raster pipes */
536 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R300)
537 radeon_init_pipes(dev_priv);
538
1167 /* Reset the CP ring */ 539 /* Reset the CP ring */
1168 radeon_do_cp_reset(dev_priv); 540 radeon_do_cp_reset(dev_priv);
1169 541
@@ -1194,7 +566,8 @@ static void radeon_cp_init_ring_buffer(struct drm_device * dev,
1194 566
1195#if __OS_HAS_AGP 567#if __OS_HAS_AGP
1196 if (dev_priv->flags & RADEON_IS_AGP) { 568 if (dev_priv->flags & RADEON_IS_AGP) {
1197 RADEON_WRITE(RADEON_AGP_BASE, (unsigned int)dev->agp->base); 569 radeon_write_agp_base(dev_priv, dev->agp->base);
570
1198 radeon_write_agp_location(dev_priv, 571 radeon_write_agp_location(dev_priv,
1199 (((dev_priv->gart_vm_start - 1 + 572 (((dev_priv->gart_vm_start - 1 +
1200 dev_priv->gart_size) & 0xffff0000) | 573 dev_priv->gart_size) & 0xffff0000) |
@@ -1339,102 +712,70 @@ static void radeon_test_writeback(drm_radeon_private_t * dev_priv)
1339/* Enable or disable IGP GART on the chip */ 712/* Enable or disable IGP GART on the chip */
1340static void radeon_set_igpgart(drm_radeon_private_t * dev_priv, int on) 713static void radeon_set_igpgart(drm_radeon_private_t * dev_priv, int on)
1341{ 714{
1342 u32 temp, tmp;
1343
1344 tmp = RADEON_READ(RADEON_AIC_CNTL);
1345 if (on) {
1346 DRM_DEBUG("programming igpgart %08X %08lX %08X\n",
1347 dev_priv->gart_vm_start,
1348 (long)dev_priv->gart_info.bus_addr,
1349 dev_priv->gart_size);
1350
1351 RADEON_WRITE_IGPGART(RADEON_IGPGART_UNK_18, 0x1000);
1352 RADEON_WRITE_IGPGART(RADEON_IGPGART_ENABLE, 0x1);
1353 RADEON_WRITE_IGPGART(RADEON_IGPGART_CTRL, 0x42040800);
1354 RADEON_WRITE_IGPGART(RADEON_IGPGART_BASE_ADDR,
1355 dev_priv->gart_info.bus_addr);
1356
1357 temp = RADEON_READ_IGPGART(dev_priv, RADEON_IGPGART_UNK_39);
1358 RADEON_WRITE_IGPGART(RADEON_IGPGART_UNK_39, temp);
1359
1360 RADEON_WRITE(RADEON_AGP_BASE, (unsigned int)dev_priv->gart_vm_start);
1361 dev_priv->gart_size = 32*1024*1024;
1362 radeon_write_agp_location(dev_priv,
1363 (((dev_priv->gart_vm_start - 1 +
1364 dev_priv->gart_size) & 0xffff0000) |
1365 (dev_priv->gart_vm_start >> 16)));
1366
1367 temp = RADEON_READ_IGPGART(dev_priv, RADEON_IGPGART_ENABLE);
1368 RADEON_WRITE_IGPGART(RADEON_IGPGART_ENABLE, temp);
1369
1370 RADEON_READ_IGPGART(dev_priv, RADEON_IGPGART_FLUSH);
1371 RADEON_WRITE_IGPGART(RADEON_IGPGART_FLUSH, 0x1);
1372 RADEON_READ_IGPGART(dev_priv, RADEON_IGPGART_FLUSH);
1373 RADEON_WRITE_IGPGART(RADEON_IGPGART_FLUSH, 0x0);
1374 }
1375}
1376
1377/* Enable or disable RS690 GART on the chip */
1378static void radeon_set_rs690gart(drm_radeon_private_t *dev_priv, int on)
1379{
1380 u32 temp; 715 u32 temp;
1381 716
1382 if (on) { 717 if (on) {
1383 DRM_DEBUG("programming rs690 gart %08X %08lX %08X\n", 718 DRM_DEBUG("programming igp gart %08X %08lX %08X\n",
1384 dev_priv->gart_vm_start, 719 dev_priv->gart_vm_start,
1385 (long)dev_priv->gart_info.bus_addr, 720 (long)dev_priv->gart_info.bus_addr,
1386 dev_priv->gart_size); 721 dev_priv->gart_size);
1387 722
1388 temp = RS690_READ_MCIND(dev_priv, RS690_MC_MISC_CNTL); 723 temp = IGP_READ_MCIND(dev_priv, RS480_MC_MISC_CNTL);
1389 RS690_WRITE_MCIND(RS690_MC_MISC_CNTL, 0x5000); 724 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690)
725 IGP_WRITE_MCIND(RS480_MC_MISC_CNTL, (RS480_GART_INDEX_REG_EN |
726 RS690_BLOCK_GFX_D3_EN));
727 else
728 IGP_WRITE_MCIND(RS480_MC_MISC_CNTL, RS480_GART_INDEX_REG_EN);
1390 729
1391 RS690_WRITE_MCIND(RS690_MC_AGP_SIZE, 730 IGP_WRITE_MCIND(RS480_AGP_ADDRESS_SPACE_SIZE, (RS480_GART_EN |
1392 RS690_MC_GART_EN | RS690_MC_AGP_SIZE_32MB); 731 RS480_VA_SIZE_32MB));
1393 732
1394 temp = RS690_READ_MCIND(dev_priv, RS690_MC_GART_FEATURE_ID); 733 temp = IGP_READ_MCIND(dev_priv, RS480_GART_FEATURE_ID);
1395 RS690_WRITE_MCIND(RS690_MC_GART_FEATURE_ID, 0x42040800); 734 IGP_WRITE_MCIND(RS480_GART_FEATURE_ID, (RS480_HANG_EN |
735 RS480_TLB_ENABLE |
736 RS480_GTW_LAC_EN |
737 RS480_1LEVEL_GART));
1396 738
1397 RS690_WRITE_MCIND(RS690_MC_GART_BASE, 739 temp = dev_priv->gart_info.bus_addr & 0xfffff000;
1398 dev_priv->gart_info.bus_addr); 740 temp |= (upper_32_bits(dev_priv->gart_info.bus_addr) & 0xff) << 4;
741 IGP_WRITE_MCIND(RS480_GART_BASE, temp);
1399 742
1400 temp = RS690_READ_MCIND(dev_priv, RS690_MC_AGP_MODE_CONTROL); 743 temp = IGP_READ_MCIND(dev_priv, RS480_AGP_MODE_CNTL);
1401 RS690_WRITE_MCIND(RS690_MC_AGP_MODE_CONTROL, 0x01400000); 744 IGP_WRITE_MCIND(RS480_AGP_MODE_CNTL, ((1 << RS480_REQ_TYPE_SNOOP_SHIFT) |
745 RS480_REQ_TYPE_SNOOP_DIS));
1402 746
1403 RS690_WRITE_MCIND(RS690_MC_AGP_BASE, 747 radeon_write_agp_base(dev_priv, dev_priv->gart_vm_start);
1404 (unsigned int)dev_priv->gart_vm_start);
1405 748
1406 dev_priv->gart_size = 32*1024*1024; 749 dev_priv->gart_size = 32*1024*1024;
1407 temp = (((dev_priv->gart_vm_start - 1 + dev_priv->gart_size) & 750 temp = (((dev_priv->gart_vm_start - 1 + dev_priv->gart_size) &
1408 0xffff0000) | (dev_priv->gart_vm_start >> 16)); 751 0xffff0000) | (dev_priv->gart_vm_start >> 16));
1409 752
1410 RS690_WRITE_MCIND(RS690_MC_AGP_LOCATION, temp); 753 radeon_write_agp_location(dev_priv, temp);
1411 754
1412 temp = RS690_READ_MCIND(dev_priv, RS690_MC_AGP_SIZE); 755 temp = IGP_READ_MCIND(dev_priv, RS480_AGP_ADDRESS_SPACE_SIZE);
1413 RS690_WRITE_MCIND(RS690_MC_AGP_SIZE, 756 IGP_WRITE_MCIND(RS480_AGP_ADDRESS_SPACE_SIZE, (RS480_GART_EN |
1414 RS690_MC_GART_EN | RS690_MC_AGP_SIZE_32MB); 757 RS480_VA_SIZE_32MB));
1415 758
1416 do { 759 do {
1417 temp = RS690_READ_MCIND(dev_priv, RS690_MC_GART_CACHE_CNTL); 760 temp = IGP_READ_MCIND(dev_priv, RS480_GART_CACHE_CNTRL);
1418 if ((temp & RS690_MC_GART_CLEAR_STATUS) == 761 if ((temp & RS480_GART_CACHE_INVALIDATE) == 0)
1419 RS690_MC_GART_CLEAR_DONE)
1420 break; 762 break;
1421 DRM_UDELAY(1); 763 DRM_UDELAY(1);
1422 } while (1); 764 } while (1);
1423 765
1424 RS690_WRITE_MCIND(RS690_MC_GART_CACHE_CNTL, 766 IGP_WRITE_MCIND(RS480_GART_CACHE_CNTRL,
1425 RS690_MC_GART_CC_CLEAR); 767 RS480_GART_CACHE_INVALIDATE);
768
1426 do { 769 do {
1427 temp = RS690_READ_MCIND(dev_priv, RS690_MC_GART_CACHE_CNTL); 770 temp = IGP_READ_MCIND(dev_priv, RS480_GART_CACHE_CNTRL);
1428 if ((temp & RS690_MC_GART_CLEAR_STATUS) == 771 if ((temp & RS480_GART_CACHE_INVALIDATE) == 0)
1429 RS690_MC_GART_CLEAR_DONE)
1430 break; 772 break;
1431 DRM_UDELAY(1); 773 DRM_UDELAY(1);
1432 } while (1); 774 } while (1);
1433 775
1434 RS690_WRITE_MCIND(RS690_MC_GART_CACHE_CNTL, 776 IGP_WRITE_MCIND(RS480_GART_CACHE_CNTRL, 0);
1435 RS690_MC_GART_CC_NO_CHANGE);
1436 } else { 777 } else {
1437 RS690_WRITE_MCIND(RS690_MC_AGP_SIZE, RS690_MC_GART_DIS); 778 IGP_WRITE_MCIND(RS480_AGP_ADDRESS_SPACE_SIZE, 0);
1438 } 779 }
1439} 780}
1440 781
@@ -1472,12 +813,8 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on)
1472{ 813{
1473 u32 tmp; 814 u32 tmp;
1474 815
1475 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) { 816 if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) ||
1476 radeon_set_rs690gart(dev_priv, on); 817 (dev_priv->flags & RADEON_IS_IGPGART)) {
1477 return;
1478 }
1479
1480 if (dev_priv->flags & RADEON_IS_IGPGART) {
1481 radeon_set_igpgart(dev_priv, on); 818 radeon_set_igpgart(dev_priv, on);
1482 return; 819 return;
1483 } 820 }
@@ -1951,6 +1288,7 @@ static int radeon_do_resume_cp(struct drm_device * dev)
1951 radeon_cp_init_ring_buffer(dev, dev_priv); 1288 radeon_cp_init_ring_buffer(dev, dev_priv);
1952 1289
1953 radeon_do_engine_reset(dev); 1290 radeon_do_engine_reset(dev);
1291 radeon_enable_interrupt(dev);
1954 1292
1955 DRM_DEBUG("radeon_do_resume_cp() complete\n"); 1293 DRM_DEBUG("radeon_do_resume_cp() complete\n");
1956 1294
diff --git a/drivers/char/drm/radeon_drm.h b/drivers/char/drm/radeon_drm.h
index aab82e121e07..73ff51f12311 100644
--- a/drivers/char/drm/radeon_drm.h
+++ b/drivers/char/drm/radeon_drm.h
@@ -240,6 +240,7 @@ typedef union {
240# define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN 0x8 240# define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN 0x8
241 241
242#define R300_CMD_SCRATCH 8 242#define R300_CMD_SCRATCH 8
243#define R300_CMD_R500FP 9
243 244
244typedef union { 245typedef union {
245 unsigned int u; 246 unsigned int u;
@@ -268,6 +269,9 @@ typedef union {
268 struct { 269 struct {
269 unsigned char cmd_type, reg, n_bufs, flags; 270 unsigned char cmd_type, reg, n_bufs, flags;
270 } scratch; 271 } scratch;
272 struct {
273 unsigned char cmd_type, count, adrlo, adrhi_flags;
274 } r500fp;
271} drm_r300_cmd_header_t; 275} drm_r300_cmd_header_t;
272 276
273#define RADEON_FRONT 0x1 277#define RADEON_FRONT 0x1
@@ -278,6 +282,9 @@ typedef union {
278#define RADEON_USE_HIERZ 0x40000000 282#define RADEON_USE_HIERZ 0x40000000
279#define RADEON_USE_COMP_ZBUF 0x20000000 283#define RADEON_USE_COMP_ZBUF 0x20000000
280 284
285#define R500FP_CONSTANT_TYPE (1 << 1)
286#define R500FP_CONSTANT_CLAMP (1 << 2)
287
281/* Primitive types 288/* Primitive types
282 */ 289 */
283#define RADEON_POINTS 0x1 290#define RADEON_POINTS 0x1
@@ -669,6 +676,7 @@ typedef struct drm_radeon_indirect {
669#define RADEON_PARAM_CARD_TYPE 12 676#define RADEON_PARAM_CARD_TYPE 12
670#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */ 677#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */
671#define RADEON_PARAM_FB_LOCATION 14 /* FB location */ 678#define RADEON_PARAM_FB_LOCATION 14 /* FB location */
679#define RADEON_PARAM_NUM_GB_PIPES 15 /* num GB pipes */
672 680
673typedef struct drm_radeon_getparam { 681typedef struct drm_radeon_getparam {
674 int param; 682 int param;
diff --git a/drivers/char/drm/radeon_drv.h b/drivers/char/drm/radeon_drv.h
index 173ae620223a..3f0eca957aa7 100644
--- a/drivers/char/drm/radeon_drv.h
+++ b/drivers/char/drm/radeon_drv.h
@@ -38,7 +38,7 @@
38 38
39#define DRIVER_NAME "radeon" 39#define DRIVER_NAME "radeon"
40#define DRIVER_DESC "ATI Radeon" 40#define DRIVER_DESC "ATI Radeon"
41#define DRIVER_DATE "20060524" 41#define DRIVER_DATE "20080528"
42 42
43/* Interface history: 43/* Interface history:
44 * 44 *
@@ -98,9 +98,10 @@
98 * 1.26- Add support for variable size PCI(E) gart aperture 98 * 1.26- Add support for variable size PCI(E) gart aperture
99 * 1.27- Add support for IGP GART 99 * 1.27- Add support for IGP GART
100 * 1.28- Add support for VBL on CRTC2 100 * 1.28- Add support for VBL on CRTC2
101 * 1.29- R500 3D cmd buffer support
101 */ 102 */
102#define DRIVER_MAJOR 1 103#define DRIVER_MAJOR 1
103#define DRIVER_MINOR 28 104#define DRIVER_MINOR 29
104#define DRIVER_PATCHLEVEL 0 105#define DRIVER_PATCHLEVEL 0
105 106
106/* 107/*
@@ -122,7 +123,7 @@ enum radeon_family {
122 CHIP_RV380, 123 CHIP_RV380,
123 CHIP_R420, 124 CHIP_R420,
124 CHIP_RV410, 125 CHIP_RV410,
125 CHIP_RS400, 126 CHIP_RS480,
126 CHIP_RS690, 127 CHIP_RS690,
127 CHIP_RV515, 128 CHIP_RV515,
128 CHIP_R520, 129 CHIP_R520,
@@ -294,6 +295,7 @@ typedef struct drm_radeon_private {
294 int vblank_crtc; 295 int vblank_crtc;
295 uint32_t irq_enable_reg; 296 uint32_t irq_enable_reg;
296 int irq_enabled; 297 int irq_enabled;
298 uint32_t r500_disp_irq_reg;
297 299
298 struct radeon_surface surfaces[RADEON_MAX_SURFACES]; 300 struct radeon_surface surfaces[RADEON_MAX_SURFACES];
299 struct radeon_virt_surface virt_surfaces[2 * RADEON_MAX_SURFACES]; 301 struct radeon_virt_surface virt_surfaces[2 * RADEON_MAX_SURFACES];
@@ -307,6 +309,8 @@ typedef struct drm_radeon_private {
307 /* starting from here on, data is preserved accross an open */ 309 /* starting from here on, data is preserved accross an open */
308 uint32_t flags; /* see radeon_chip_flags */ 310 uint32_t flags; /* see radeon_chip_flags */
309 unsigned long fb_aper_offset; 311 unsigned long fb_aper_offset;
312
313 int num_gb_pipes;
310} drm_radeon_private_t; 314} drm_radeon_private_t;
311 315
312typedef struct drm_radeon_buf_priv { 316typedef struct drm_radeon_buf_priv {
@@ -382,6 +386,7 @@ extern irqreturn_t radeon_driver_irq_handler(DRM_IRQ_ARGS);
382extern void radeon_driver_irq_preinstall(struct drm_device * dev); 386extern void radeon_driver_irq_preinstall(struct drm_device * dev);
383extern void radeon_driver_irq_postinstall(struct drm_device * dev); 387extern void radeon_driver_irq_postinstall(struct drm_device * dev);
384extern void radeon_driver_irq_uninstall(struct drm_device * dev); 388extern void radeon_driver_irq_uninstall(struct drm_device * dev);
389extern void radeon_enable_interrupt(struct drm_device *dev);
385extern int radeon_vblank_crtc_get(struct drm_device *dev); 390extern int radeon_vblank_crtc_get(struct drm_device *dev);
386extern int radeon_vblank_crtc_set(struct drm_device *dev, int64_t value); 391extern int radeon_vblank_crtc_set(struct drm_device *dev, int64_t value);
387 392
@@ -444,13 +449,13 @@ extern int r300_do_cp_cmdbuf(struct drm_device * dev,
444#define RADEON_PCIE_DATA 0x0034 449#define RADEON_PCIE_DATA 0x0034
445#define RADEON_PCIE_TX_GART_CNTL 0x10 450#define RADEON_PCIE_TX_GART_CNTL 0x10
446# define RADEON_PCIE_TX_GART_EN (1 << 0) 451# define RADEON_PCIE_TX_GART_EN (1 << 0)
447# define RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_PASS_THRU (0<<1) 452# define RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_PASS_THRU (0 << 1)
448# define RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_CLAMP_LO (1<<1) 453# define RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_CLAMP_LO (1 << 1)
449# define RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_DISCARD (3<<1) 454# define RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_DISCARD (3 << 1)
450# define RADEON_PCIE_TX_GART_MODE_32_128_CACHE (0<<3) 455# define RADEON_PCIE_TX_GART_MODE_32_128_CACHE (0 << 3)
451# define RADEON_PCIE_TX_GART_MODE_8_4_128_CACHE (1<<3) 456# define RADEON_PCIE_TX_GART_MODE_8_4_128_CACHE (1 << 3)
452# define RADEON_PCIE_TX_GART_CHK_RW_VALID_EN (1<<5) 457# define RADEON_PCIE_TX_GART_CHK_RW_VALID_EN (1 << 5)
453# define RADEON_PCIE_TX_GART_INVALIDATE_TLB (1<<8) 458# define RADEON_PCIE_TX_GART_INVALIDATE_TLB (1 << 8)
454#define RADEON_PCIE_TX_DISCARD_RD_ADDR_LO 0x11 459#define RADEON_PCIE_TX_DISCARD_RD_ADDR_LO 0x11
455#define RADEON_PCIE_TX_DISCARD_RD_ADDR_HI 0x12 460#define RADEON_PCIE_TX_DISCARD_RD_ADDR_HI 0x12
456#define RADEON_PCIE_TX_GART_BASE 0x13 461#define RADEON_PCIE_TX_GART_BASE 0x13
@@ -459,14 +464,9 @@ extern int r300_do_cp_cmdbuf(struct drm_device * dev,
459#define RADEON_PCIE_TX_GART_END_LO 0x16 464#define RADEON_PCIE_TX_GART_END_LO 0x16
460#define RADEON_PCIE_TX_GART_END_HI 0x17 465#define RADEON_PCIE_TX_GART_END_HI 0x17
461 466
462#define RADEON_IGPGART_INDEX 0x168 467#define RS480_NB_MC_INDEX 0x168
463#define RADEON_IGPGART_DATA 0x16c 468# define RS480_NB_MC_IND_WR_EN (1 << 8)
464#define RADEON_IGPGART_UNK_18 0x18 469#define RS480_NB_MC_DATA 0x16c
465#define RADEON_IGPGART_CTRL 0x2b
466#define RADEON_IGPGART_BASE_ADDR 0x2c
467#define RADEON_IGPGART_FLUSH 0x2e
468#define RADEON_IGPGART_ENABLE 0x38
469#define RADEON_IGPGART_UNK_39 0x39
470 470
471#define RS690_MC_INDEX 0x78 471#define RS690_MC_INDEX 0x78
472# define RS690_MC_INDEX_MASK 0x1ff 472# define RS690_MC_INDEX_MASK 0x1ff
@@ -474,45 +474,91 @@ extern int r300_do_cp_cmdbuf(struct drm_device * dev,
474# define RS690_MC_INDEX_WR_ACK 0x7f 474# define RS690_MC_INDEX_WR_ACK 0x7f
475#define RS690_MC_DATA 0x7c 475#define RS690_MC_DATA 0x7c
476 476
477#define RS690_MC_MISC_CNTL 0x18 477/* MC indirect registers */
478#define RS690_MC_GART_FEATURE_ID 0x2b 478#define RS480_MC_MISC_CNTL 0x18
479#define RS690_MC_GART_BASE 0x2c 479# define RS480_DISABLE_GTW (1 << 1)
480#define RS690_MC_GART_CACHE_CNTL 0x2e 480/* switch between MCIND GART and MM GART registers. 0 = mmgart, 1 = mcind gart */
481# define RS690_MC_GART_CC_NO_CHANGE 0x0 481# define RS480_GART_INDEX_REG_EN (1 << 12)
482# define RS690_MC_GART_CC_CLEAR 0x1 482# define RS690_BLOCK_GFX_D3_EN (1 << 14)
483# define RS690_MC_GART_CLEAR_STATUS (1 << 1) 483#define RS480_K8_FB_LOCATION 0x1e
484# define RS690_MC_GART_CLEAR_DONE (0 << 1) 484#define RS480_GART_FEATURE_ID 0x2b
485# define RS690_MC_GART_CLEAR_PENDING (1 << 1) 485# define RS480_HANG_EN (1 << 11)
486#define RS690_MC_AGP_SIZE 0x38 486# define RS480_TLB_ENABLE (1 << 18)
487# define RS690_MC_GART_DIS 0x0 487# define RS480_P2P_ENABLE (1 << 19)
488# define RS690_MC_GART_EN 0x1 488# define RS480_GTW_LAC_EN (1 << 25)
489# define RS690_MC_AGP_SIZE_32MB (0 << 1) 489# define RS480_2LEVEL_GART (0 << 30)
490# define RS690_MC_AGP_SIZE_64MB (1 << 1) 490# define RS480_1LEVEL_GART (1 << 30)
491# define RS690_MC_AGP_SIZE_128MB (2 << 1) 491# define RS480_PDC_EN (1 << 31)
492# define RS690_MC_AGP_SIZE_256MB (3 << 1) 492#define RS480_GART_BASE 0x2c
493# define RS690_MC_AGP_SIZE_512MB (4 << 1) 493#define RS480_GART_CACHE_CNTRL 0x2e
494# define RS690_MC_AGP_SIZE_1GB (5 << 1) 494# define RS480_GART_CACHE_INVALIDATE (1 << 0) /* wait for it to clear */
495# define RS690_MC_AGP_SIZE_2GB (6 << 1) 495#define RS480_AGP_ADDRESS_SPACE_SIZE 0x38
496#define RS690_MC_AGP_MODE_CONTROL 0x39 496# define RS480_GART_EN (1 << 0)
497# define RS480_VA_SIZE_32MB (0 << 1)
498# define RS480_VA_SIZE_64MB (1 << 1)
499# define RS480_VA_SIZE_128MB (2 << 1)
500# define RS480_VA_SIZE_256MB (3 << 1)
501# define RS480_VA_SIZE_512MB (4 << 1)
502# define RS480_VA_SIZE_1GB (5 << 1)
503# define RS480_VA_SIZE_2GB (6 << 1)
504#define RS480_AGP_MODE_CNTL 0x39
505# define RS480_POST_GART_Q_SIZE (1 << 18)
506# define RS480_NONGART_SNOOP (1 << 19)
507# define RS480_AGP_RD_BUF_SIZE (1 << 20)
508# define RS480_REQ_TYPE_SNOOP_SHIFT 22
509# define RS480_REQ_TYPE_SNOOP_MASK 0x3
510# define RS480_REQ_TYPE_SNOOP_DIS (1 << 24)
511#define RS480_MC_MISC_UMA_CNTL 0x5f
512#define RS480_MC_MCLK_CNTL 0x7a
513#define RS480_MC_UMA_DUALCH_CNTL 0x86
514
497#define RS690_MC_FB_LOCATION 0x100 515#define RS690_MC_FB_LOCATION 0x100
498#define RS690_MC_AGP_LOCATION 0x101 516#define RS690_MC_AGP_LOCATION 0x101
499#define RS690_MC_AGP_BASE 0x102 517#define RS690_MC_AGP_BASE 0x102
518#define RS690_MC_AGP_BASE_2 0x103
500 519
501#define R520_MC_IND_INDEX 0x70 520#define R520_MC_IND_INDEX 0x70
502#define R520_MC_IND_WR_EN (1<<24) 521#define R520_MC_IND_WR_EN (1 << 24)
503#define R520_MC_IND_DATA 0x74 522#define R520_MC_IND_DATA 0x74
504 523
505#define RV515_MC_FB_LOCATION 0x01 524#define RV515_MC_FB_LOCATION 0x01
506#define RV515_MC_AGP_LOCATION 0x02 525#define RV515_MC_AGP_LOCATION 0x02
526#define RV515_MC_AGP_BASE 0x03
527#define RV515_MC_AGP_BASE_2 0x04
507 528
508#define R520_MC_FB_LOCATION 0x04 529#define R520_MC_FB_LOCATION 0x04
509#define R520_MC_AGP_LOCATION 0x05 530#define R520_MC_AGP_LOCATION 0x05
531#define R520_MC_AGP_BASE 0x06
532#define R520_MC_AGP_BASE_2 0x07
510 533
511#define RADEON_MPP_TB_CONFIG 0x01c0 534#define RADEON_MPP_TB_CONFIG 0x01c0
512#define RADEON_MEM_CNTL 0x0140 535#define RADEON_MEM_CNTL 0x0140
513#define RADEON_MEM_SDRAM_MODE_REG 0x0158 536#define RADEON_MEM_SDRAM_MODE_REG 0x0158
537#define RADEON_AGP_BASE_2 0x015c /* r200+ only */
538#define RS480_AGP_BASE_2 0x0164
514#define RADEON_AGP_BASE 0x0170 539#define RADEON_AGP_BASE 0x0170
515 540
541/* pipe config regs */
542#define R400_GB_PIPE_SELECT 0x402c
543#define R500_DYN_SCLK_PWMEM_PIPE 0x000d /* PLL */
544#define R500_SU_REG_DEST 0x42c8
545#define R300_GB_TILE_CONFIG 0x4018
546# define R300_ENABLE_TILING (1 << 0)
547# define R300_PIPE_COUNT_RV350 (0 << 1)
548# define R300_PIPE_COUNT_R300 (3 << 1)
549# define R300_PIPE_COUNT_R420_3P (6 << 1)
550# define R300_PIPE_COUNT_R420 (7 << 1)
551# define R300_TILE_SIZE_8 (0 << 4)
552# define R300_TILE_SIZE_16 (1 << 4)
553# define R300_TILE_SIZE_32 (2 << 4)
554# define R300_SUBPIXEL_1_12 (0 << 16)
555# define R300_SUBPIXEL_1_16 (1 << 16)
556#define R300_DST_PIPE_CONFIG 0x170c
557# define R300_PIPE_AUTO_CONFIG (1 << 31)
558#define R300_RB2D_DSTCACHE_MODE 0x3428
559# define R300_DC_AUTOFLUSH_ENABLE (1 << 8)
560# define R300_DC_DC_DISABLE_IGNORE_PE (1 << 17)
561
516#define RADEON_RB3D_COLOROFFSET 0x1c40 562#define RADEON_RB3D_COLOROFFSET 0x1c40
517#define RADEON_RB3D_COLORPITCH 0x1c48 563#define RADEON_RB3D_COLORPITCH 0x1c48
518 564
@@ -616,11 +662,12 @@ extern int r300_do_cp_cmdbuf(struct drm_device * dev,
616#define RADEON_PP_TXFILTER_1 0x1c6c 662#define RADEON_PP_TXFILTER_1 0x1c6c
617#define RADEON_PP_TXFILTER_2 0x1c84 663#define RADEON_PP_TXFILTER_2 0x1c84
618 664
619#define RADEON_RB2D_DSTCACHE_CTLSTAT 0x342c 665#define R300_RB2D_DSTCACHE_CTLSTAT 0x342c /* use R300_DSTCACHE_CTLSTAT */
620# define RADEON_RB2D_DC_FLUSH (3 << 0) 666#define R300_DSTCACHE_CTLSTAT 0x1714
621# define RADEON_RB2D_DC_FREE (3 << 2) 667# define R300_RB2D_DC_FLUSH (3 << 0)
622# define RADEON_RB2D_DC_FLUSH_ALL 0xf 668# define R300_RB2D_DC_FREE (3 << 2)
623# define RADEON_RB2D_DC_BUSY (1 << 31) 669# define R300_RB2D_DC_FLUSH_ALL 0xf
670# define R300_RB2D_DC_BUSY (1 << 31)
624#define RADEON_RB3D_CNTL 0x1c3c 671#define RADEON_RB3D_CNTL 0x1c3c
625# define RADEON_ALPHA_BLEND_ENABLE (1 << 0) 672# define RADEON_ALPHA_BLEND_ENABLE (1 << 0)
626# define RADEON_PLANE_MASK_ENABLE (1 << 1) 673# define RADEON_PLANE_MASK_ENABLE (1 << 1)
@@ -643,11 +690,18 @@ extern int r300_do_cp_cmdbuf(struct drm_device * dev,
643# define RADEON_RB3D_ZC_FREE (1 << 2) 690# define RADEON_RB3D_ZC_FREE (1 << 2)
644# define RADEON_RB3D_ZC_FLUSH_ALL 0x5 691# define RADEON_RB3D_ZC_FLUSH_ALL 0x5
645# define RADEON_RB3D_ZC_BUSY (1 << 31) 692# define RADEON_RB3D_ZC_BUSY (1 << 31)
693#define R300_ZB_ZCACHE_CTLSTAT 0x4f18
694# define R300_ZC_FLUSH (1 << 0)
695# define R300_ZC_FREE (1 << 1)
696# define R300_ZC_FLUSH_ALL 0x3
697# define R300_ZC_BUSY (1 << 31)
646#define RADEON_RB3D_DSTCACHE_CTLSTAT 0x325c 698#define RADEON_RB3D_DSTCACHE_CTLSTAT 0x325c
647# define RADEON_RB3D_DC_FLUSH (3 << 0) 699# define RADEON_RB3D_DC_FLUSH (3 << 0)
648# define RADEON_RB3D_DC_FREE (3 << 2) 700# define RADEON_RB3D_DC_FREE (3 << 2)
649# define RADEON_RB3D_DC_FLUSH_ALL 0xf 701# define RADEON_RB3D_DC_FLUSH_ALL 0xf
650# define RADEON_RB3D_DC_BUSY (1 << 31) 702# define RADEON_RB3D_DC_BUSY (1 << 31)
703#define R300_RB3D_DSTCACHE_CTLSTAT 0x4e4c
704# define R300_RB3D_DC_FINISH (1 << 4)
651#define RADEON_RB3D_ZSTENCILCNTL 0x1c2c 705#define RADEON_RB3D_ZSTENCILCNTL 0x1c2c
652# define RADEON_Z_TEST_MASK (7 << 4) 706# define RADEON_Z_TEST_MASK (7 << 4)
653# define RADEON_Z_TEST_ALWAYS (7 << 4) 707# define RADEON_Z_TEST_ALWAYS (7 << 4)
@@ -1057,6 +1111,31 @@ extern int r300_do_cp_cmdbuf(struct drm_device * dev,
1057 1111
1058#define R200_VAP_PVS_CNTL_1 0x22D0 1112#define R200_VAP_PVS_CNTL_1 0x22D0
1059 1113
1114#define R500_D1CRTC_STATUS 0x609c
1115#define R500_D2CRTC_STATUS 0x689c
1116#define R500_CRTC_V_BLANK (1<<0)
1117
1118#define R500_D1CRTC_FRAME_COUNT 0x60a4
1119#define R500_D2CRTC_FRAME_COUNT 0x68a4
1120
1121#define R500_D1MODE_V_COUNTER 0x6530
1122#define R500_D2MODE_V_COUNTER 0x6d30
1123
1124#define R500_D1MODE_VBLANK_STATUS 0x6534
1125#define R500_D2MODE_VBLANK_STATUS 0x6d34
1126#define R500_VBLANK_OCCURED (1<<0)
1127#define R500_VBLANK_ACK (1<<4)
1128#define R500_VBLANK_STAT (1<<12)
1129#define R500_VBLANK_INT (1<<16)
1130
1131#define R500_DxMODE_INT_MASK 0x6540
1132#define R500_D1MODE_INT_MASK (1<<0)
1133#define R500_D2MODE_INT_MASK (1<<8)
1134
1135#define R500_DISP_INTERRUPT_STATUS 0x7edc
1136#define R500_D1_VBLANK_INTERRUPT (1 << 4)
1137#define R500_D2_VBLANK_INTERRUPT (1 << 5)
1138
1060/* Constants */ 1139/* Constants */
1061#define RADEON_MAX_USEC_TIMEOUT 100000 /* 100 ms */ 1140#define RADEON_MAX_USEC_TIMEOUT 100000 /* 100 ms */
1062 1141
@@ -1078,42 +1157,50 @@ extern int r300_do_cp_cmdbuf(struct drm_device * dev,
1078#define RADEON_READ8(reg) DRM_READ8( dev_priv->mmio, (reg) ) 1157#define RADEON_READ8(reg) DRM_READ8( dev_priv->mmio, (reg) )
1079#define RADEON_WRITE8(reg,val) DRM_WRITE8( dev_priv->mmio, (reg), (val) ) 1158#define RADEON_WRITE8(reg,val) DRM_WRITE8( dev_priv->mmio, (reg), (val) )
1080 1159
1081#define RADEON_WRITE_PLL( addr, val ) \ 1160#define RADEON_WRITE_PLL(addr, val) \
1082do { \ 1161do { \
1083 RADEON_WRITE8( RADEON_CLOCK_CNTL_INDEX, \ 1162 RADEON_WRITE8(RADEON_CLOCK_CNTL_INDEX, \
1084 ((addr) & 0x1f) | RADEON_PLL_WR_EN ); \ 1163 ((addr) & 0x1f) | RADEON_PLL_WR_EN ); \
1085 RADEON_WRITE( RADEON_CLOCK_CNTL_DATA, (val) ); \ 1164 RADEON_WRITE(RADEON_CLOCK_CNTL_DATA, (val)); \
1086} while (0) 1165} while (0)
1087 1166
1088#define RADEON_WRITE_IGPGART( addr, val ) \ 1167#define RADEON_WRITE_PCIE(addr, val) \
1089do { \ 1168do { \
1090 RADEON_WRITE( RADEON_IGPGART_INDEX, \ 1169 RADEON_WRITE8(RADEON_PCIE_INDEX, \
1091 ((addr) & 0x7f) | (1 << 8)); \ 1170 ((addr) & 0xff)); \
1092 RADEON_WRITE( RADEON_IGPGART_DATA, (val) ); \ 1171 RADEON_WRITE(RADEON_PCIE_DATA, (val)); \
1093 RADEON_WRITE( RADEON_IGPGART_INDEX, 0x7f ); \
1094} while (0) 1172} while (0)
1095 1173
1096#define RADEON_WRITE_PCIE( addr, val ) \ 1174#define R500_WRITE_MCIND(addr, val) \
1097do { \ 1175do { \
1098 RADEON_WRITE8( RADEON_PCIE_INDEX, \ 1176 RADEON_WRITE(R520_MC_IND_INDEX, 0xff0000 | ((addr) & 0xff)); \
1099 ((addr) & 0xff)); \ 1177 RADEON_WRITE(R520_MC_IND_DATA, (val)); \
1100 RADEON_WRITE( RADEON_PCIE_DATA, (val) ); \ 1178 RADEON_WRITE(R520_MC_IND_INDEX, 0); \
1101} while (0) 1179} while (0)
1102 1180
1103#define RADEON_WRITE_MCIND( addr, val ) \ 1181#define RS480_WRITE_MCIND(addr, val) \
1104 do { \ 1182do { \
1105 RADEON_WRITE(R520_MC_IND_INDEX, 0xff0000 | ((addr) & 0xff)); \ 1183 RADEON_WRITE(RS480_NB_MC_INDEX, \
1106 RADEON_WRITE(R520_MC_IND_DATA, (val)); \ 1184 ((addr) & 0xff) | RS480_NB_MC_IND_WR_EN); \
1107 RADEON_WRITE(R520_MC_IND_INDEX, 0); \ 1185 RADEON_WRITE(RS480_NB_MC_DATA, (val)); \
1108 } while (0) 1186 RADEON_WRITE(RS480_NB_MC_INDEX, 0xff); \
1187} while (0)
1109 1188
1110#define RS690_WRITE_MCIND( addr, val ) \ 1189#define RS690_WRITE_MCIND(addr, val) \
1111do { \ 1190do { \
1112 RADEON_WRITE(RS690_MC_INDEX, RS690_MC_INDEX_WR_EN | ((addr) & RS690_MC_INDEX_MASK)); \ 1191 RADEON_WRITE(RS690_MC_INDEX, RS690_MC_INDEX_WR_EN | ((addr) & RS690_MC_INDEX_MASK)); \
1113 RADEON_WRITE(RS690_MC_DATA, val); \ 1192 RADEON_WRITE(RS690_MC_DATA, val); \
1114 RADEON_WRITE(RS690_MC_INDEX, RS690_MC_INDEX_WR_ACK); \ 1193 RADEON_WRITE(RS690_MC_INDEX, RS690_MC_INDEX_WR_ACK); \
1115} while (0) 1194} while (0)
1116 1195
1196#define IGP_WRITE_MCIND(addr, val) \
1197do { \
1198 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) \
1199 RS690_WRITE_MCIND(addr, val); \
1200 else \
1201 RS480_WRITE_MCIND(addr, val); \
1202} while (0)
1203
1117#define CP_PACKET0( reg, n ) \ 1204#define CP_PACKET0( reg, n ) \
1118 (RADEON_CP_PACKET0 | ((n) << 16) | ((reg) >> 2)) 1205 (RADEON_CP_PACKET0 | ((n) << 16) | ((reg) >> 2))
1119#define CP_PACKET0_TABLE( reg, n ) \ 1206#define CP_PACKET0_TABLE( reg, n ) \
@@ -1154,23 +1241,43 @@ do { \
1154} while (0) 1241} while (0)
1155 1242
1156#define RADEON_FLUSH_CACHE() do { \ 1243#define RADEON_FLUSH_CACHE() do { \
1157 OUT_RING( CP_PACKET0( RADEON_RB3D_DSTCACHE_CTLSTAT, 0 ) ); \ 1244 if ((dev_priv->flags & RADEON_FAMILY_MASK) <= CHIP_RV280) { \
1158 OUT_RING( RADEON_RB3D_DC_FLUSH ); \ 1245 OUT_RING(CP_PACKET0(RADEON_RB3D_DSTCACHE_CTLSTAT, 0)); \
1246 OUT_RING(RADEON_RB3D_DC_FLUSH); \
1247 } else { \
1248 OUT_RING(CP_PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); \
1249 OUT_RING(RADEON_RB3D_DC_FLUSH); \
1250 } \
1159} while (0) 1251} while (0)
1160 1252
1161#define RADEON_PURGE_CACHE() do { \ 1253#define RADEON_PURGE_CACHE() do { \
1162 OUT_RING( CP_PACKET0( RADEON_RB3D_DSTCACHE_CTLSTAT, 0 ) ); \ 1254 if ((dev_priv->flags & RADEON_FAMILY_MASK) <= CHIP_RV280) { \
1163 OUT_RING( RADEON_RB3D_DC_FLUSH_ALL ); \ 1255 OUT_RING(CP_PACKET0(RADEON_RB3D_DSTCACHE_CTLSTAT, 0)); \
1256 OUT_RING(RADEON_RB3D_DC_FLUSH_ALL); \
1257 } else { \
1258 OUT_RING(CP_PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); \
1259 OUT_RING(RADEON_RB3D_DC_FLUSH_ALL); \
1260 } \
1164} while (0) 1261} while (0)
1165 1262
1166#define RADEON_FLUSH_ZCACHE() do { \ 1263#define RADEON_FLUSH_ZCACHE() do { \
1167 OUT_RING( CP_PACKET0( RADEON_RB3D_ZCACHE_CTLSTAT, 0 ) ); \ 1264 if ((dev_priv->flags & RADEON_FAMILY_MASK) <= CHIP_RV280) { \
1168 OUT_RING( RADEON_RB3D_ZC_FLUSH ); \ 1265 OUT_RING(CP_PACKET0(RADEON_RB3D_ZCACHE_CTLSTAT, 0)); \
1266 OUT_RING(RADEON_RB3D_ZC_FLUSH); \
1267 } else { \
1268 OUT_RING(CP_PACKET0(R300_ZB_ZCACHE_CTLSTAT, 0)); \
1269 OUT_RING(R300_ZC_FLUSH); \
1270 } \
1169} while (0) 1271} while (0)
1170 1272
1171#define RADEON_PURGE_ZCACHE() do { \ 1273#define RADEON_PURGE_ZCACHE() do { \
1172 OUT_RING( CP_PACKET0( RADEON_RB3D_ZCACHE_CTLSTAT, 0 ) ); \ 1274 if ((dev_priv->flags & RADEON_FAMILY_MASK) <= CHIP_RV280) { \
1173 OUT_RING( RADEON_RB3D_ZC_FLUSH_ALL ); \ 1275 OUT_RING(CP_PACKET0(RADEON_RB3D_ZCACHE_CTLSTAT, 0)); \
1276 OUT_RING(RADEON_RB3D_ZC_FLUSH_ALL); \
1277 } else { \
1278 OUT_RING(CP_PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); \
1279 OUT_RING(R300_ZC_FLUSH_ALL); \
1280 } \
1174} while (0) 1281} while (0)
1175 1282
1176/* ================================================================ 1283/* ================================================================
diff --git a/drivers/char/drm/radeon_irq.c b/drivers/char/drm/radeon_irq.c
index 009af3814b6f..ee40d197deb7 100644
--- a/drivers/char/drm/radeon_irq.c
+++ b/drivers/char/drm/radeon_irq.c
@@ -234,7 +234,7 @@ int radeon_irq_wait(struct drm_device *dev, void *data, struct drm_file *file_pr
234 return radeon_wait_irq(dev, irqwait->irq_seq); 234 return radeon_wait_irq(dev, irqwait->irq_seq);
235} 235}
236 236
237static void radeon_enable_interrupt(struct drm_device *dev) 237void radeon_enable_interrupt(struct drm_device *dev)
238{ 238{
239 drm_radeon_private_t *dev_priv = (drm_radeon_private_t *) dev->dev_private; 239 drm_radeon_private_t *dev_priv = (drm_radeon_private_t *) dev->dev_private;
240 240
diff --git a/drivers/char/drm/radeon_microcode.h b/drivers/char/drm/radeon_microcode.h
new file mode 100644
index 000000000000..a348c9e7db1c
--- /dev/null
+++ b/drivers/char/drm/radeon_microcode.h
@@ -0,0 +1,1844 @@
1/*
2 * Copyright 2007 Advanced Micro Devices, Inc.
3 * All Rights Reserved.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
14 * Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
20 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 *
24 */
25
26#ifndef RADEON_MICROCODE_H
27#define RADEON_MICROCODE_H
28
29/* production radeon ucode r1xx-r6xx */
30static const u32 R100_cp_microcode[][2] = {
31 { 0x21007000, 0000000000 },
32 { 0x20007000, 0000000000 },
33 { 0x000000b4, 0x00000004 },
34 { 0x000000b8, 0x00000004 },
35 { 0x6f5b4d4c, 0000000000 },
36 { 0x4c4c427f, 0000000000 },
37 { 0x5b568a92, 0000000000 },
38 { 0x4ca09c6d, 0000000000 },
39 { 0xad4c4c4c, 0000000000 },
40 { 0x4ce1af3d, 0000000000 },
41 { 0xd8afafaf, 0000000000 },
42 { 0xd64c4cdc, 0000000000 },
43 { 0x4cd10d10, 0000000000 },
44 { 0x000f0000, 0x00000016 },
45 { 0x362f242d, 0000000000 },
46 { 0x00000012, 0x00000004 },
47 { 0x000f0000, 0x00000016 },
48 { 0x362f282d, 0000000000 },
49 { 0x000380e7, 0x00000002 },
50 { 0x04002c97, 0x00000002 },
51 { 0x000f0001, 0x00000016 },
52 { 0x333a3730, 0000000000 },
53 { 0x000077ef, 0x00000002 },
54 { 0x00061000, 0x00000002 },
55 { 0x00000021, 0x0000001a },
56 { 0x00004000, 0x0000001e },
57 { 0x00061000, 0x00000002 },
58 { 0x00000021, 0x0000001a },
59 { 0x00004000, 0x0000001e },
60 { 0x00061000, 0x00000002 },
61 { 0x00000021, 0x0000001a },
62 { 0x00004000, 0x0000001e },
63 { 0x00000017, 0x00000004 },
64 { 0x0003802b, 0x00000002 },
65 { 0x040067e0, 0x00000002 },
66 { 0x00000017, 0x00000004 },
67 { 0x000077e0, 0x00000002 },
68 { 0x00065000, 0x00000002 },
69 { 0x000037e1, 0x00000002 },
70 { 0x040067e1, 0x00000006 },
71 { 0x000077e0, 0x00000002 },
72 { 0x000077e1, 0x00000002 },
73 { 0x000077e1, 0x00000006 },
74 { 0xffffffff, 0000000000 },
75 { 0x10000000, 0000000000 },
76 { 0x0003802b, 0x00000002 },
77 { 0x040067e0, 0x00000006 },
78 { 0x00007675, 0x00000002 },
79 { 0x00007676, 0x00000002 },
80 { 0x00007677, 0x00000002 },
81 { 0x00007678, 0x00000006 },
82 { 0x0003802c, 0x00000002 },
83 { 0x04002676, 0x00000002 },
84 { 0x00007677, 0x00000002 },
85 { 0x00007678, 0x00000006 },
86 { 0x0000002f, 0x00000018 },
87 { 0x0000002f, 0x00000018 },
88 { 0000000000, 0x00000006 },
89 { 0x00000030, 0x00000018 },
90 { 0x00000030, 0x00000018 },
91 { 0000000000, 0x00000006 },
92 { 0x01605000, 0x00000002 },
93 { 0x00065000, 0x00000002 },
94 { 0x00098000, 0x00000002 },
95 { 0x00061000, 0x00000002 },
96 { 0x64c0603e, 0x00000004 },
97 { 0x000380e6, 0x00000002 },
98 { 0x040025c5, 0x00000002 },
99 { 0x00080000, 0x00000016 },
100 { 0000000000, 0000000000 },
101 { 0x0400251d, 0x00000002 },
102 { 0x00007580, 0x00000002 },
103 { 0x00067581, 0x00000002 },
104 { 0x04002580, 0x00000002 },
105 { 0x00067581, 0x00000002 },
106 { 0x00000049, 0x00000004 },
107 { 0x00005000, 0000000000 },
108 { 0x000380e6, 0x00000002 },
109 { 0x040025c5, 0x00000002 },
110 { 0x00061000, 0x00000002 },
111 { 0x0000750e, 0x00000002 },
112 { 0x00019000, 0x00000002 },
113 { 0x00011055, 0x00000014 },
114 { 0x00000055, 0x00000012 },
115 { 0x0400250f, 0x00000002 },
116 { 0x0000504f, 0x00000004 },
117 { 0x000380e6, 0x00000002 },
118 { 0x040025c5, 0x00000002 },
119 { 0x00007565, 0x00000002 },
120 { 0x00007566, 0x00000002 },
121 { 0x00000058, 0x00000004 },
122 { 0x000380e6, 0x00000002 },
123 { 0x040025c5, 0x00000002 },
124 { 0x01e655b4, 0x00000002 },
125 { 0x4401b0e4, 0x00000002 },
126 { 0x01c110e4, 0x00000002 },
127 { 0x26667066, 0x00000018 },
128 { 0x040c2565, 0x00000002 },
129 { 0x00000066, 0x00000018 },
130 { 0x04002564, 0x00000002 },
131 { 0x00007566, 0x00000002 },
132 { 0x0000005d, 0x00000004 },
133 { 0x00401069, 0x00000008 },
134 { 0x00101000, 0x00000002 },
135 { 0x000d80ff, 0x00000002 },
136 { 0x0080006c, 0x00000008 },
137 { 0x000f9000, 0x00000002 },
138 { 0x000e00ff, 0x00000002 },
139 { 0000000000, 0x00000006 },
140 { 0x0000008f, 0x00000018 },
141 { 0x0000005b, 0x00000004 },
142 { 0x000380e6, 0x00000002 },
143 { 0x040025c5, 0x00000002 },
144 { 0x00007576, 0x00000002 },
145 { 0x00065000, 0x00000002 },
146 { 0x00009000, 0x00000002 },
147 { 0x00041000, 0x00000002 },
148 { 0x0c00350e, 0x00000002 },
149 { 0x00049000, 0x00000002 },
150 { 0x00051000, 0x00000002 },
151 { 0x01e785f8, 0x00000002 },
152 { 0x00200000, 0x00000002 },
153 { 0x0060007e, 0x0000000c },
154 { 0x00007563, 0x00000002 },
155 { 0x006075f0, 0x00000021 },
156 { 0x20007073, 0x00000004 },
157 { 0x00005073, 0x00000004 },
158 { 0x000380e6, 0x00000002 },
159 { 0x040025c5, 0x00000002 },
160 { 0x00007576, 0x00000002 },
161 { 0x00007577, 0x00000002 },
162 { 0x0000750e, 0x00000002 },
163 { 0x0000750f, 0x00000002 },
164 { 0x00a05000, 0x00000002 },
165 { 0x00600083, 0x0000000c },
166 { 0x006075f0, 0x00000021 },
167 { 0x000075f8, 0x00000002 },
168 { 0x00000083, 0x00000004 },
169 { 0x000a750e, 0x00000002 },
170 { 0x000380e6, 0x00000002 },
171 { 0x040025c5, 0x00000002 },
172 { 0x0020750f, 0x00000002 },
173 { 0x00600086, 0x00000004 },
174 { 0x00007570, 0x00000002 },
175 { 0x00007571, 0x00000002 },
176 { 0x00007572, 0x00000006 },
177 { 0x000380e6, 0x00000002 },
178 { 0x040025c5, 0x00000002 },
179 { 0x00005000, 0x00000002 },
180 { 0x00a05000, 0x00000002 },
181 { 0x00007568, 0x00000002 },
182 { 0x00061000, 0x00000002 },
183 { 0x00000095, 0x0000000c },
184 { 0x00058000, 0x00000002 },
185 { 0x0c607562, 0x00000002 },
186 { 0x00000097, 0x00000004 },
187 { 0x000380e6, 0x00000002 },
188 { 0x040025c5, 0x00000002 },
189 { 0x00600096, 0x00000004 },
190 { 0x400070e5, 0000000000 },
191 { 0x000380e6, 0x00000002 },
192 { 0x040025c5, 0x00000002 },
193 { 0x000380e5, 0x00000002 },
194 { 0x000000a8, 0x0000001c },
195 { 0x000650aa, 0x00000018 },
196 { 0x040025bb, 0x00000002 },
197 { 0x000610ab, 0x00000018 },
198 { 0x040075bc, 0000000000 },
199 { 0x000075bb, 0x00000002 },
200 { 0x000075bc, 0000000000 },
201 { 0x00090000, 0x00000006 },
202 { 0x00090000, 0x00000002 },
203 { 0x000d8002, 0x00000006 },
204 { 0x00007832, 0x00000002 },
205 { 0x00005000, 0x00000002 },
206 { 0x000380e7, 0x00000002 },
207 { 0x04002c97, 0x00000002 },
208 { 0x00007820, 0x00000002 },
209 { 0x00007821, 0x00000002 },
210 { 0x00007800, 0000000000 },
211 { 0x01200000, 0x00000002 },
212 { 0x20077000, 0x00000002 },
213 { 0x01200000, 0x00000002 },
214 { 0x20007000, 0x00000002 },
215 { 0x00061000, 0x00000002 },
216 { 0x0120751b, 0x00000002 },
217 { 0x8040750a, 0x00000002 },
218 { 0x8040750b, 0x00000002 },
219 { 0x00110000, 0x00000002 },
220 { 0x000380e5, 0x00000002 },
221 { 0x000000c6, 0x0000001c },
222 { 0x000610ab, 0x00000018 },
223 { 0x844075bd, 0x00000002 },
224 { 0x000610aa, 0x00000018 },
225 { 0x840075bb, 0x00000002 },
226 { 0x000610ab, 0x00000018 },
227 { 0x844075bc, 0x00000002 },
228 { 0x000000c9, 0x00000004 },
229 { 0x804075bd, 0x00000002 },
230 { 0x800075bb, 0x00000002 },
231 { 0x804075bc, 0x00000002 },
232 { 0x00108000, 0x00000002 },
233 { 0x01400000, 0x00000002 },
234 { 0x006000cd, 0x0000000c },
235 { 0x20c07000, 0x00000020 },
236 { 0x000000cf, 0x00000012 },
237 { 0x00800000, 0x00000006 },
238 { 0x0080751d, 0x00000006 },
239 { 0000000000, 0000000000 },
240 { 0x0000775c, 0x00000002 },
241 { 0x00a05000, 0x00000002 },
242 { 0x00661000, 0x00000002 },
243 { 0x0460275d, 0x00000020 },
244 { 0x00004000, 0000000000 },
245 { 0x01e00830, 0x00000002 },
246 { 0x21007000, 0000000000 },
247 { 0x6464614d, 0000000000 },
248 { 0x69687420, 0000000000 },
249 { 0x00000073, 0000000000 },
250 { 0000000000, 0000000000 },
251 { 0x00005000, 0x00000002 },
252 { 0x000380d0, 0x00000002 },
253 { 0x040025e0, 0x00000002 },
254 { 0x000075e1, 0000000000 },
255 { 0x00000001, 0000000000 },
256 { 0x000380e0, 0x00000002 },
257 { 0x04002394, 0x00000002 },
258 { 0x00005000, 0000000000 },
259 { 0000000000, 0000000000 },
260 { 0000000000, 0000000000 },
261 { 0x00000008, 0000000000 },
262 { 0x00000004, 0000000000 },
263 { 0000000000, 0000000000 },
264 { 0000000000, 0000000000 },
265 { 0000000000, 0000000000 },
266 { 0000000000, 0000000000 },
267 { 0000000000, 0000000000 },
268 { 0000000000, 0000000000 },
269 { 0000000000, 0000000000 },
270 { 0000000000, 0000000000 },
271 { 0000000000, 0000000000 },
272 { 0000000000, 0000000000 },
273 { 0000000000, 0000000000 },
274 { 0000000000, 0000000000 },
275 { 0000000000, 0000000000 },
276 { 0000000000, 0000000000 },
277 { 0000000000, 0000000000 },
278 { 0000000000, 0000000000 },
279 { 0000000000, 0000000000 },
280 { 0000000000, 0000000000 },
281 { 0000000000, 0000000000 },
282 { 0000000000, 0000000000 },
283 { 0000000000, 0000000000 },
284 { 0000000000, 0000000000 },
285 { 0000000000, 0000000000 },
286 { 0000000000, 0000000000 },
287};
288
289static const u32 R200_cp_microcode[][2] = {
290 { 0x21007000, 0000000000 },
291 { 0x20007000, 0000000000 },
292 { 0x000000bf, 0x00000004 },
293 { 0x000000c3, 0x00000004 },
294 { 0x7a685e5d, 0000000000 },
295 { 0x5d5d5588, 0000000000 },
296 { 0x68659197, 0000000000 },
297 { 0x5da19f78, 0000000000 },
298 { 0x5d5d5d5d, 0000000000 },
299 { 0x5dee5d50, 0000000000 },
300 { 0xf2acacac, 0000000000 },
301 { 0xe75df9e9, 0000000000 },
302 { 0xb1dd0e11, 0000000000 },
303 { 0xe2afafaf, 0000000000 },
304 { 0x000f0000, 0x00000016 },
305 { 0x452f232d, 0000000000 },
306 { 0x00000013, 0x00000004 },
307 { 0x000f0000, 0x00000016 },
308 { 0x452f272d, 0000000000 },
309 { 0x000f0001, 0x00000016 },
310 { 0x3e4d4a37, 0000000000 },
311 { 0x000077ef, 0x00000002 },
312 { 0x00061000, 0x00000002 },
313 { 0x00000020, 0x0000001a },
314 { 0x00004000, 0x0000001e },
315 { 0x00061000, 0x00000002 },
316 { 0x00000020, 0x0000001a },
317 { 0x00004000, 0x0000001e },
318 { 0x00061000, 0x00000002 },
319 { 0x00000020, 0x0000001a },
320 { 0x00004000, 0x0000001e },
321 { 0x00000016, 0x00000004 },
322 { 0x0003802a, 0x00000002 },
323 { 0x040067e0, 0x00000002 },
324 { 0x00000016, 0x00000004 },
325 { 0x000077e0, 0x00000002 },
326 { 0x00065000, 0x00000002 },
327 { 0x000037e1, 0x00000002 },
328 { 0x040067e1, 0x00000006 },
329 { 0x000077e0, 0x00000002 },
330 { 0x000077e1, 0x00000002 },
331 { 0x000077e1, 0x00000006 },
332 { 0xffffffff, 0000000000 },
333 { 0x10000000, 0000000000 },
334 { 0x07f007f0, 0000000000 },
335 { 0x0003802a, 0x00000002 },
336 { 0x040067e0, 0x00000006 },
337 { 0x0003802c, 0x00000002 },
338 { 0x04002741, 0x00000002 },
339 { 0x04002741, 0x00000002 },
340 { 0x04002743, 0x00000002 },
341 { 0x00007675, 0x00000002 },
342 { 0x00007676, 0x00000002 },
343 { 0x00007677, 0x00000002 },
344 { 0x00007678, 0x00000006 },
345 { 0x0003802c, 0x00000002 },
346 { 0x04002741, 0x00000002 },
347 { 0x04002741, 0x00000002 },
348 { 0x04002743, 0x00000002 },
349 { 0x00007676, 0x00000002 },
350 { 0x00007677, 0x00000002 },
351 { 0x00007678, 0x00000006 },
352 { 0x0003802b, 0x00000002 },
353 { 0x04002676, 0x00000002 },
354 { 0x00007677, 0x00000002 },
355 { 0x0003802c, 0x00000002 },
356 { 0x04002741, 0x00000002 },
357 { 0x04002743, 0x00000002 },
358 { 0x00007678, 0x00000006 },
359 { 0x0003802c, 0x00000002 },
360 { 0x04002741, 0x00000002 },
361 { 0x04002741, 0x00000002 },
362 { 0x04002743, 0x00000002 },
363 { 0x00007678, 0x00000006 },
364 { 0x0000002f, 0x00000018 },
365 { 0x0000002f, 0x00000018 },
366 { 0000000000, 0x00000006 },
367 { 0x00000037, 0x00000018 },
368 { 0x00000037, 0x00000018 },
369 { 0000000000, 0x00000006 },
370 { 0x01605000, 0x00000002 },
371 { 0x00065000, 0x00000002 },
372 { 0x00098000, 0x00000002 },
373 { 0x00061000, 0x00000002 },
374 { 0x64c06051, 0x00000004 },
375 { 0x00080000, 0x00000016 },
376 { 0000000000, 0000000000 },
377 { 0x0400251d, 0x00000002 },
378 { 0x00007580, 0x00000002 },
379 { 0x00067581, 0x00000002 },
380 { 0x04002580, 0x00000002 },
381 { 0x00067581, 0x00000002 },
382 { 0x0000005a, 0x00000004 },
383 { 0x00005000, 0000000000 },
384 { 0x00061000, 0x00000002 },
385 { 0x0000750e, 0x00000002 },
386 { 0x00019000, 0x00000002 },
387 { 0x00011064, 0x00000014 },
388 { 0x00000064, 0x00000012 },
389 { 0x0400250f, 0x00000002 },
390 { 0x0000505e, 0x00000004 },
391 { 0x00007565, 0x00000002 },
392 { 0x00007566, 0x00000002 },
393 { 0x00000065, 0x00000004 },
394 { 0x01e655b4, 0x00000002 },
395 { 0x4401b0f0, 0x00000002 },
396 { 0x01c110f0, 0x00000002 },
397 { 0x26667071, 0x00000018 },
398 { 0x040c2565, 0x00000002 },
399 { 0x00000071, 0x00000018 },
400 { 0x04002564, 0x00000002 },
401 { 0x00007566, 0x00000002 },
402 { 0x00000068, 0x00000004 },
403 { 0x00401074, 0x00000008 },
404 { 0x00101000, 0x00000002 },
405 { 0x000d80ff, 0x00000002 },
406 { 0x00800077, 0x00000008 },
407 { 0x000f9000, 0x00000002 },
408 { 0x000e00ff, 0x00000002 },
409 { 0000000000, 0x00000006 },
410 { 0x00000094, 0x00000018 },
411 { 0x00000068, 0x00000004 },
412 { 0x00007576, 0x00000002 },
413 { 0x00065000, 0x00000002 },
414 { 0x00009000, 0x00000002 },
415 { 0x00041000, 0x00000002 },
416 { 0x0c00350e, 0x00000002 },
417 { 0x00049000, 0x00000002 },
418 { 0x00051000, 0x00000002 },
419 { 0x01e785f8, 0x00000002 },
420 { 0x00200000, 0x00000002 },
421 { 0x00600087, 0x0000000c },
422 { 0x00007563, 0x00000002 },
423 { 0x006075f0, 0x00000021 },
424 { 0x2000707c, 0x00000004 },
425 { 0x0000507c, 0x00000004 },
426 { 0x00007576, 0x00000002 },
427 { 0x00007577, 0x00000002 },
428 { 0x0000750e, 0x00000002 },
429 { 0x0000750f, 0x00000002 },
430 { 0x00a05000, 0x00000002 },
431 { 0x0060008a, 0x0000000c },
432 { 0x006075f0, 0x00000021 },
433 { 0x000075f8, 0x00000002 },
434 { 0x0000008a, 0x00000004 },
435 { 0x000a750e, 0x00000002 },
436 { 0x0020750f, 0x00000002 },
437 { 0x0060008d, 0x00000004 },
438 { 0x00007570, 0x00000002 },
439 { 0x00007571, 0x00000002 },
440 { 0x00007572, 0x00000006 },
441 { 0x00005000, 0x00000002 },
442 { 0x00a05000, 0x00000002 },
443 { 0x00007568, 0x00000002 },
444 { 0x00061000, 0x00000002 },
445 { 0x00000098, 0x0000000c },
446 { 0x00058000, 0x00000002 },
447 { 0x0c607562, 0x00000002 },
448 { 0x0000009a, 0x00000004 },
449 { 0x00600099, 0x00000004 },
450 { 0x400070f1, 0000000000 },
451 { 0x000380f1, 0x00000002 },
452 { 0x000000a7, 0x0000001c },
453 { 0x000650a9, 0x00000018 },
454 { 0x040025bb, 0x00000002 },
455 { 0x000610aa, 0x00000018 },
456 { 0x040075bc, 0000000000 },
457 { 0x000075bb, 0x00000002 },
458 { 0x000075bc, 0000000000 },
459 { 0x00090000, 0x00000006 },
460 { 0x00090000, 0x00000002 },
461 { 0x000d8002, 0x00000006 },
462 { 0x00005000, 0x00000002 },
463 { 0x00007821, 0x00000002 },
464 { 0x00007800, 0000000000 },
465 { 0x00007821, 0x00000002 },
466 { 0x00007800, 0000000000 },
467 { 0x01665000, 0x00000002 },
468 { 0x000a0000, 0x00000002 },
469 { 0x000671cc, 0x00000002 },
470 { 0x0286f1cd, 0x00000002 },
471 { 0x000000b7, 0x00000010 },
472 { 0x21007000, 0000000000 },
473 { 0x000000be, 0x0000001c },
474 { 0x00065000, 0x00000002 },
475 { 0x000a0000, 0x00000002 },
476 { 0x00061000, 0x00000002 },
477 { 0x000b0000, 0x00000002 },
478 { 0x38067000, 0x00000002 },
479 { 0x000a00ba, 0x00000004 },
480 { 0x20007000, 0000000000 },
481 { 0x01200000, 0x00000002 },
482 { 0x20077000, 0x00000002 },
483 { 0x01200000, 0x00000002 },
484 { 0x20007000, 0000000000 },
485 { 0x00061000, 0x00000002 },
486 { 0x0120751b, 0x00000002 },
487 { 0x8040750a, 0x00000002 },
488 { 0x8040750b, 0x00000002 },
489 { 0x00110000, 0x00000002 },
490 { 0x000380f1, 0x00000002 },
491 { 0x000000d1, 0x0000001c },
492 { 0x000610aa, 0x00000018 },
493 { 0x844075bd, 0x00000002 },
494 { 0x000610a9, 0x00000018 },
495 { 0x840075bb, 0x00000002 },
496 { 0x000610aa, 0x00000018 },
497 { 0x844075bc, 0x00000002 },
498 { 0x000000d4, 0x00000004 },
499 { 0x804075bd, 0x00000002 },
500 { 0x800075bb, 0x00000002 },
501 { 0x804075bc, 0x00000002 },
502 { 0x00108000, 0x00000002 },
503 { 0x01400000, 0x00000002 },
504 { 0x006000d8, 0x0000000c },
505 { 0x20c07000, 0x00000020 },
506 { 0x000000da, 0x00000012 },
507 { 0x00800000, 0x00000006 },
508 { 0x0080751d, 0x00000006 },
509 { 0x000025bb, 0x00000002 },
510 { 0x000040d4, 0x00000004 },
511 { 0x0000775c, 0x00000002 },
512 { 0x00a05000, 0x00000002 },
513 { 0x00661000, 0x00000002 },
514 { 0x0460275d, 0x00000020 },
515 { 0x00004000, 0000000000 },
516 { 0x00007999, 0x00000002 },
517 { 0x00a05000, 0x00000002 },
518 { 0x00661000, 0x00000002 },
519 { 0x0460299b, 0x00000020 },
520 { 0x00004000, 0000000000 },
521 { 0x01e00830, 0x00000002 },
522 { 0x21007000, 0000000000 },
523 { 0x00005000, 0x00000002 },
524 { 0x00038056, 0x00000002 },
525 { 0x040025e0, 0x00000002 },
526 { 0x000075e1, 0000000000 },
527 { 0x00000001, 0000000000 },
528 { 0x000380ed, 0x00000002 },
529 { 0x04007394, 0000000000 },
530 { 0000000000, 0000000000 },
531 { 0000000000, 0000000000 },
532 { 0x000078c4, 0x00000002 },
533 { 0x000078c5, 0x00000002 },
534 { 0x000078c6, 0x00000002 },
535 { 0x00007924, 0x00000002 },
536 { 0x00007925, 0x00000002 },
537 { 0x00007926, 0x00000002 },
538 { 0x000000f2, 0x00000004 },
539 { 0x00007924, 0x00000002 },
540 { 0x00007925, 0x00000002 },
541 { 0x00007926, 0x00000002 },
542 { 0x000000f9, 0x00000004 },
543 { 0000000000, 0000000000 },
544 { 0000000000, 0000000000 },
545 { 0000000000, 0000000000 },
546};
547
548static const u32 R300_cp_microcode[][2] = {
549 { 0x4200e000, 0000000000 },
550 { 0x4000e000, 0000000000 },
551 { 0x000000ae, 0x00000008 },
552 { 0x000000b2, 0x00000008 },
553 { 0x67554b4a, 0000000000 },
554 { 0x4a4a4475, 0000000000 },
555 { 0x55527d83, 0000000000 },
556 { 0x4a8c8b65, 0000000000 },
557 { 0x4aef4af6, 0000000000 },
558 { 0x4ae14a4a, 0000000000 },
559 { 0xe4979797, 0000000000 },
560 { 0xdb4aebdd, 0000000000 },
561 { 0x9ccc4a4a, 0000000000 },
562 { 0xd1989898, 0000000000 },
563 { 0x4a0f9ad6, 0000000000 },
564 { 0x000ca000, 0x00000004 },
565 { 0x000d0012, 0x00000038 },
566 { 0x0000e8b4, 0x00000004 },
567 { 0x000d0014, 0x00000038 },
568 { 0x0000e8b6, 0x00000004 },
569 { 0x000d0016, 0x00000038 },
570 { 0x0000e854, 0x00000004 },
571 { 0x000d0018, 0x00000038 },
572 { 0x0000e855, 0x00000004 },
573 { 0x000d001a, 0x00000038 },
574 { 0x0000e856, 0x00000004 },
575 { 0x000d001c, 0x00000038 },
576 { 0x0000e857, 0x00000004 },
577 { 0x000d001e, 0x00000038 },
578 { 0x0000e824, 0x00000004 },
579 { 0x000d0020, 0x00000038 },
580 { 0x0000e825, 0x00000004 },
581 { 0x000d0022, 0x00000038 },
582 { 0x0000e830, 0x00000004 },
583 { 0x000d0024, 0x00000038 },
584 { 0x0000f0c0, 0x00000004 },
585 { 0x000d0026, 0x00000038 },
586 { 0x0000f0c1, 0x00000004 },
587 { 0x000d0028, 0x00000038 },
588 { 0x0000f041, 0x00000004 },
589 { 0x000d002a, 0x00000038 },
590 { 0x0000f184, 0x00000004 },
591 { 0x000d002c, 0x00000038 },
592 { 0x0000f185, 0x00000004 },
593 { 0x000d002e, 0x00000038 },
594 { 0x0000f186, 0x00000004 },
595 { 0x000d0030, 0x00000038 },
596 { 0x0000f187, 0x00000004 },
597 { 0x000d0032, 0x00000038 },
598 { 0x0000f180, 0x00000004 },
599 { 0x000d0034, 0x00000038 },
600 { 0x0000f393, 0x00000004 },
601 { 0x000d0036, 0x00000038 },
602 { 0x0000f38a, 0x00000004 },
603 { 0x000d0038, 0x00000038 },
604 { 0x0000f38e, 0x00000004 },
605 { 0x0000e821, 0x00000004 },
606 { 0x0140a000, 0x00000004 },
607 { 0x00000043, 0x00000018 },
608 { 0x00cce800, 0x00000004 },
609 { 0x001b0001, 0x00000004 },
610 { 0x08004800, 0x00000004 },
611 { 0x001b0001, 0x00000004 },
612 { 0x08004800, 0x00000004 },
613 { 0x001b0001, 0x00000004 },
614 { 0x08004800, 0x00000004 },
615 { 0x0000003a, 0x00000008 },
616 { 0x0000a000, 0000000000 },
617 { 0x2000451d, 0x00000004 },
618 { 0x0000e580, 0x00000004 },
619 { 0x000ce581, 0x00000004 },
620 { 0x08004580, 0x00000004 },
621 { 0x000ce581, 0x00000004 },
622 { 0x00000047, 0x00000008 },
623 { 0x0000a000, 0000000000 },
624 { 0x000c2000, 0x00000004 },
625 { 0x0000e50e, 0x00000004 },
626 { 0x00032000, 0x00000004 },
627 { 0x00022051, 0x00000028 },
628 { 0x00000051, 0x00000024 },
629 { 0x0800450f, 0x00000004 },
630 { 0x0000a04b, 0x00000008 },
631 { 0x0000e565, 0x00000004 },
632 { 0x0000e566, 0x00000004 },
633 { 0x00000052, 0x00000008 },
634 { 0x03cca5b4, 0x00000004 },
635 { 0x05432000, 0x00000004 },
636 { 0x00022000, 0x00000004 },
637 { 0x4ccce05e, 0x00000030 },
638 { 0x08274565, 0x00000004 },
639 { 0x0000005e, 0x00000030 },
640 { 0x08004564, 0x00000004 },
641 { 0x0000e566, 0x00000004 },
642 { 0x00000055, 0x00000008 },
643 { 0x00802061, 0x00000010 },
644 { 0x00202000, 0x00000004 },
645 { 0x001b00ff, 0x00000004 },
646 { 0x01000064, 0x00000010 },
647 { 0x001f2000, 0x00000004 },
648 { 0x001c00ff, 0x00000004 },
649 { 0000000000, 0x0000000c },
650 { 0x00000080, 0x00000030 },
651 { 0x00000055, 0x00000008 },
652 { 0x0000e576, 0x00000004 },
653 { 0x000ca000, 0x00000004 },
654 { 0x00012000, 0x00000004 },
655 { 0x00082000, 0x00000004 },
656 { 0x1800650e, 0x00000004 },
657 { 0x00092000, 0x00000004 },
658 { 0x000a2000, 0x00000004 },
659 { 0x000f0000, 0x00000004 },
660 { 0x00400000, 0x00000004 },
661 { 0x00000074, 0x00000018 },
662 { 0x0000e563, 0x00000004 },
663 { 0x00c0e5f9, 0x000000c2 },
664 { 0x00000069, 0x00000008 },
665 { 0x0000a069, 0x00000008 },
666 { 0x0000e576, 0x00000004 },
667 { 0x0000e577, 0x00000004 },
668 { 0x0000e50e, 0x00000004 },
669 { 0x0000e50f, 0x00000004 },
670 { 0x0140a000, 0x00000004 },
671 { 0x00000077, 0x00000018 },
672 { 0x00c0e5f9, 0x000000c2 },
673 { 0x00000077, 0x00000008 },
674 { 0x0014e50e, 0x00000004 },
675 { 0x0040e50f, 0x00000004 },
676 { 0x00c0007a, 0x00000008 },
677 { 0x0000e570, 0x00000004 },
678 { 0x0000e571, 0x00000004 },
679 { 0x0000e572, 0x0000000c },
680 { 0x0000a000, 0x00000004 },
681 { 0x0140a000, 0x00000004 },
682 { 0x0000e568, 0x00000004 },
683 { 0x000c2000, 0x00000004 },
684 { 0x00000084, 0x00000018 },
685 { 0x000b0000, 0x00000004 },
686 { 0x18c0e562, 0x00000004 },
687 { 0x00000086, 0x00000008 },
688 { 0x00c00085, 0x00000008 },
689 { 0x000700e3, 0x00000004 },
690 { 0x00000092, 0x00000038 },
691 { 0x000ca094, 0x00000030 },
692 { 0x080045bb, 0x00000004 },
693 { 0x000c2095, 0x00000030 },
694 { 0x0800e5bc, 0000000000 },
695 { 0x0000e5bb, 0x00000004 },
696 { 0x0000e5bc, 0000000000 },
697 { 0x00120000, 0x0000000c },
698 { 0x00120000, 0x00000004 },
699 { 0x001b0002, 0x0000000c },
700 { 0x0000a000, 0x00000004 },
701 { 0x0000e821, 0x00000004 },
702 { 0x0000e800, 0000000000 },
703 { 0x0000e821, 0x00000004 },
704 { 0x0000e82e, 0000000000 },
705 { 0x02cca000, 0x00000004 },
706 { 0x00140000, 0x00000004 },
707 { 0x000ce1cc, 0x00000004 },
708 { 0x050de1cd, 0x00000004 },
709 { 0x00400000, 0x00000004 },
710 { 0x000000a4, 0x00000018 },
711 { 0x00c0a000, 0x00000004 },
712 { 0x000000a1, 0x00000008 },
713 { 0x000000a6, 0x00000020 },
714 { 0x4200e000, 0000000000 },
715 { 0x000000ad, 0x00000038 },
716 { 0x000ca000, 0x00000004 },
717 { 0x00140000, 0x00000004 },
718 { 0x000c2000, 0x00000004 },
719 { 0x00160000, 0x00000004 },
720 { 0x700ce000, 0x00000004 },
721 { 0x001400a9, 0x00000008 },
722 { 0x4000e000, 0000000000 },
723 { 0x02400000, 0x00000004 },
724 { 0x400ee000, 0x00000004 },
725 { 0x02400000, 0x00000004 },
726 { 0x4000e000, 0000000000 },
727 { 0x000c2000, 0x00000004 },
728 { 0x0240e51b, 0x00000004 },
729 { 0x0080e50a, 0x00000005 },
730 { 0x0080e50b, 0x00000005 },
731 { 0x00220000, 0x00000004 },
732 { 0x000700e3, 0x00000004 },
733 { 0x000000c0, 0x00000038 },
734 { 0x000c2095, 0x00000030 },
735 { 0x0880e5bd, 0x00000005 },
736 { 0x000c2094, 0x00000030 },
737 { 0x0800e5bb, 0x00000005 },
738 { 0x000c2095, 0x00000030 },
739 { 0x0880e5bc, 0x00000005 },
740 { 0x000000c3, 0x00000008 },
741 { 0x0080e5bd, 0x00000005 },
742 { 0x0000e5bb, 0x00000005 },
743 { 0x0080e5bc, 0x00000005 },
744 { 0x00210000, 0x00000004 },
745 { 0x02800000, 0x00000004 },
746 { 0x00c000c7, 0x00000018 },
747 { 0x4180e000, 0x00000040 },
748 { 0x000000c9, 0x00000024 },
749 { 0x01000000, 0x0000000c },
750 { 0x0100e51d, 0x0000000c },
751 { 0x000045bb, 0x00000004 },
752 { 0x000080c3, 0x00000008 },
753 { 0x0000f3ce, 0x00000004 },
754 { 0x0140a000, 0x00000004 },
755 { 0x00cc2000, 0x00000004 },
756 { 0x08c053cf, 0x00000040 },
757 { 0x00008000, 0000000000 },
758 { 0x0000f3d2, 0x00000004 },
759 { 0x0140a000, 0x00000004 },
760 { 0x00cc2000, 0x00000004 },
761 { 0x08c053d3, 0x00000040 },
762 { 0x00008000, 0000000000 },
763 { 0x0000f39d, 0x00000004 },
764 { 0x0140a000, 0x00000004 },
765 { 0x00cc2000, 0x00000004 },
766 { 0x08c0539e, 0x00000040 },
767 { 0x00008000, 0000000000 },
768 { 0x03c00830, 0x00000004 },
769 { 0x4200e000, 0000000000 },
770 { 0x0000a000, 0x00000004 },
771 { 0x200045e0, 0x00000004 },
772 { 0x0000e5e1, 0000000000 },
773 { 0x00000001, 0000000000 },
774 { 0x000700e0, 0x00000004 },
775 { 0x0800e394, 0000000000 },
776 { 0000000000, 0000000000 },
777 { 0x0000e8c4, 0x00000004 },
778 { 0x0000e8c5, 0x00000004 },
779 { 0x0000e8c6, 0x00000004 },
780 { 0x0000e928, 0x00000004 },
781 { 0x0000e929, 0x00000004 },
782 { 0x0000e92a, 0x00000004 },
783 { 0x000000e4, 0x00000008 },
784 { 0x0000e928, 0x00000004 },
785 { 0x0000e929, 0x00000004 },
786 { 0x0000e92a, 0x00000004 },
787 { 0x000000eb, 0x00000008 },
788 { 0x02c02000, 0x00000004 },
789 { 0x00060000, 0x00000004 },
790 { 0x000000f3, 0x00000034 },
791 { 0x000000f0, 0x00000008 },
792 { 0x00008000, 0x00000004 },
793 { 0xc000e000, 0000000000 },
794 { 0000000000, 0000000000 },
795 { 0x000c2000, 0x00000004 },
796 { 0x001d0018, 0x00000004 },
797 { 0x001a0001, 0x00000004 },
798 { 0x000000fb, 0x00000034 },
799 { 0x0000004a, 0x00000008 },
800 { 0x0500a04a, 0x00000008 },
801 { 0000000000, 0000000000 },
802 { 0000000000, 0000000000 },
803 { 0000000000, 0000000000 },
804 { 0000000000, 0000000000 },
805};
806
807static const u32 R420_cp_microcode[][2] = {
808 { 0x4200e000, 0000000000 },
809 { 0x4000e000, 0000000000 },
810 { 0x00000099, 0x00000008 },
811 { 0x0000009d, 0x00000008 },
812 { 0x4a554b4a, 0000000000 },
813 { 0x4a4a4467, 0000000000 },
814 { 0x55526f75, 0000000000 },
815 { 0x4a7e7d65, 0000000000 },
816 { 0xd9d3dff6, 0000000000 },
817 { 0x4ac54a4a, 0000000000 },
818 { 0xc8828282, 0000000000 },
819 { 0xbf4acfc1, 0000000000 },
820 { 0x87b04a4a, 0000000000 },
821 { 0xb5838383, 0000000000 },
822 { 0x4a0f85ba, 0000000000 },
823 { 0x000ca000, 0x00000004 },
824 { 0x000d0012, 0x00000038 },
825 { 0x0000e8b4, 0x00000004 },
826 { 0x000d0014, 0x00000038 },
827 { 0x0000e8b6, 0x00000004 },
828 { 0x000d0016, 0x00000038 },
829 { 0x0000e854, 0x00000004 },
830 { 0x000d0018, 0x00000038 },
831 { 0x0000e855, 0x00000004 },
832 { 0x000d001a, 0x00000038 },
833 { 0x0000e856, 0x00000004 },
834 { 0x000d001c, 0x00000038 },
835 { 0x0000e857, 0x00000004 },
836 { 0x000d001e, 0x00000038 },
837 { 0x0000e824, 0x00000004 },
838 { 0x000d0020, 0x00000038 },
839 { 0x0000e825, 0x00000004 },
840 { 0x000d0022, 0x00000038 },
841 { 0x0000e830, 0x00000004 },
842 { 0x000d0024, 0x00000038 },
843 { 0x0000f0c0, 0x00000004 },
844 { 0x000d0026, 0x00000038 },
845 { 0x0000f0c1, 0x00000004 },
846 { 0x000d0028, 0x00000038 },
847 { 0x0000f041, 0x00000004 },
848 { 0x000d002a, 0x00000038 },
849 { 0x0000f184, 0x00000004 },
850 { 0x000d002c, 0x00000038 },
851 { 0x0000f185, 0x00000004 },
852 { 0x000d002e, 0x00000038 },
853 { 0x0000f186, 0x00000004 },
854 { 0x000d0030, 0x00000038 },
855 { 0x0000f187, 0x00000004 },
856 { 0x000d0032, 0x00000038 },
857 { 0x0000f180, 0x00000004 },
858 { 0x000d0034, 0x00000038 },
859 { 0x0000f393, 0x00000004 },
860 { 0x000d0036, 0x00000038 },
861 { 0x0000f38a, 0x00000004 },
862 { 0x000d0038, 0x00000038 },
863 { 0x0000f38e, 0x00000004 },
864 { 0x0000e821, 0x00000004 },
865 { 0x0140a000, 0x00000004 },
866 { 0x00000043, 0x00000018 },
867 { 0x00cce800, 0x00000004 },
868 { 0x001b0001, 0x00000004 },
869 { 0x08004800, 0x00000004 },
870 { 0x001b0001, 0x00000004 },
871 { 0x08004800, 0x00000004 },
872 { 0x001b0001, 0x00000004 },
873 { 0x08004800, 0x00000004 },
874 { 0x0000003a, 0x00000008 },
875 { 0x0000a000, 0000000000 },
876 { 0x2000451d, 0x00000004 },
877 { 0x0000e580, 0x00000004 },
878 { 0x000ce581, 0x00000004 },
879 { 0x08004580, 0x00000004 },
880 { 0x000ce581, 0x00000004 },
881 { 0x00000047, 0x00000008 },
882 { 0x0000a000, 0000000000 },
883 { 0x000c2000, 0x00000004 },
884 { 0x0000e50e, 0x00000004 },
885 { 0x00032000, 0x00000004 },
886 { 0x00022051, 0x00000028 },
887 { 0x00000051, 0x00000024 },
888 { 0x0800450f, 0x00000004 },
889 { 0x0000a04b, 0x00000008 },
890 { 0x0000e565, 0x00000004 },
891 { 0x0000e566, 0x00000004 },
892 { 0x00000052, 0x00000008 },
893 { 0x03cca5b4, 0x00000004 },
894 { 0x05432000, 0x00000004 },
895 { 0x00022000, 0x00000004 },
896 { 0x4ccce05e, 0x00000030 },
897 { 0x08274565, 0x00000004 },
898 { 0x0000005e, 0x00000030 },
899 { 0x08004564, 0x00000004 },
900 { 0x0000e566, 0x00000004 },
901 { 0x00000055, 0x00000008 },
902 { 0x00802061, 0x00000010 },
903 { 0x00202000, 0x00000004 },
904 { 0x001b00ff, 0x00000004 },
905 { 0x01000064, 0x00000010 },
906 { 0x001f2000, 0x00000004 },
907 { 0x001c00ff, 0x00000004 },
908 { 0000000000, 0x0000000c },
909 { 0x00000072, 0x00000030 },
910 { 0x00000055, 0x00000008 },
911 { 0x0000e576, 0x00000004 },
912 { 0x0000e577, 0x00000004 },
913 { 0x0000e50e, 0x00000004 },
914 { 0x0000e50f, 0x00000004 },
915 { 0x0140a000, 0x00000004 },
916 { 0x00000069, 0x00000018 },
917 { 0x00c0e5f9, 0x000000c2 },
918 { 0x00000069, 0x00000008 },
919 { 0x0014e50e, 0x00000004 },
920 { 0x0040e50f, 0x00000004 },
921 { 0x00c0006c, 0x00000008 },
922 { 0x0000e570, 0x00000004 },
923 { 0x0000e571, 0x00000004 },
924 { 0x0000e572, 0x0000000c },
925 { 0x0000a000, 0x00000004 },
926 { 0x0140a000, 0x00000004 },
927 { 0x0000e568, 0x00000004 },
928 { 0x000c2000, 0x00000004 },
929 { 0x00000076, 0x00000018 },
930 { 0x000b0000, 0x00000004 },
931 { 0x18c0e562, 0x00000004 },
932 { 0x00000078, 0x00000008 },
933 { 0x00c00077, 0x00000008 },
934 { 0x000700c7, 0x00000004 },
935 { 0x00000080, 0x00000038 },
936 { 0x0000e5bb, 0x00000004 },
937 { 0x0000e5bc, 0000000000 },
938 { 0x0000a000, 0x00000004 },
939 { 0x0000e821, 0x00000004 },
940 { 0x0000e800, 0000000000 },
941 { 0x0000e821, 0x00000004 },
942 { 0x0000e82e, 0000000000 },
943 { 0x02cca000, 0x00000004 },
944 { 0x00140000, 0x00000004 },
945 { 0x000ce1cc, 0x00000004 },
946 { 0x050de1cd, 0x00000004 },
947 { 0x00400000, 0x00000004 },
948 { 0x0000008f, 0x00000018 },
949 { 0x00c0a000, 0x00000004 },
950 { 0x0000008c, 0x00000008 },
951 { 0x00000091, 0x00000020 },
952 { 0x4200e000, 0000000000 },
953 { 0x00000098, 0x00000038 },
954 { 0x000ca000, 0x00000004 },
955 { 0x00140000, 0x00000004 },
956 { 0x000c2000, 0x00000004 },
957 { 0x00160000, 0x00000004 },
958 { 0x700ce000, 0x00000004 },
959 { 0x00140094, 0x00000008 },
960 { 0x4000e000, 0000000000 },
961 { 0x02400000, 0x00000004 },
962 { 0x400ee000, 0x00000004 },
963 { 0x02400000, 0x00000004 },
964 { 0x4000e000, 0000000000 },
965 { 0x000c2000, 0x00000004 },
966 { 0x0240e51b, 0x00000004 },
967 { 0x0080e50a, 0x00000005 },
968 { 0x0080e50b, 0x00000005 },
969 { 0x00220000, 0x00000004 },
970 { 0x000700c7, 0x00000004 },
971 { 0x000000a4, 0x00000038 },
972 { 0x0080e5bd, 0x00000005 },
973 { 0x0000e5bb, 0x00000005 },
974 { 0x0080e5bc, 0x00000005 },
975 { 0x00210000, 0x00000004 },
976 { 0x02800000, 0x00000004 },
977 { 0x00c000ab, 0x00000018 },
978 { 0x4180e000, 0x00000040 },
979 { 0x000000ad, 0x00000024 },
980 { 0x01000000, 0x0000000c },
981 { 0x0100e51d, 0x0000000c },
982 { 0x000045bb, 0x00000004 },
983 { 0x000080a7, 0x00000008 },
984 { 0x0000f3ce, 0x00000004 },
985 { 0x0140a000, 0x00000004 },
986 { 0x00cc2000, 0x00000004 },
987 { 0x08c053cf, 0x00000040 },
988 { 0x00008000, 0000000000 },
989 { 0x0000f3d2, 0x00000004 },
990 { 0x0140a000, 0x00000004 },
991 { 0x00cc2000, 0x00000004 },
992 { 0x08c053d3, 0x00000040 },
993 { 0x00008000, 0000000000 },
994 { 0x0000f39d, 0x00000004 },
995 { 0x0140a000, 0x00000004 },
996 { 0x00cc2000, 0x00000004 },
997 { 0x08c0539e, 0x00000040 },
998 { 0x00008000, 0000000000 },
999 { 0x03c00830, 0x00000004 },
1000 { 0x4200e000, 0000000000 },
1001 { 0x0000a000, 0x00000004 },
1002 { 0x200045e0, 0x00000004 },
1003 { 0x0000e5e1, 0000000000 },
1004 { 0x00000001, 0000000000 },
1005 { 0x000700c4, 0x00000004 },
1006 { 0x0800e394, 0000000000 },
1007 { 0000000000, 0000000000 },
1008 { 0x0000e8c4, 0x00000004 },
1009 { 0x0000e8c5, 0x00000004 },
1010 { 0x0000e8c6, 0x00000004 },
1011 { 0x0000e928, 0x00000004 },
1012 { 0x0000e929, 0x00000004 },
1013 { 0x0000e92a, 0x00000004 },
1014 { 0x000000c8, 0x00000008 },
1015 { 0x0000e928, 0x00000004 },
1016 { 0x0000e929, 0x00000004 },
1017 { 0x0000e92a, 0x00000004 },
1018 { 0x000000cf, 0x00000008 },
1019 { 0x02c02000, 0x00000004 },
1020 { 0x00060000, 0x00000004 },
1021 { 0x000000d7, 0x00000034 },
1022 { 0x000000d4, 0x00000008 },
1023 { 0x00008000, 0x00000004 },
1024 { 0xc000e000, 0000000000 },
1025 { 0x0000e1cc, 0x00000004 },
1026 { 0x0500e1cd, 0x00000004 },
1027 { 0x000ca000, 0x00000004 },
1028 { 0x000000de, 0x00000034 },
1029 { 0x000000da, 0x00000008 },
1030 { 0x0000a000, 0000000000 },
1031 { 0x0019e1cc, 0x00000004 },
1032 { 0x001b0001, 0x00000004 },
1033 { 0x0500a000, 0x00000004 },
1034 { 0x080041cd, 0x00000004 },
1035 { 0x000ca000, 0x00000004 },
1036 { 0x000000fb, 0x00000034 },
1037 { 0x0000004a, 0x00000008 },
1038 { 0000000000, 0000000000 },
1039 { 0000000000, 0000000000 },
1040 { 0000000000, 0000000000 },
1041 { 0000000000, 0000000000 },
1042 { 0000000000, 0000000000 },
1043 { 0000000000, 0000000000 },
1044 { 0000000000, 0000000000 },
1045 { 0000000000, 0000000000 },
1046 { 0000000000, 0000000000 },
1047 { 0000000000, 0000000000 },
1048 { 0000000000, 0000000000 },
1049 { 0000000000, 0000000000 },
1050 { 0000000000, 0000000000 },
1051 { 0000000000, 0000000000 },
1052 { 0000000000, 0000000000 },
1053 { 0000000000, 0000000000 },
1054 { 0x000c2000, 0x00000004 },
1055 { 0x001d0018, 0x00000004 },
1056 { 0x001a0001, 0x00000004 },
1057 { 0x000000fb, 0x00000034 },
1058 { 0x0000004a, 0x00000008 },
1059 { 0x0500a04a, 0x00000008 },
1060 { 0000000000, 0000000000 },
1061 { 0000000000, 0000000000 },
1062 { 0000000000, 0000000000 },
1063 { 0000000000, 0000000000 },
1064};
1065
1066static const u32 RS600_cp_microcode[][2] = {
1067 { 0x4200e000, 0000000000 },
1068 { 0x4000e000, 0000000000 },
1069 { 0x000000a0, 0x00000008 },
1070 { 0x000000a4, 0x00000008 },
1071 { 0x4a554b4a, 0000000000 },
1072 { 0x4a4a4467, 0000000000 },
1073 { 0x55526f75, 0000000000 },
1074 { 0x4a7e7d65, 0000000000 },
1075 { 0x4ae74af6, 0000000000 },
1076 { 0x4ad34a4a, 0000000000 },
1077 { 0xd6898989, 0000000000 },
1078 { 0xcd4addcf, 0000000000 },
1079 { 0x8ebe4ae2, 0000000000 },
1080 { 0xc38a8a8a, 0000000000 },
1081 { 0x4a0f8cc8, 0000000000 },
1082 { 0x000ca000, 0x00000004 },
1083 { 0x000d0012, 0x00000038 },
1084 { 0x0000e8b4, 0x00000004 },
1085 { 0x000d0014, 0x00000038 },
1086 { 0x0000e8b6, 0x00000004 },
1087 { 0x000d0016, 0x00000038 },
1088 { 0x0000e854, 0x00000004 },
1089 { 0x000d0018, 0x00000038 },
1090 { 0x0000e855, 0x00000004 },
1091 { 0x000d001a, 0x00000038 },
1092 { 0x0000e856, 0x00000004 },
1093 { 0x000d001c, 0x00000038 },
1094 { 0x0000e857, 0x00000004 },
1095 { 0x000d001e, 0x00000038 },
1096 { 0x0000e824, 0x00000004 },
1097 { 0x000d0020, 0x00000038 },
1098 { 0x0000e825, 0x00000004 },
1099 { 0x000d0022, 0x00000038 },
1100 { 0x0000e830, 0x00000004 },
1101 { 0x000d0024, 0x00000038 },
1102 { 0x0000f0c0, 0x00000004 },
1103 { 0x000d0026, 0x00000038 },
1104 { 0x0000f0c1, 0x00000004 },
1105 { 0x000d0028, 0x00000038 },
1106 { 0x0000f041, 0x00000004 },
1107 { 0x000d002a, 0x00000038 },
1108 { 0x0000f184, 0x00000004 },
1109 { 0x000d002c, 0x00000038 },
1110 { 0x0000f185, 0x00000004 },
1111 { 0x000d002e, 0x00000038 },
1112 { 0x0000f186, 0x00000004 },
1113 { 0x000d0030, 0x00000038 },
1114 { 0x0000f187, 0x00000004 },
1115 { 0x000d0032, 0x00000038 },
1116 { 0x0000f180, 0x00000004 },
1117 { 0x000d0034, 0x00000038 },
1118 { 0x0000f393, 0x00000004 },
1119 { 0x000d0036, 0x00000038 },
1120 { 0x0000f38a, 0x00000004 },
1121 { 0x000d0038, 0x00000038 },
1122 { 0x0000f38e, 0x00000004 },
1123 { 0x0000e821, 0x00000004 },
1124 { 0x0140a000, 0x00000004 },
1125 { 0x00000043, 0x00000018 },
1126 { 0x00cce800, 0x00000004 },
1127 { 0x001b0001, 0x00000004 },
1128 { 0x08004800, 0x00000004 },
1129 { 0x001b0001, 0x00000004 },
1130 { 0x08004800, 0x00000004 },
1131 { 0x001b0001, 0x00000004 },
1132 { 0x08004800, 0x00000004 },
1133 { 0x0000003a, 0x00000008 },
1134 { 0x0000a000, 0000000000 },
1135 { 0x2000451d, 0x00000004 },
1136 { 0x0000e580, 0x00000004 },
1137 { 0x000ce581, 0x00000004 },
1138 { 0x08004580, 0x00000004 },
1139 { 0x000ce581, 0x00000004 },
1140 { 0x00000047, 0x00000008 },
1141 { 0x0000a000, 0000000000 },
1142 { 0x000c2000, 0x00000004 },
1143 { 0x0000e50e, 0x00000004 },
1144 { 0x00032000, 0x00000004 },
1145 { 0x00022051, 0x00000028 },
1146 { 0x00000051, 0x00000024 },
1147 { 0x0800450f, 0x00000004 },
1148 { 0x0000a04b, 0x00000008 },
1149 { 0x0000e565, 0x00000004 },
1150 { 0x0000e566, 0x00000004 },
1151 { 0x00000052, 0x00000008 },
1152 { 0x03cca5b4, 0x00000004 },
1153 { 0x05432000, 0x00000004 },
1154 { 0x00022000, 0x00000004 },
1155 { 0x4ccce05e, 0x00000030 },
1156 { 0x08274565, 0x00000004 },
1157 { 0x0000005e, 0x00000030 },
1158 { 0x08004564, 0x00000004 },
1159 { 0x0000e566, 0x00000004 },
1160 { 0x00000055, 0x00000008 },
1161 { 0x00802061, 0x00000010 },
1162 { 0x00202000, 0x00000004 },
1163 { 0x001b00ff, 0x00000004 },
1164 { 0x01000064, 0x00000010 },
1165 { 0x001f2000, 0x00000004 },
1166 { 0x001c00ff, 0x00000004 },
1167 { 0000000000, 0x0000000c },
1168 { 0x00000072, 0x00000030 },
1169 { 0x00000055, 0x00000008 },
1170 { 0x0000e576, 0x00000004 },
1171 { 0x0000e577, 0x00000004 },
1172 { 0x0000e50e, 0x00000004 },
1173 { 0x0000e50f, 0x00000004 },
1174 { 0x0140a000, 0x00000004 },
1175 { 0x00000069, 0x00000018 },
1176 { 0x00c0e5f9, 0x000000c2 },
1177 { 0x00000069, 0x00000008 },
1178 { 0x0014e50e, 0x00000004 },
1179 { 0x0040e50f, 0x00000004 },
1180 { 0x00c0006c, 0x00000008 },
1181 { 0x0000e570, 0x00000004 },
1182 { 0x0000e571, 0x00000004 },
1183 { 0x0000e572, 0x0000000c },
1184 { 0x0000a000, 0x00000004 },
1185 { 0x0140a000, 0x00000004 },
1186 { 0x0000e568, 0x00000004 },
1187 { 0x000c2000, 0x00000004 },
1188 { 0x00000076, 0x00000018 },
1189 { 0x000b0000, 0x00000004 },
1190 { 0x18c0e562, 0x00000004 },
1191 { 0x00000078, 0x00000008 },
1192 { 0x00c00077, 0x00000008 },
1193 { 0x000700d5, 0x00000004 },
1194 { 0x00000084, 0x00000038 },
1195 { 0x000ca086, 0x00000030 },
1196 { 0x080045bb, 0x00000004 },
1197 { 0x000c2087, 0x00000030 },
1198 { 0x0800e5bc, 0000000000 },
1199 { 0x0000e5bb, 0x00000004 },
1200 { 0x0000e5bc, 0000000000 },
1201 { 0x00120000, 0x0000000c },
1202 { 0x00120000, 0x00000004 },
1203 { 0x001b0002, 0x0000000c },
1204 { 0x0000a000, 0x00000004 },
1205 { 0x0000e821, 0x00000004 },
1206 { 0x0000e800, 0000000000 },
1207 { 0x0000e821, 0x00000004 },
1208 { 0x0000e82e, 0000000000 },
1209 { 0x02cca000, 0x00000004 },
1210 { 0x00140000, 0x00000004 },
1211 { 0x000ce1cc, 0x00000004 },
1212 { 0x050de1cd, 0x00000004 },
1213 { 0x00400000, 0x00000004 },
1214 { 0x00000096, 0x00000018 },
1215 { 0x00c0a000, 0x00000004 },
1216 { 0x00000093, 0x00000008 },
1217 { 0x00000098, 0x00000020 },
1218 { 0x4200e000, 0000000000 },
1219 { 0x0000009f, 0x00000038 },
1220 { 0x000ca000, 0x00000004 },
1221 { 0x00140000, 0x00000004 },
1222 { 0x000c2000, 0x00000004 },
1223 { 0x00160000, 0x00000004 },
1224 { 0x700ce000, 0x00000004 },
1225 { 0x0014009b, 0x00000008 },
1226 { 0x4000e000, 0000000000 },
1227 { 0x02400000, 0x00000004 },
1228 { 0x400ee000, 0x00000004 },
1229 { 0x02400000, 0x00000004 },
1230 { 0x4000e000, 0000000000 },
1231 { 0x000c2000, 0x00000004 },
1232 { 0x0240e51b, 0x00000004 },
1233 { 0x0080e50a, 0x00000005 },
1234 { 0x0080e50b, 0x00000005 },
1235 { 0x00220000, 0x00000004 },
1236 { 0x000700d5, 0x00000004 },
1237 { 0x000000b2, 0x00000038 },
1238 { 0x000c2087, 0x00000030 },
1239 { 0x0880e5bd, 0x00000005 },
1240 { 0x000c2086, 0x00000030 },
1241 { 0x0800e5bb, 0x00000005 },
1242 { 0x000c2087, 0x00000030 },
1243 { 0x0880e5bc, 0x00000005 },
1244 { 0x000000b5, 0x00000008 },
1245 { 0x0080e5bd, 0x00000005 },
1246 { 0x0000e5bb, 0x00000005 },
1247 { 0x0080e5bc, 0x00000005 },
1248 { 0x00210000, 0x00000004 },
1249 { 0x02800000, 0x00000004 },
1250 { 0x00c000b9, 0x00000018 },
1251 { 0x4180e000, 0x00000040 },
1252 { 0x000000bb, 0x00000024 },
1253 { 0x01000000, 0x0000000c },
1254 { 0x0100e51d, 0x0000000c },
1255 { 0x000045bb, 0x00000004 },
1256 { 0x000080b5, 0x00000008 },
1257 { 0x0000f3ce, 0x00000004 },
1258 { 0x0140a000, 0x00000004 },
1259 { 0x00cc2000, 0x00000004 },
1260 { 0x08c053cf, 0x00000040 },
1261 { 0x00008000, 0000000000 },
1262 { 0x0000f3d2, 0x00000004 },
1263 { 0x0140a000, 0x00000004 },
1264 { 0x00cc2000, 0x00000004 },
1265 { 0x08c053d3, 0x00000040 },
1266 { 0x00008000, 0000000000 },
1267 { 0x0000f39d, 0x00000004 },
1268 { 0x0140a000, 0x00000004 },
1269 { 0x00cc2000, 0x00000004 },
1270 { 0x08c0539e, 0x00000040 },
1271 { 0x00008000, 0000000000 },
1272 { 0x03c00830, 0x00000004 },
1273 { 0x4200e000, 0000000000 },
1274 { 0x0000a000, 0x00000004 },
1275 { 0x200045e0, 0x00000004 },
1276 { 0x0000e5e1, 0000000000 },
1277 { 0x00000001, 0000000000 },
1278 { 0x000700d2, 0x00000004 },
1279 { 0x0800e394, 0000000000 },
1280 { 0000000000, 0000000000 },
1281 { 0x0000e8c4, 0x00000004 },
1282 { 0x0000e8c5, 0x00000004 },
1283 { 0x0000e8c6, 0x00000004 },
1284 { 0x0000e928, 0x00000004 },
1285 { 0x0000e929, 0x00000004 },
1286 { 0x0000e92a, 0x00000004 },
1287 { 0x000000d6, 0x00000008 },
1288 { 0x0000e928, 0x00000004 },
1289 { 0x0000e929, 0x00000004 },
1290 { 0x0000e92a, 0x00000004 },
1291 { 0x000000dd, 0x00000008 },
1292 { 0x00e00116, 0000000000 },
1293 { 0x000700e1, 0x00000004 },
1294 { 0x0800401c, 0x00000004 },
1295 { 0x200050e7, 0x00000004 },
1296 { 0x0000e01d, 0x00000004 },
1297 { 0x000000e4, 0x00000008 },
1298 { 0x02c02000, 0x00000004 },
1299 { 0x00060000, 0x00000004 },
1300 { 0x000000eb, 0x00000034 },
1301 { 0x000000e8, 0x00000008 },
1302 { 0x00008000, 0x00000004 },
1303 { 0xc000e000, 0000000000 },
1304 { 0000000000, 0000000000 },
1305 { 0000000000, 0000000000 },
1306 { 0000000000, 0000000000 },
1307 { 0000000000, 0000000000 },
1308 { 0000000000, 0000000000 },
1309 { 0000000000, 0000000000 },
1310 { 0000000000, 0000000000 },
1311 { 0000000000, 0000000000 },
1312 { 0000000000, 0000000000 },
1313 { 0x000c2000, 0x00000004 },
1314 { 0x001d0018, 0x00000004 },
1315 { 0x001a0001, 0x00000004 },
1316 { 0x000000fb, 0x00000034 },
1317 { 0x0000004a, 0x00000008 },
1318 { 0x0500a04a, 0x00000008 },
1319 { 0000000000, 0000000000 },
1320 { 0000000000, 0000000000 },
1321 { 0000000000, 0000000000 },
1322 { 0000000000, 0000000000 },
1323};
1324
1325static const u32 RS690_cp_microcode[][2] = {
1326 { 0x000000dd, 0x00000008 },
1327 { 0x000000df, 0x00000008 },
1328 { 0x000000a0, 0x00000008 },
1329 { 0x000000a4, 0x00000008 },
1330 { 0x4a554b4a, 0000000000 },
1331 { 0x4a4a4467, 0000000000 },
1332 { 0x55526f75, 0000000000 },
1333 { 0x4a7e7d65, 0000000000 },
1334 { 0x4ad74af6, 0000000000 },
1335 { 0x4ac94a4a, 0000000000 },
1336 { 0xcc898989, 0000000000 },
1337 { 0xc34ad3c5, 0000000000 },
1338 { 0x8e4a4a4a, 0000000000 },
1339 { 0x4a8a8a8a, 0000000000 },
1340 { 0x4a0f8c4a, 0000000000 },
1341 { 0x000ca000, 0x00000004 },
1342 { 0x000d0012, 0x00000038 },
1343 { 0x0000e8b4, 0x00000004 },
1344 { 0x000d0014, 0x00000038 },
1345 { 0x0000e8b6, 0x00000004 },
1346 { 0x000d0016, 0x00000038 },
1347 { 0x0000e854, 0x00000004 },
1348 { 0x000d0018, 0x00000038 },
1349 { 0x0000e855, 0x00000004 },
1350 { 0x000d001a, 0x00000038 },
1351 { 0x0000e856, 0x00000004 },
1352 { 0x000d001c, 0x00000038 },
1353 { 0x0000e857, 0x00000004 },
1354 { 0x000d001e, 0x00000038 },
1355 { 0x0000e824, 0x00000004 },
1356 { 0x000d0020, 0x00000038 },
1357 { 0x0000e825, 0x00000004 },
1358 { 0x000d0022, 0x00000038 },
1359 { 0x0000e830, 0x00000004 },
1360 { 0x000d0024, 0x00000038 },
1361 { 0x0000f0c0, 0x00000004 },
1362 { 0x000d0026, 0x00000038 },
1363 { 0x0000f0c1, 0x00000004 },
1364 { 0x000d0028, 0x00000038 },
1365 { 0x0000f041, 0x00000004 },
1366 { 0x000d002a, 0x00000038 },
1367 { 0x0000f184, 0x00000004 },
1368 { 0x000d002c, 0x00000038 },
1369 { 0x0000f185, 0x00000004 },
1370 { 0x000d002e, 0x00000038 },
1371 { 0x0000f186, 0x00000004 },
1372 { 0x000d0030, 0x00000038 },
1373 { 0x0000f187, 0x00000004 },
1374 { 0x000d0032, 0x00000038 },
1375 { 0x0000f180, 0x00000004 },
1376 { 0x000d0034, 0x00000038 },
1377 { 0x0000f393, 0x00000004 },
1378 { 0x000d0036, 0x00000038 },
1379 { 0x0000f38a, 0x00000004 },
1380 { 0x000d0038, 0x00000038 },
1381 { 0x0000f38e, 0x00000004 },
1382 { 0x0000e821, 0x00000004 },
1383 { 0x0140a000, 0x00000004 },
1384 { 0x00000043, 0x00000018 },
1385 { 0x00cce800, 0x00000004 },
1386 { 0x001b0001, 0x00000004 },
1387 { 0x08004800, 0x00000004 },
1388 { 0x001b0001, 0x00000004 },
1389 { 0x08004800, 0x00000004 },
1390 { 0x001b0001, 0x00000004 },
1391 { 0x08004800, 0x00000004 },
1392 { 0x0000003a, 0x00000008 },
1393 { 0x0000a000, 0000000000 },
1394 { 0x2000451d, 0x00000004 },
1395 { 0x0000e580, 0x00000004 },
1396 { 0x000ce581, 0x00000004 },
1397 { 0x08004580, 0x00000004 },
1398 { 0x000ce581, 0x00000004 },
1399 { 0x00000047, 0x00000008 },
1400 { 0x0000a000, 0000000000 },
1401 { 0x000c2000, 0x00000004 },
1402 { 0x0000e50e, 0x00000004 },
1403 { 0x00032000, 0x00000004 },
1404 { 0x00022051, 0x00000028 },
1405 { 0x00000051, 0x00000024 },
1406 { 0x0800450f, 0x00000004 },
1407 { 0x0000a04b, 0x00000008 },
1408 { 0x0000e565, 0x00000004 },
1409 { 0x0000e566, 0x00000004 },
1410 { 0x00000052, 0x00000008 },
1411 { 0x03cca5b4, 0x00000004 },
1412 { 0x05432000, 0x00000004 },
1413 { 0x00022000, 0x00000004 },
1414 { 0x4ccce05e, 0x00000030 },
1415 { 0x08274565, 0x00000004 },
1416 { 0x0000005e, 0x00000030 },
1417 { 0x08004564, 0x00000004 },
1418 { 0x0000e566, 0x00000004 },
1419 { 0x00000055, 0x00000008 },
1420 { 0x00802061, 0x00000010 },
1421 { 0x00202000, 0x00000004 },
1422 { 0x001b00ff, 0x00000004 },
1423 { 0x01000064, 0x00000010 },
1424 { 0x001f2000, 0x00000004 },
1425 { 0x001c00ff, 0x00000004 },
1426 { 0000000000, 0x0000000c },
1427 { 0x00000072, 0x00000030 },
1428 { 0x00000055, 0x00000008 },
1429 { 0x0000e576, 0x00000004 },
1430 { 0x0000e577, 0x00000004 },
1431 { 0x0000e50e, 0x00000004 },
1432 { 0x0000e50f, 0x00000004 },
1433 { 0x0140a000, 0x00000004 },
1434 { 0x00000069, 0x00000018 },
1435 { 0x00c0e5f9, 0x000000c2 },
1436 { 0x00000069, 0x00000008 },
1437 { 0x0014e50e, 0x00000004 },
1438 { 0x0040e50f, 0x00000004 },
1439 { 0x00c0006c, 0x00000008 },
1440 { 0x0000e570, 0x00000004 },
1441 { 0x0000e571, 0x00000004 },
1442 { 0x0000e572, 0x0000000c },
1443 { 0x0000a000, 0x00000004 },
1444 { 0x0140a000, 0x00000004 },
1445 { 0x0000e568, 0x00000004 },
1446 { 0x000c2000, 0x00000004 },
1447 { 0x00000076, 0x00000018 },
1448 { 0x000b0000, 0x00000004 },
1449 { 0x18c0e562, 0x00000004 },
1450 { 0x00000078, 0x00000008 },
1451 { 0x00c00077, 0x00000008 },
1452 { 0x000700cb, 0x00000004 },
1453 { 0x00000084, 0x00000038 },
1454 { 0x000ca086, 0x00000030 },
1455 { 0x080045bb, 0x00000004 },
1456 { 0x000c2087, 0x00000030 },
1457 { 0x0800e5bc, 0000000000 },
1458 { 0x0000e5bb, 0x00000004 },
1459 { 0x0000e5bc, 0000000000 },
1460 { 0x00120000, 0x0000000c },
1461 { 0x00120000, 0x00000004 },
1462 { 0x001b0002, 0x0000000c },
1463 { 0x0000a000, 0x00000004 },
1464 { 0x0000e821, 0x00000004 },
1465 { 0x0000e800, 0000000000 },
1466 { 0x0000e821, 0x00000004 },
1467 { 0x0000e82e, 0000000000 },
1468 { 0x02cca000, 0x00000004 },
1469 { 0x00140000, 0x00000004 },
1470 { 0x000ce1cc, 0x00000004 },
1471 { 0x050de1cd, 0x00000004 },
1472 { 0x00400000, 0x00000004 },
1473 { 0x00000096, 0x00000018 },
1474 { 0x00c0a000, 0x00000004 },
1475 { 0x00000093, 0x00000008 },
1476 { 0x00000098, 0x00000020 },
1477 { 0x4200e000, 0000000000 },
1478 { 0x0000009f, 0x00000038 },
1479 { 0x000ca000, 0x00000004 },
1480 { 0x00140000, 0x00000004 },
1481 { 0x000c2000, 0x00000004 },
1482 { 0x00160000, 0x00000004 },
1483 { 0x700ce000, 0x00000004 },
1484 { 0x0014009b, 0x00000008 },
1485 { 0x4000e000, 0000000000 },
1486 { 0x02400000, 0x00000004 },
1487 { 0x400ee000, 0x00000004 },
1488 { 0x02400000, 0x00000004 },
1489 { 0x4000e000, 0000000000 },
1490 { 0x00100000, 0x0000002c },
1491 { 0x00004000, 0000000000 },
1492 { 0x080045c8, 0x00000004 },
1493 { 0x00240005, 0x00000004 },
1494 { 0x08004d0b, 0x00000004 },
1495 { 0x000c2000, 0x00000004 },
1496 { 0x0240e51b, 0x00000004 },
1497 { 0x0080e50a, 0x00000005 },
1498 { 0x0080e50b, 0x00000005 },
1499 { 0x00220000, 0x00000004 },
1500 { 0x000700cb, 0x00000004 },
1501 { 0x000000b7, 0x00000038 },
1502 { 0x000c2087, 0x00000030 },
1503 { 0x0880e5bd, 0x00000005 },
1504 { 0x000c2086, 0x00000030 },
1505 { 0x0800e5bb, 0x00000005 },
1506 { 0x000c2087, 0x00000030 },
1507 { 0x0880e5bc, 0x00000005 },
1508 { 0x000000ba, 0x00000008 },
1509 { 0x0080e5bd, 0x00000005 },
1510 { 0x0000e5bb, 0x00000005 },
1511 { 0x0080e5bc, 0x00000005 },
1512 { 0x00210000, 0x00000004 },
1513 { 0x02800000, 0x00000004 },
1514 { 0x00c000be, 0x00000018 },
1515 { 0x4180e000, 0x00000040 },
1516 { 0x000000c0, 0x00000024 },
1517 { 0x01000000, 0x0000000c },
1518 { 0x0100e51d, 0x0000000c },
1519 { 0x000045bb, 0x00000004 },
1520 { 0x000080ba, 0x00000008 },
1521 { 0x03c00830, 0x00000004 },
1522 { 0x4200e000, 0000000000 },
1523 { 0x0000a000, 0x00000004 },
1524 { 0x200045e0, 0x00000004 },
1525 { 0x0000e5e1, 0000000000 },
1526 { 0x00000001, 0000000000 },
1527 { 0x000700c8, 0x00000004 },
1528 { 0x0800e394, 0000000000 },
1529 { 0000000000, 0000000000 },
1530 { 0x0000e8c4, 0x00000004 },
1531 { 0x0000e8c5, 0x00000004 },
1532 { 0x0000e8c6, 0x00000004 },
1533 { 0x0000e928, 0x00000004 },
1534 { 0x0000e929, 0x00000004 },
1535 { 0x0000e92a, 0x00000004 },
1536 { 0x000000cc, 0x00000008 },
1537 { 0x0000e928, 0x00000004 },
1538 { 0x0000e929, 0x00000004 },
1539 { 0x0000e92a, 0x00000004 },
1540 { 0x000000d3, 0x00000008 },
1541 { 0x02c02000, 0x00000004 },
1542 { 0x00060000, 0x00000004 },
1543 { 0x000000db, 0x00000034 },
1544 { 0x000000d8, 0x00000008 },
1545 { 0x00008000, 0x00000004 },
1546 { 0xc000e000, 0000000000 },
1547 { 0x000000e1, 0x00000030 },
1548 { 0x4200e000, 0000000000 },
1549 { 0x000000e1, 0x00000030 },
1550 { 0x4000e000, 0000000000 },
1551 { 0x0025001b, 0x00000004 },
1552 { 0x00230000, 0x00000004 },
1553 { 0x00250005, 0x00000004 },
1554 { 0x000000e6, 0x00000034 },
1555 { 0000000000, 0x0000000c },
1556 { 0x00244000, 0x00000004 },
1557 { 0x080045c8, 0x00000004 },
1558 { 0x00240005, 0x00000004 },
1559 { 0x08004d0b, 0x0000000c },
1560 { 0000000000, 0000000000 },
1561 { 0000000000, 0000000000 },
1562 { 0000000000, 0000000000 },
1563 { 0000000000, 0000000000 },
1564 { 0000000000, 0000000000 },
1565 { 0000000000, 0000000000 },
1566 { 0000000000, 0000000000 },
1567 { 0000000000, 0000000000 },
1568 { 0000000000, 0000000000 },
1569 { 0000000000, 0000000000 },
1570 { 0000000000, 0000000000 },
1571 { 0000000000, 0000000000 },
1572 { 0x000c2000, 0x00000004 },
1573 { 0x001d0018, 0x00000004 },
1574 { 0x001a0001, 0x00000004 },
1575 { 0x000000fb, 0x00000034 },
1576 { 0x0000004a, 0x00000008 },
1577 { 0x0500a04a, 0x00000008 },
1578 { 0000000000, 0000000000 },
1579 { 0000000000, 0000000000 },
1580 { 0000000000, 0000000000 },
1581 { 0000000000, 0000000000 },
1582};
1583
1584static const u32 R520_cp_microcode[][2] = {
1585 { 0x4200e000, 0000000000 },
1586 { 0x4000e000, 0000000000 },
1587 { 0x00000099, 0x00000008 },
1588 { 0x0000009d, 0x00000008 },
1589 { 0x4a554b4a, 0000000000 },
1590 { 0x4a4a4467, 0000000000 },
1591 { 0x55526f75, 0000000000 },
1592 { 0x4a7e7d65, 0000000000 },
1593 { 0xe0dae6f6, 0000000000 },
1594 { 0x4ac54a4a, 0000000000 },
1595 { 0xc8828282, 0000000000 },
1596 { 0xbf4acfc1, 0000000000 },
1597 { 0x87b04ad5, 0000000000 },
1598 { 0xb5838383, 0000000000 },
1599 { 0x4a0f85ba, 0000000000 },
1600 { 0x000ca000, 0x00000004 },
1601 { 0x000d0012, 0x00000038 },
1602 { 0x0000e8b4, 0x00000004 },
1603 { 0x000d0014, 0x00000038 },
1604 { 0x0000e8b6, 0x00000004 },
1605 { 0x000d0016, 0x00000038 },
1606 { 0x0000e854, 0x00000004 },
1607 { 0x000d0018, 0x00000038 },
1608 { 0x0000e855, 0x00000004 },
1609 { 0x000d001a, 0x00000038 },
1610 { 0x0000e856, 0x00000004 },
1611 { 0x000d001c, 0x00000038 },
1612 { 0x0000e857, 0x00000004 },
1613 { 0x000d001e, 0x00000038 },
1614 { 0x0000e824, 0x00000004 },
1615 { 0x000d0020, 0x00000038 },
1616 { 0x0000e825, 0x00000004 },
1617 { 0x000d0022, 0x00000038 },
1618 { 0x0000e830, 0x00000004 },
1619 { 0x000d0024, 0x00000038 },
1620 { 0x0000f0c0, 0x00000004 },
1621 { 0x000d0026, 0x00000038 },
1622 { 0x0000f0c1, 0x00000004 },
1623 { 0x000d0028, 0x00000038 },
1624 { 0x0000e000, 0x00000004 },
1625 { 0x000d002a, 0x00000038 },
1626 { 0x0000e000, 0x00000004 },
1627 { 0x000d002c, 0x00000038 },
1628 { 0x0000e000, 0x00000004 },
1629 { 0x000d002e, 0x00000038 },
1630 { 0x0000e000, 0x00000004 },
1631 { 0x000d0030, 0x00000038 },
1632 { 0x0000e000, 0x00000004 },
1633 { 0x000d0032, 0x00000038 },
1634 { 0x0000f180, 0x00000004 },
1635 { 0x000d0034, 0x00000038 },
1636 { 0x0000f393, 0x00000004 },
1637 { 0x000d0036, 0x00000038 },
1638 { 0x0000f38a, 0x00000004 },
1639 { 0x000d0038, 0x00000038 },
1640 { 0x0000f38e, 0x00000004 },
1641 { 0x0000e821, 0x00000004 },
1642 { 0x0140a000, 0x00000004 },
1643 { 0x00000043, 0x00000018 },
1644 { 0x00cce800, 0x00000004 },
1645 { 0x001b0001, 0x00000004 },
1646 { 0x08004800, 0x00000004 },
1647 { 0x001b0001, 0x00000004 },
1648 { 0x08004800, 0x00000004 },
1649 { 0x001b0001, 0x00000004 },
1650 { 0x08004800, 0x00000004 },
1651 { 0x0000003a, 0x00000008 },
1652 { 0x0000a000, 0000000000 },
1653 { 0x2000451d, 0x00000004 },
1654 { 0x0000e580, 0x00000004 },
1655 { 0x000ce581, 0x00000004 },
1656 { 0x08004580, 0x00000004 },
1657 { 0x000ce581, 0x00000004 },
1658 { 0x00000047, 0x00000008 },
1659 { 0x0000a000, 0000000000 },
1660 { 0x000c2000, 0x00000004 },
1661 { 0x0000e50e, 0x00000004 },
1662 { 0x00032000, 0x00000004 },
1663 { 0x00022051, 0x00000028 },
1664 { 0x00000051, 0x00000024 },
1665 { 0x0800450f, 0x00000004 },
1666 { 0x0000a04b, 0x00000008 },
1667 { 0x0000e565, 0x00000004 },
1668 { 0x0000e566, 0x00000004 },
1669 { 0x00000052, 0x00000008 },
1670 { 0x03cca5b4, 0x00000004 },
1671 { 0x05432000, 0x00000004 },
1672 { 0x00022000, 0x00000004 },
1673 { 0x4ccce05e, 0x00000030 },
1674 { 0x08274565, 0x00000004 },
1675 { 0x0000005e, 0x00000030 },
1676 { 0x08004564, 0x00000004 },
1677 { 0x0000e566, 0x00000004 },
1678 { 0x00000055, 0x00000008 },
1679 { 0x00802061, 0x00000010 },
1680 { 0x00202000, 0x00000004 },
1681 { 0x001b00ff, 0x00000004 },
1682 { 0x01000064, 0x00000010 },
1683 { 0x001f2000, 0x00000004 },
1684 { 0x001c00ff, 0x00000004 },
1685 { 0000000000, 0x0000000c },
1686 { 0x00000072, 0x00000030 },
1687 { 0x00000055, 0x00000008 },
1688 { 0x0000e576, 0x00000004 },
1689 { 0x0000e577, 0x00000004 },
1690 { 0x0000e50e, 0x00000004 },
1691 { 0x0000e50f, 0x00000004 },
1692 { 0x0140a000, 0x00000004 },
1693 { 0x00000069, 0x00000018 },
1694 { 0x00c0e5f9, 0x000000c2 },
1695 { 0x00000069, 0x00000008 },
1696 { 0x0014e50e, 0x00000004 },
1697 { 0x0040e50f, 0x00000004 },
1698 { 0x00c0006c, 0x00000008 },
1699 { 0x0000e570, 0x00000004 },
1700 { 0x0000e571, 0x00000004 },
1701 { 0x0000e572, 0x0000000c },
1702 { 0x0000a000, 0x00000004 },
1703 { 0x0140a000, 0x00000004 },
1704 { 0x0000e568, 0x00000004 },
1705 { 0x000c2000, 0x00000004 },
1706 { 0x00000076, 0x00000018 },
1707 { 0x000b0000, 0x00000004 },
1708 { 0x18c0e562, 0x00000004 },
1709 { 0x00000078, 0x00000008 },
1710 { 0x00c00077, 0x00000008 },
1711 { 0x000700c7, 0x00000004 },
1712 { 0x00000080, 0x00000038 },
1713 { 0x0000e5bb, 0x00000004 },
1714 { 0x0000e5bc, 0000000000 },
1715 { 0x0000a000, 0x00000004 },
1716 { 0x0000e821, 0x00000004 },
1717 { 0x0000e800, 0000000000 },
1718 { 0x0000e821, 0x00000004 },
1719 { 0x0000e82e, 0000000000 },
1720 { 0x02cca000, 0x00000004 },
1721 { 0x00140000, 0x00000004 },
1722 { 0x000ce1cc, 0x00000004 },
1723 { 0x050de1cd, 0x00000004 },
1724 { 0x00400000, 0x00000004 },
1725 { 0x0000008f, 0x00000018 },
1726 { 0x00c0a000, 0x00000004 },
1727 { 0x0000008c, 0x00000008 },
1728 { 0x00000091, 0x00000020 },
1729 { 0x4200e000, 0000000000 },
1730 { 0x00000098, 0x00000038 },
1731 { 0x000ca000, 0x00000004 },
1732 { 0x00140000, 0x00000004 },
1733 { 0x000c2000, 0x00000004 },
1734 { 0x00160000, 0x00000004 },
1735 { 0x700ce000, 0x00000004 },
1736 { 0x00140094, 0x00000008 },
1737 { 0x4000e000, 0000000000 },
1738 { 0x02400000, 0x00000004 },
1739 { 0x400ee000, 0x00000004 },
1740 { 0x02400000, 0x00000004 },
1741 { 0x4000e000, 0000000000 },
1742 { 0x000c2000, 0x00000004 },
1743 { 0x0240e51b, 0x00000004 },
1744 { 0x0080e50a, 0x00000005 },
1745 { 0x0080e50b, 0x00000005 },
1746 { 0x00220000, 0x00000004 },
1747 { 0x000700c7, 0x00000004 },
1748 { 0x000000a4, 0x00000038 },
1749 { 0x0080e5bd, 0x00000005 },
1750 { 0x0000e5bb, 0x00000005 },
1751 { 0x0080e5bc, 0x00000005 },
1752 { 0x00210000, 0x00000004 },
1753 { 0x02800000, 0x00000004 },
1754 { 0x00c000ab, 0x00000018 },
1755 { 0x4180e000, 0x00000040 },
1756 { 0x000000ad, 0x00000024 },
1757 { 0x01000000, 0x0000000c },
1758 { 0x0100e51d, 0x0000000c },
1759 { 0x000045bb, 0x00000004 },
1760 { 0x000080a7, 0x00000008 },
1761 { 0x0000f3ce, 0x00000004 },
1762 { 0x0140a000, 0x00000004 },
1763 { 0x00cc2000, 0x00000004 },
1764 { 0x08c053cf, 0x00000040 },
1765 { 0x00008000, 0000000000 },
1766 { 0x0000f3d2, 0x00000004 },
1767 { 0x0140a000, 0x00000004 },
1768 { 0x00cc2000, 0x00000004 },
1769 { 0x08c053d3, 0x00000040 },
1770 { 0x00008000, 0000000000 },
1771 { 0x0000f39d, 0x00000004 },
1772 { 0x0140a000, 0x00000004 },
1773 { 0x00cc2000, 0x00000004 },
1774 { 0x08c0539e, 0x00000040 },
1775 { 0x00008000, 0000000000 },
1776 { 0x03c00830, 0x00000004 },
1777 { 0x4200e000, 0000000000 },
1778 { 0x0000a000, 0x00000004 },
1779 { 0x200045e0, 0x00000004 },
1780 { 0x0000e5e1, 0000000000 },
1781 { 0x00000001, 0000000000 },
1782 { 0x000700c4, 0x00000004 },
1783 { 0x0800e394, 0000000000 },
1784 { 0000000000, 0000000000 },
1785 { 0x0000e8c4, 0x00000004 },
1786 { 0x0000e8c5, 0x00000004 },
1787 { 0x0000e8c6, 0x00000004 },
1788 { 0x0000e928, 0x00000004 },
1789 { 0x0000e929, 0x00000004 },
1790 { 0x0000e92a, 0x00000004 },
1791 { 0x000000c8, 0x00000008 },
1792 { 0x0000e928, 0x00000004 },
1793 { 0x0000e929, 0x00000004 },
1794 { 0x0000e92a, 0x00000004 },
1795 { 0x000000cf, 0x00000008 },
1796 { 0xdeadbeef, 0000000000 },
1797 { 0x00000116, 0000000000 },
1798 { 0x000700d3, 0x00000004 },
1799 { 0x080050e7, 0x00000004 },
1800 { 0x000700d4, 0x00000004 },
1801 { 0x0800401c, 0x00000004 },
1802 { 0x0000e01d, 0000000000 },
1803 { 0x02c02000, 0x00000004 },
1804 { 0x00060000, 0x00000004 },
1805 { 0x000000de, 0x00000034 },
1806 { 0x000000db, 0x00000008 },
1807 { 0x00008000, 0x00000004 },
1808 { 0xc000e000, 0000000000 },
1809 { 0x0000e1cc, 0x00000004 },
1810 { 0x0500e1cd, 0x00000004 },
1811 { 0x000ca000, 0x00000004 },
1812 { 0x000000e5, 0x00000034 },
1813 { 0x000000e1, 0x00000008 },
1814 { 0x0000a000, 0000000000 },
1815 { 0x0019e1cc, 0x00000004 },
1816 { 0x001b0001, 0x00000004 },
1817 { 0x0500a000, 0x00000004 },
1818 { 0x080041cd, 0x00000004 },
1819 { 0x000ca000, 0x00000004 },
1820 { 0x000000fb, 0x00000034 },
1821 { 0x0000004a, 0x00000008 },
1822 { 0000000000, 0000000000 },
1823 { 0000000000, 0000000000 },
1824 { 0000000000, 0000000000 },
1825 { 0000000000, 0000000000 },
1826 { 0000000000, 0000000000 },
1827 { 0000000000, 0000000000 },
1828 { 0000000000, 0000000000 },
1829 { 0000000000, 0000000000 },
1830 { 0000000000, 0000000000 },
1831 { 0x000c2000, 0x00000004 },
1832 { 0x001d0018, 0x00000004 },
1833 { 0x001a0001, 0x00000004 },
1834 { 0x000000fb, 0x00000034 },
1835 { 0x0000004a, 0x00000008 },
1836 { 0x0500a04a, 0x00000008 },
1837 { 0000000000, 0000000000 },
1838 { 0000000000, 0000000000 },
1839 { 0000000000, 0000000000 },
1840 { 0000000000, 0000000000 },
1841};
1842
1843
1844#endif
diff --git a/drivers/char/drm/radeon_state.c b/drivers/char/drm/radeon_state.c
index 6f75512f591e..11c146b49211 100644
--- a/drivers/char/drm/radeon_state.c
+++ b/drivers/char/drm/radeon_state.c
@@ -1662,7 +1662,7 @@ static int radeon_cp_dispatch_texture(struct drm_device * dev,
1662 u32 height; 1662 u32 height;
1663 int i; 1663 int i;
1664 u32 texpitch, microtile; 1664 u32 texpitch, microtile;
1665 u32 offset; 1665 u32 offset, byte_offset;
1666 RING_LOCALS; 1666 RING_LOCALS;
1667 1667
1668 if (radeon_check_and_fixup_offset(dev_priv, file_priv, &tex->offset)) { 1668 if (radeon_check_and_fixup_offset(dev_priv, file_priv, &tex->offset)) {
@@ -1727,6 +1727,13 @@ static int radeon_cp_dispatch_texture(struct drm_device * dev,
1727 } else 1727 } else
1728 microtile = 0; 1728 microtile = 0;
1729 1729
1730 /* this might fail for zero-sized uploads - are those illegal? */
1731 if (!radeon_check_offset(dev_priv, tex->offset + image->height *
1732 blit_width - 1)) {
1733 DRM_ERROR("Invalid final destination offset\n");
1734 return -EINVAL;
1735 }
1736
1730 DRM_DEBUG("tex=%dx%d blit=%d\n", tex_width, tex->height, blit_width); 1737 DRM_DEBUG("tex=%dx%d blit=%d\n", tex_width, tex->height, blit_width);
1731 1738
1732 do { 1739 do {
@@ -1840,6 +1847,7 @@ static int radeon_cp_dispatch_texture(struct drm_device * dev,
1840 } 1847 }
1841 1848
1842#undef RADEON_COPY_MT 1849#undef RADEON_COPY_MT
1850 byte_offset = (image->y & ~2047) * blit_width;
1843 buf->file_priv = file_priv; 1851 buf->file_priv = file_priv;
1844 buf->used = size; 1852 buf->used = size;
1845 offset = dev_priv->gart_buffers_offset + buf->offset; 1853 offset = dev_priv->gart_buffers_offset + buf->offset;
@@ -1854,9 +1862,9 @@ static int radeon_cp_dispatch_texture(struct drm_device * dev,
1854 RADEON_DP_SRC_SOURCE_MEMORY | 1862 RADEON_DP_SRC_SOURCE_MEMORY |
1855 RADEON_GMC_CLR_CMP_CNTL_DIS | RADEON_GMC_WR_MSK_DIS); 1863 RADEON_GMC_CLR_CMP_CNTL_DIS | RADEON_GMC_WR_MSK_DIS);
1856 OUT_RING((spitch << 22) | (offset >> 10)); 1864 OUT_RING((spitch << 22) | (offset >> 10));
1857 OUT_RING((texpitch << 22) | (tex->offset >> 10)); 1865 OUT_RING((texpitch << 22) | ((tex->offset >> 10) + (byte_offset >> 10)));
1858 OUT_RING(0); 1866 OUT_RING(0);
1859 OUT_RING((image->x << 16) | image->y); 1867 OUT_RING((image->x << 16) | (image->y % 2048));
1860 OUT_RING((image->width << 16) | height); 1868 OUT_RING((image->width << 16) | height);
1861 RADEON_WAIT_UNTIL_2D_IDLE(); 1869 RADEON_WAIT_UNTIL_2D_IDLE();
1862 ADVANCE_RING(); 1870 ADVANCE_RING();
@@ -3037,6 +3045,9 @@ static int radeon_cp_getparam(struct drm_device *dev, void *data, struct drm_fil
3037 case RADEON_PARAM_FB_LOCATION: 3045 case RADEON_PARAM_FB_LOCATION:
3038 value = radeon_read_fb_location(dev_priv); 3046 value = radeon_read_fb_location(dev_priv);
3039 break; 3047 break;
3048 case RADEON_PARAM_NUM_GB_PIPES:
3049 value = dev_priv->num_gb_pipes;
3050 break;
3040 default: 3051 default:
3041 DRM_DEBUG("Invalid parameter %d\n", param->param); 3052 DRM_DEBUG("Invalid parameter %d\n", param->param);
3042 return -EINVAL; 3053 return -EINVAL;
diff --git a/drivers/char/hvc_xen.c b/drivers/char/hvc_xen.c
index dd68f8541c2d..db2ae4216279 100644
--- a/drivers/char/hvc_xen.c
+++ b/drivers/char/hvc_xen.c
@@ -39,9 +39,14 @@ static int xencons_irq;
39 39
40/* ------------------------------------------------------------------ */ 40/* ------------------------------------------------------------------ */
41 41
42static unsigned long console_pfn = ~0ul;
43
42static inline struct xencons_interface *xencons_interface(void) 44static inline struct xencons_interface *xencons_interface(void)
43{ 45{
44 return mfn_to_virt(xen_start_info->console.domU.mfn); 46 if (console_pfn == ~0ul)
47 return mfn_to_virt(xen_start_info->console.domU.mfn);
48 else
49 return __va(console_pfn << PAGE_SHIFT);
45} 50}
46 51
47static inline void notify_daemon(void) 52static inline void notify_daemon(void)
@@ -101,20 +106,32 @@ static int __init xen_init(void)
101{ 106{
102 struct hvc_struct *hp; 107 struct hvc_struct *hp;
103 108
104 if (!is_running_on_xen()) 109 if (!is_running_on_xen() ||
105 return 0; 110 is_initial_xendomain() ||
111 !xen_start_info->console.domU.evtchn)
112 return -ENODEV;
106 113
107 xencons_irq = bind_evtchn_to_irq(xen_start_info->console.domU.evtchn); 114 xencons_irq = bind_evtchn_to_irq(xen_start_info->console.domU.evtchn);
108 if (xencons_irq < 0) 115 if (xencons_irq < 0)
109 xencons_irq = 0 /* NO_IRQ */; 116 xencons_irq = 0; /* NO_IRQ */
117
110 hp = hvc_alloc(HVC_COOKIE, xencons_irq, &hvc_ops, 256); 118 hp = hvc_alloc(HVC_COOKIE, xencons_irq, &hvc_ops, 256);
111 if (IS_ERR(hp)) 119 if (IS_ERR(hp))
112 return PTR_ERR(hp); 120 return PTR_ERR(hp);
113 121
114 hvc = hp; 122 hvc = hp;
123
124 console_pfn = mfn_to_pfn(xen_start_info->console.domU.mfn);
125
115 return 0; 126 return 0;
116} 127}
117 128
129void xen_console_resume(void)
130{
131 if (xencons_irq)
132 rebind_evtchn_irq(xen_start_info->console.domU.evtchn, xencons_irq);
133}
134
118static void __exit xen_fini(void) 135static void __exit xen_fini(void)
119{ 136{
120 if (hvc) 137 if (hvc)
@@ -134,12 +151,28 @@ module_init(xen_init);
134module_exit(xen_fini); 151module_exit(xen_fini);
135console_initcall(xen_cons_init); 152console_initcall(xen_cons_init);
136 153
154static void raw_console_write(const char *str, int len)
155{
156 while(len > 0) {
157 int rc = HYPERVISOR_console_io(CONSOLEIO_write, len, (char *)str);
158 if (rc <= 0)
159 break;
160
161 str += rc;
162 len -= rc;
163 }
164}
165
166#ifdef CONFIG_EARLY_PRINTK
137static void xenboot_write_console(struct console *console, const char *string, 167static void xenboot_write_console(struct console *console, const char *string,
138 unsigned len) 168 unsigned len)
139{ 169{
140 unsigned int linelen, off = 0; 170 unsigned int linelen, off = 0;
141 const char *pos; 171 const char *pos;
142 172
173 raw_console_write(string, len);
174
175 write_console(0, "(early) ", 8);
143 while (off < len && NULL != (pos = strchr(string+off, '\n'))) { 176 while (off < len && NULL != (pos = strchr(string+off, '\n'))) {
144 linelen = pos-string+off; 177 linelen = pos-string+off;
145 if (off + linelen > len) 178 if (off + linelen > len)
@@ -155,5 +188,23 @@ static void xenboot_write_console(struct console *console, const char *string,
155struct console xenboot_console = { 188struct console xenboot_console = {
156 .name = "xenboot", 189 .name = "xenboot",
157 .write = xenboot_write_console, 190 .write = xenboot_write_console,
158 .flags = CON_PRINTBUFFER | CON_BOOT, 191 .flags = CON_PRINTBUFFER | CON_BOOT | CON_ANYTIME,
159}; 192};
193#endif /* CONFIG_EARLY_PRINTK */
194
195void xen_raw_console_write(const char *str)
196{
197 raw_console_write(str, strlen(str));
198}
199
200void xen_raw_printk(const char *fmt, ...)
201{
202 static char buf[512];
203 va_list ap;
204
205 va_start(ap, fmt);
206 vsnprintf(buf, sizeof(buf), fmt, ap);
207 va_end(ap);
208
209 xen_raw_console_write(buf);
210}
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index e94bee032314..750131010af0 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -3322,7 +3322,7 @@ static int send_break(struct tty_struct *tty, unsigned int duration)
3322 msleep_interruptible(duration); 3322 msleep_interruptible(duration);
3323 tty->ops->break_ctl(tty, 0); 3323 tty->ops->break_ctl(tty, 0);
3324 tty_write_unlock(tty); 3324 tty_write_unlock(tty);
3325 if (!signal_pending(current)) 3325 if (signal_pending(current))
3326 return -EINTR; 3326 return -EINTR;
3327 return 0; 3327 return 0;
3328} 3328}
diff --git a/drivers/char/tty_ioctl.c b/drivers/char/tty_ioctl.c
index b1a757a5ee27..8f81139d6194 100644
--- a/drivers/char/tty_ioctl.c
+++ b/drivers/char/tty_ioctl.c
@@ -981,16 +981,9 @@ EXPORT_SYMBOL_GPL(tty_perform_flush);
981int n_tty_ioctl(struct tty_struct *tty, struct file *file, 981int n_tty_ioctl(struct tty_struct *tty, struct file *file,
982 unsigned int cmd, unsigned long arg) 982 unsigned int cmd, unsigned long arg)
983{ 983{
984 struct tty_struct *real_tty;
985 unsigned long flags; 984 unsigned long flags;
986 int retval; 985 int retval;
987 986
988 if (tty->driver->type == TTY_DRIVER_TYPE_PTY &&
989 tty->driver->subtype == PTY_TYPE_MASTER)
990 real_tty = tty->link;
991 else
992 real_tty = tty;
993
994 switch (cmd) { 987 switch (cmd) {
995 case TCXONC: 988 case TCXONC:
996 retval = tty_check_change(tty); 989 retval = tty_check_change(tty);
diff --git a/drivers/connector/connector.c b/drivers/connector/connector.c
index 85e2ba7fcfba..bf4830082a13 100644
--- a/drivers/connector/connector.c
+++ b/drivers/connector/connector.c
@@ -27,6 +27,8 @@
27#include <linux/moduleparam.h> 27#include <linux/moduleparam.h>
28#include <linux/connector.h> 28#include <linux/connector.h>
29#include <linux/mutex.h> 29#include <linux/mutex.h>
30#include <linux/proc_fs.h>
31#include <linux/spinlock.h>
30 32
31#include <net/sock.h> 33#include <net/sock.h>
32 34
@@ -403,6 +405,40 @@ static void cn_callback(void *data)
403 mutex_unlock(&notify_lock); 405 mutex_unlock(&notify_lock);
404} 406}
405 407
408static int cn_proc_show(struct seq_file *m, void *v)
409{
410 struct cn_queue_dev *dev = cdev.cbdev;
411 struct cn_callback_entry *cbq;
412
413 seq_printf(m, "Name ID\n");
414
415 spin_lock_bh(&dev->queue_lock);
416
417 list_for_each_entry(cbq, &dev->queue_list, callback_entry) {
418 seq_printf(m, "%-15s %u:%u\n",
419 cbq->id.name,
420 cbq->id.id.idx,
421 cbq->id.id.val);
422 }
423
424 spin_unlock_bh(&dev->queue_lock);
425
426 return 0;
427}
428
429static int cn_proc_open(struct inode *inode, struct file *file)
430{
431 return single_open(file, cn_proc_show, NULL);
432}
433
434static const struct file_operations cn_file_ops = {
435 .owner = THIS_MODULE,
436 .open = cn_proc_open,
437 .read = seq_read,
438 .llseek = seq_lseek,
439 .release = single_release
440};
441
406static int __devinit cn_init(void) 442static int __devinit cn_init(void)
407{ 443{
408 struct cn_dev *dev = &cdev; 444 struct cn_dev *dev = &cdev;
@@ -434,6 +470,8 @@ static int __devinit cn_init(void)
434 return -EINVAL; 470 return -EINVAL;
435 } 471 }
436 472
473 proc_net_fops_create(&init_net, "connector", S_IRUGO, &cn_file_ops);
474
437 return 0; 475 return 0;
438} 476}
439 477
@@ -443,6 +481,8 @@ static void __devexit cn_fini(void)
443 481
444 cn_already_initialized = 0; 482 cn_already_initialized = 0;
445 483
484 proc_net_remove(&init_net, "connector");
485
446 cn_del_callback(&dev->id); 486 cn_del_callback(&dev->id);
447 cn_queue_free_dev(dev->cbdev); 487 cn_queue_free_dev(dev->cbdev);
448 netlink_kernel_release(dev->nls); 488 netlink_kernel_release(dev->nls);
diff --git a/drivers/firewire/Kconfig b/drivers/firewire/Kconfig
index fb4d391810b6..76f26710fc16 100644
--- a/drivers/firewire/Kconfig
+++ b/drivers/firewire/Kconfig
@@ -1,28 +1,26 @@
1comment "An alternative FireWire stack is available with EXPERIMENTAL=y" 1comment "A new alternative FireWire stack is available with EXPERIMENTAL=y"
2 depends on EXPERIMENTAL=n 2 depends on EXPERIMENTAL=n
3 3
4comment "Enable only one of the two stacks, unless you know what you are doing"
5 depends on EXPERIMENTAL
6
4config FIREWIRE 7config FIREWIRE
5 tristate "IEEE 1394 (FireWire) support - alternative stack, EXPERIMENTAL" 8 tristate "New FireWire stack, EXPERIMENTAL"
6 depends on EXPERIMENTAL 9 depends on EXPERIMENTAL
7 select CRC_ITU_T 10 select CRC_ITU_T
8 help 11 help
9 This is the "Juju" FireWire stack, a new alternative implementation 12 This is the "Juju" FireWire stack, a new alternative implementation
10 designed for robustness and simplicity. You can build either this 13 designed for robustness and simplicity. You can build either this
11 stack, or the classic stack (the ieee1394 driver, ohci1394 etc.) 14 stack, or the old stack (the ieee1394 driver, ohci1394 etc.) or both.
12 or both. Please read http://wiki.linux1394.org/JujuMigration before 15 Please read http://wiki.linux1394.org/JujuMigration before you
13 you enable the new stack. 16 enable the new stack.
14 17
15 To compile this driver as a module, say M here: the module will be 18 To compile this driver as a module, say M here: the module will be
16 called firewire-core. It functionally replaces ieee1394, raw1394, 19 called firewire-core. It functionally replaces ieee1394, raw1394,
17 and video1394. 20 and video1394.
18 21
19 NOTE:
20
21 You should only build ONE of the stacks, unless you REALLY know what
22 you are doing.
23
24config FIREWIRE_OHCI 22config FIREWIRE_OHCI
25 tristate "Support for OHCI FireWire host controllers" 23 tristate "OHCI-1394 controllers"
26 depends on PCI && FIREWIRE 24 depends on PCI && FIREWIRE
27 help 25 help
28 Enable this driver if you have a FireWire controller based 26 Enable this driver if you have a FireWire controller based
@@ -33,12 +31,12 @@ config FIREWIRE_OHCI
33 called firewire-ohci. It replaces ohci1394 of the classic IEEE 1394 31 called firewire-ohci. It replaces ohci1394 of the classic IEEE 1394
34 stack. 32 stack.
35 33
36 NOTE: 34 NOTE:
37 35
38 You should only build ohci1394 or firewire-ohci, but not both. 36 You should only build either firewire-ohci or the old ohci1394 driver,
39 If you nevertheless want to install both, you should configure them 37 but not both. If you nevertheless want to install both, you should
40 only as modules and blacklist the driver(s) which you don't want to 38 configure them only as modules and blacklist the driver(s) which you
41 have auto-loaded. Add either 39 don't want to have auto-loaded. Add either
42 40
43 blacklist firewire-ohci 41 blacklist firewire-ohci
44 or 42 or
@@ -60,7 +58,7 @@ config FIREWIRE_OHCI_DEBUG
60 default y 58 default y
61 59
62config FIREWIRE_SBP2 60config FIREWIRE_SBP2
63 tristate "Support for storage devices (SBP-2 protocol driver)" 61 tristate "Storage devices (SBP-2 protocol)"
64 depends on FIREWIRE && SCSI 62 depends on FIREWIRE && SCSI
65 help 63 help
66 This option enables you to use SBP-2 devices connected to a 64 This option enables you to use SBP-2 devices connected to a
diff --git a/drivers/firewire/fw-cdev.c b/drivers/firewire/fw-cdev.c
index dda14015e873..c639915fc3cb 100644
--- a/drivers/firewire/fw-cdev.c
+++ b/drivers/firewire/fw-cdev.c
@@ -205,6 +205,7 @@ fw_device_op_read(struct file *file,
205 return dequeue_event(client, buffer, count); 205 return dequeue_event(client, buffer, count);
206} 206}
207 207
208/* caller must hold card->lock so that node pointers can be dereferenced here */
208static void 209static void
209fill_bus_reset_event(struct fw_cdev_event_bus_reset *event, 210fill_bus_reset_event(struct fw_cdev_event_bus_reset *event,
210 struct client *client) 211 struct client *client)
@@ -214,7 +215,6 @@ fill_bus_reset_event(struct fw_cdev_event_bus_reset *event,
214 event->closure = client->bus_reset_closure; 215 event->closure = client->bus_reset_closure;
215 event->type = FW_CDEV_EVENT_BUS_RESET; 216 event->type = FW_CDEV_EVENT_BUS_RESET;
216 event->generation = client->device->generation; 217 event->generation = client->device->generation;
217 smp_rmb(); /* node_id must not be older than generation */
218 event->node_id = client->device->node_id; 218 event->node_id = client->device->node_id;
219 event->local_node_id = card->local_node->node_id; 219 event->local_node_id = card->local_node->node_id;
220 event->bm_node_id = 0; /* FIXME: We don't track the BM. */ 220 event->bm_node_id = 0; /* FIXME: We don't track the BM. */
@@ -274,6 +274,7 @@ static int ioctl_get_info(struct client *client, void *buffer)
274{ 274{
275 struct fw_cdev_get_info *get_info = buffer; 275 struct fw_cdev_get_info *get_info = buffer;
276 struct fw_cdev_event_bus_reset bus_reset; 276 struct fw_cdev_event_bus_reset bus_reset;
277 struct fw_card *card = client->device->card;
277 unsigned long ret = 0; 278 unsigned long ret = 0;
278 279
279 client->version = get_info->version; 280 client->version = get_info->version;
@@ -299,13 +300,17 @@ static int ioctl_get_info(struct client *client, void *buffer)
299 client->bus_reset_closure = get_info->bus_reset_closure; 300 client->bus_reset_closure = get_info->bus_reset_closure;
300 if (get_info->bus_reset != 0) { 301 if (get_info->bus_reset != 0) {
301 void __user *uptr = u64_to_uptr(get_info->bus_reset); 302 void __user *uptr = u64_to_uptr(get_info->bus_reset);
303 unsigned long flags;
302 304
305 spin_lock_irqsave(&card->lock, flags);
303 fill_bus_reset_event(&bus_reset, client); 306 fill_bus_reset_event(&bus_reset, client);
307 spin_unlock_irqrestore(&card->lock, flags);
308
304 if (copy_to_user(uptr, &bus_reset, sizeof(bus_reset))) 309 if (copy_to_user(uptr, &bus_reset, sizeof(bus_reset)))
305 return -EFAULT; 310 return -EFAULT;
306 } 311 }
307 312
308 get_info->card = client->device->card->index; 313 get_info->card = card->index;
309 314
310 return 0; 315 return 0;
311} 316}
diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c
index 4f02c55f13e1..0b66306af479 100644
--- a/drivers/firewire/fw-ohci.c
+++ b/drivers/firewire/fw-ohci.c
@@ -265,27 +265,25 @@ static void log_irqs(u32 evt)
265 !(evt & OHCI1394_busReset)) 265 !(evt & OHCI1394_busReset))
266 return; 266 return;
267 267
268 printk(KERN_DEBUG KBUILD_MODNAME ": IRQ " 268 fw_notify("IRQ %08x%s%s%s%s%s%s%s%s%s%s%s%s%s\n", evt,
269 "%08x%s%s%s%s%s%s%s%s%s%s%s%s%s\n", 269 evt & OHCI1394_selfIDComplete ? " selfID" : "",
270 evt, 270 evt & OHCI1394_RQPkt ? " AR_req" : "",
271 evt & OHCI1394_selfIDComplete ? " selfID" : "", 271 evt & OHCI1394_RSPkt ? " AR_resp" : "",
272 evt & OHCI1394_RQPkt ? " AR_req" : "", 272 evt & OHCI1394_reqTxComplete ? " AT_req" : "",
273 evt & OHCI1394_RSPkt ? " AR_resp" : "", 273 evt & OHCI1394_respTxComplete ? " AT_resp" : "",
274 evt & OHCI1394_reqTxComplete ? " AT_req" : "", 274 evt & OHCI1394_isochRx ? " IR" : "",
275 evt & OHCI1394_respTxComplete ? " AT_resp" : "", 275 evt & OHCI1394_isochTx ? " IT" : "",
276 evt & OHCI1394_isochRx ? " IR" : "", 276 evt & OHCI1394_postedWriteErr ? " postedWriteErr" : "",
277 evt & OHCI1394_isochTx ? " IT" : "", 277 evt & OHCI1394_cycleTooLong ? " cycleTooLong" : "",
278 evt & OHCI1394_postedWriteErr ? " postedWriteErr" : "", 278 evt & OHCI1394_cycle64Seconds ? " cycle64Seconds" : "",
279 evt & OHCI1394_cycleTooLong ? " cycleTooLong" : "", 279 evt & OHCI1394_regAccessFail ? " regAccessFail" : "",
280 evt & OHCI1394_cycle64Seconds ? " cycle64Seconds" : "", 280 evt & OHCI1394_busReset ? " busReset" : "",
281 evt & OHCI1394_regAccessFail ? " regAccessFail" : "", 281 evt & ~(OHCI1394_selfIDComplete | OHCI1394_RQPkt |
282 evt & OHCI1394_busReset ? " busReset" : "", 282 OHCI1394_RSPkt | OHCI1394_reqTxComplete |
283 evt & ~(OHCI1394_selfIDComplete | OHCI1394_RQPkt | 283 OHCI1394_respTxComplete | OHCI1394_isochRx |
284 OHCI1394_RSPkt | OHCI1394_reqTxComplete | 284 OHCI1394_isochTx | OHCI1394_postedWriteErr |
285 OHCI1394_respTxComplete | OHCI1394_isochRx | 285 OHCI1394_cycleTooLong | OHCI1394_cycle64Seconds |
286 OHCI1394_isochTx | OHCI1394_postedWriteErr | 286 OHCI1394_regAccessFail | OHCI1394_busReset)
287 OHCI1394_cycleTooLong | OHCI1394_cycle64Seconds |
288 OHCI1394_regAccessFail | OHCI1394_busReset)
289 ? " ?" : ""); 287 ? " ?" : "");
290} 288}
291 289
@@ -308,23 +306,22 @@ static void log_selfids(int node_id, int generation, int self_id_count, u32 *s)
308 if (likely(!(param_debug & OHCI_PARAM_DEBUG_SELFIDS))) 306 if (likely(!(param_debug & OHCI_PARAM_DEBUG_SELFIDS)))
309 return; 307 return;
310 308
311 printk(KERN_DEBUG KBUILD_MODNAME ": %d selfIDs, generation %d, " 309 fw_notify("%d selfIDs, generation %d, local node ID %04x\n",
312 "local node ID %04x\n", self_id_count, generation, node_id); 310 self_id_count, generation, node_id);
313 311
314 for (; self_id_count--; ++s) 312 for (; self_id_count--; ++s)
315 if ((*s & 1 << 23) == 0) 313 if ((*s & 1 << 23) == 0)
316 printk(KERN_DEBUG "selfID 0: %08x, phy %d [%c%c%c] " 314 fw_notify("selfID 0: %08x, phy %d [%c%c%c] "
317 "%s gc=%d %s %s%s%s\n", 315 "%s gc=%d %s %s%s%s\n",
318 *s, *s >> 24 & 63, _p(s, 6), _p(s, 4), _p(s, 2), 316 *s, *s >> 24 & 63, _p(s, 6), _p(s, 4), _p(s, 2),
319 speed[*s >> 14 & 3], *s >> 16 & 63, 317 speed[*s >> 14 & 3], *s >> 16 & 63,
320 power[*s >> 8 & 7], *s >> 22 & 1 ? "L" : "", 318 power[*s >> 8 & 7], *s >> 22 & 1 ? "L" : "",
321 *s >> 11 & 1 ? "c" : "", *s & 2 ? "i" : ""); 319 *s >> 11 & 1 ? "c" : "", *s & 2 ? "i" : "");
322 else 320 else
323 printk(KERN_DEBUG "selfID n: %08x, phy %d " 321 fw_notify("selfID n: %08x, phy %d [%c%c%c%c%c%c%c%c]\n",
324 "[%c%c%c%c%c%c%c%c]\n", 322 *s, *s >> 24 & 63,
325 *s, *s >> 24 & 63, 323 _p(s, 16), _p(s, 14), _p(s, 12), _p(s, 10),
326 _p(s, 16), _p(s, 14), _p(s, 12), _p(s, 10), 324 _p(s, 8), _p(s, 6), _p(s, 4), _p(s, 2));
327 _p(s, 8), _p(s, 6), _p(s, 4), _p(s, 2));
328} 325}
329 326
330static const char *evts[] = { 327static const char *evts[] = {
@@ -373,15 +370,14 @@ static void log_ar_at_event(char dir, int speed, u32 *header, int evt)
373 evt = 0x1f; 370 evt = 0x1f;
374 371
375 if (evt == OHCI1394_evt_bus_reset) { 372 if (evt == OHCI1394_evt_bus_reset) {
376 printk(KERN_DEBUG "A%c evt_bus_reset, generation %d\n", 373 fw_notify("A%c evt_bus_reset, generation %d\n",
377 dir, (header[2] >> 16) & 0xff); 374 dir, (header[2] >> 16) & 0xff);
378 return; 375 return;
379 } 376 }
380 377
381 if (header[0] == ~header[1]) { 378 if (header[0] == ~header[1]) {
382 printk(KERN_DEBUG "A%c %s, %s, %08x\n", 379 fw_notify("A%c %s, %s, %08x\n",
383 dir, evts[evt], phys[header[0] >> 30 & 0x3], 380 dir, evts[evt], phys[header[0] >> 30 & 0x3], header[0]);
384 header[0]);
385 return; 381 return;
386 } 382 }
387 383
@@ -400,24 +396,23 @@ static void log_ar_at_event(char dir, int speed, u32 *header, int evt)
400 396
401 switch (tcode) { 397 switch (tcode) {
402 case 0xe: case 0xa: 398 case 0xe: case 0xa:
403 printk(KERN_DEBUG "A%c %s, %s\n", 399 fw_notify("A%c %s, %s\n", dir, evts[evt], tcodes[tcode]);
404 dir, evts[evt], tcodes[tcode]);
405 break; 400 break;
406 case 0x0: case 0x1: case 0x4: case 0x5: case 0x9: 401 case 0x0: case 0x1: case 0x4: case 0x5: case 0x9:
407 printk(KERN_DEBUG "A%c spd %x tl %02x, " 402 fw_notify("A%c spd %x tl %02x, "
408 "%04x -> %04x, %s, " 403 "%04x -> %04x, %s, "
409 "%s, %04x%08x%s\n", 404 "%s, %04x%08x%s\n",
410 dir, speed, header[0] >> 10 & 0x3f, 405 dir, speed, header[0] >> 10 & 0x3f,
411 header[1] >> 16, header[0] >> 16, evts[evt], 406 header[1] >> 16, header[0] >> 16, evts[evt],
412 tcodes[tcode], header[1] & 0xffff, header[2], specific); 407 tcodes[tcode], header[1] & 0xffff, header[2], specific);
413 break; 408 break;
414 default: 409 default:
415 printk(KERN_DEBUG "A%c spd %x tl %02x, " 410 fw_notify("A%c spd %x tl %02x, "
416 "%04x -> %04x, %s, " 411 "%04x -> %04x, %s, "
417 "%s%s\n", 412 "%s%s\n",
418 dir, speed, header[0] >> 10 & 0x3f, 413 dir, speed, header[0] >> 10 & 0x3f,
419 header[1] >> 16, header[0] >> 16, evts[evt], 414 header[1] >> 16, header[0] >> 16, evts[evt],
420 tcodes[tcode], specific); 415 tcodes[tcode], specific);
421 } 416 }
422} 417}
423 418
@@ -548,6 +543,11 @@ static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer)
548 p.header_length = 12; 543 p.header_length = 12;
549 p.payload_length = 0; 544 p.payload_length = 0;
550 break; 545 break;
546
547 default:
548 /* FIXME: Stop context, discard everything, and restart? */
549 p.header_length = 0;
550 p.payload_length = 0;
551 } 551 }
552 552
553 p.payload = (void *) buffer + p.header_length; 553 p.payload = (void *) buffer + p.header_length;
@@ -1468,6 +1468,9 @@ static int ohci_enable(struct fw_card *card, u32 *config_rom, size_t length)
1468 reg_write(ohci, OHCI1394_HCControlClear, 1468 reg_write(ohci, OHCI1394_HCControlClear,
1469 OHCI1394_HCControl_noByteSwapData); 1469 OHCI1394_HCControl_noByteSwapData);
1470 1470
1471 reg_write(ohci, OHCI1394_SelfIDBuffer, ohci->self_id_bus);
1472 reg_write(ohci, OHCI1394_LinkControlClear,
1473 OHCI1394_LinkControl_rcvPhyPkt);
1471 reg_write(ohci, OHCI1394_LinkControlSet, 1474 reg_write(ohci, OHCI1394_LinkControlSet,
1472 OHCI1394_LinkControl_rcvSelfID | 1475 OHCI1394_LinkControl_rcvSelfID |
1473 OHCI1394_LinkControl_cycleTimerEnable | 1476 OHCI1394_LinkControl_cycleTimerEnable |
@@ -1481,7 +1484,6 @@ static int ohci_enable(struct fw_card *card, u32 *config_rom, size_t length)
1481 ar_context_run(&ohci->ar_request_ctx); 1484 ar_context_run(&ohci->ar_request_ctx);
1482 ar_context_run(&ohci->ar_response_ctx); 1485 ar_context_run(&ohci->ar_response_ctx);
1483 1486
1484 reg_write(ohci, OHCI1394_SelfIDBuffer, ohci->self_id_bus);
1485 reg_write(ohci, OHCI1394_PhyUpperBound, 0x00010000); 1487 reg_write(ohci, OHCI1394_PhyUpperBound, 0x00010000);
1486 reg_write(ohci, OHCI1394_IntEventClear, ~0); 1488 reg_write(ohci, OHCI1394_IntEventClear, ~0);
1487 reg_write(ohci, OHCI1394_IntMaskClear, ~0); 1489 reg_write(ohci, OHCI1394_IntMaskClear, ~0);
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index b2458bb8e9ca..227d2e036cd8 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -1051,7 +1051,8 @@ static int sbp2_scan_unit_dir(struct sbp2_target *tgt, u32 *directory,
1051 break; 1051 break;
1052 1052
1053 case SBP2_CSR_LOGICAL_UNIT_DIRECTORY: 1053 case SBP2_CSR_LOGICAL_UNIT_DIRECTORY:
1054 if (sbp2_scan_logical_unit_dir(tgt, ci.p + value) < 0) 1054 /* Adjust for the increment in the iterator */
1055 if (sbp2_scan_logical_unit_dir(tgt, ci.p - 1 + value) < 0)
1055 return -ENOMEM; 1056 return -ENOMEM;
1056 break; 1057 break;
1057 } 1058 }
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c
index ccf0e4cf108f..03ae8a77c479 100644
--- a/drivers/firewire/fw-transaction.c
+++ b/drivers/firewire/fw-transaction.c
@@ -20,6 +20,7 @@
20 20
21#include <linux/completion.h> 21#include <linux/completion.h>
22#include <linux/kernel.h> 22#include <linux/kernel.h>
23#include <linux/kref.h>
23#include <linux/module.h> 24#include <linux/module.h>
24#include <linux/init.h> 25#include <linux/init.h>
25#include <linux/interrupt.h> 26#include <linux/interrupt.h>
@@ -297,37 +298,55 @@ EXPORT_SYMBOL(fw_send_request);
297struct fw_phy_packet { 298struct fw_phy_packet {
298 struct fw_packet packet; 299 struct fw_packet packet;
299 struct completion done; 300 struct completion done;
301 struct kref kref;
300}; 302};
301 303
302static void 304static void phy_packet_release(struct kref *kref)
303transmit_phy_packet_callback(struct fw_packet *packet, 305{
304 struct fw_card *card, int status) 306 struct fw_phy_packet *p =
307 container_of(kref, struct fw_phy_packet, kref);
308 kfree(p);
309}
310
311static void transmit_phy_packet_callback(struct fw_packet *packet,
312 struct fw_card *card, int status)
305{ 313{
306 struct fw_phy_packet *p = 314 struct fw_phy_packet *p =
307 container_of(packet, struct fw_phy_packet, packet); 315 container_of(packet, struct fw_phy_packet, packet);
308 316
309 complete(&p->done); 317 complete(&p->done);
318 kref_put(&p->kref, phy_packet_release);
310} 319}
311 320
312void fw_send_phy_config(struct fw_card *card, 321void fw_send_phy_config(struct fw_card *card,
313 int node_id, int generation, int gap_count) 322 int node_id, int generation, int gap_count)
314{ 323{
315 struct fw_phy_packet p; 324 struct fw_phy_packet *p;
325 long timeout = DIV_ROUND_UP(HZ, 10);
316 u32 data = PHY_IDENTIFIER(PHY_PACKET_CONFIG) | 326 u32 data = PHY_IDENTIFIER(PHY_PACKET_CONFIG) |
317 PHY_CONFIG_ROOT_ID(node_id) | 327 PHY_CONFIG_ROOT_ID(node_id) |
318 PHY_CONFIG_GAP_COUNT(gap_count); 328 PHY_CONFIG_GAP_COUNT(gap_count);
319 329
320 p.packet.header[0] = data; 330 p = kmalloc(sizeof(*p), GFP_KERNEL);
321 p.packet.header[1] = ~data; 331 if (p == NULL)
322 p.packet.header_length = 8; 332 return;
323 p.packet.payload_length = 0; 333
324 p.packet.speed = SCODE_100; 334 p->packet.header[0] = data;
325 p.packet.generation = generation; 335 p->packet.header[1] = ~data;
326 p.packet.callback = transmit_phy_packet_callback; 336 p->packet.header_length = 8;
327 init_completion(&p.done); 337 p->packet.payload_length = 0;
328 338 p->packet.speed = SCODE_100;
329 card->driver->send_request(card, &p.packet); 339 p->packet.generation = generation;
330 wait_for_completion(&p.done); 340 p->packet.callback = transmit_phy_packet_callback;
341 init_completion(&p->done);
342 kref_set(&p->kref, 2);
343
344 card->driver->send_request(card, &p->packet);
345 timeout = wait_for_completion_timeout(&p->done, timeout);
346 kref_put(&p->kref, phy_packet_release);
347
348 /* will leak p if the callback is never executed */
349 WARN_ON(timeout == 0);
331} 350}
332 351
333void fw_flush_transactions(struct fw_card *card) 352void fw_flush_transactions(struct fw_card *card)
@@ -572,7 +591,8 @@ allocate_request(struct fw_packet *p)
572 break; 591 break;
573 592
574 default: 593 default:
575 BUG(); 594 fw_error("ERROR - corrupt request received - %08x %08x %08x\n",
595 p->header[0], p->header[1], p->header[2]);
576 return NULL; 596 return NULL;
577 } 597 }
578 598
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index bbd28342e771..008c38ba774f 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -28,12 +28,18 @@ config DEBUG_GPIO
28comment "I2C GPIO expanders:" 28comment "I2C GPIO expanders:"
29 29
30config GPIO_PCA953X 30config GPIO_PCA953X
31 tristate "PCA953x I/O ports" 31 tristate "PCA953x, PCA955x, and MAX7310 I/O ports"
32 depends on I2C 32 depends on I2C
33 help 33 help
34 Say yes here to support the PCA9534 (8-bit), PCA9535 (16-bit), 34 Say yes here to provide access to several register-oriented
35 PCA9536 (4-bit), PCA9537 (4-bit), PCA9538 (8-bit), and PCA9539 35 SMBus I/O expanders, made mostly by NXP or TI. Compatible
36 (16-bit) I/O ports. These parts are made by NXP and TI. 36 models include:
37
38 4 bits: pca9536, pca9537
39
40 8 bits: max7310, pca9534, pca9538, pca9554, pca9557
41
42 16 bits: pca9535, pca9539, pca9555
37 43
38 This driver can also be built as a module. If so, the module 44 This driver can also be built as a module. If so, the module
39 will be called pca953x. 45 will be called pca953x.
diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c
index 7e40e8a55edf..a380730b61ab 100644
--- a/drivers/gpio/pca953x.c
+++ b/drivers/gpio/pca953x.c
@@ -33,7 +33,7 @@ static const struct i2c_device_id pca953x_id[] = {
33 { "pca9554", 8, }, 33 { "pca9554", 8, },
34 { "pca9555", 16, }, 34 { "pca9555", 16, },
35 { "pca9557", 8, }, 35 { "pca9557", 8, },
36 /* REVISIT several pca955x parts should work here too */ 36 { "max7310", 8, },
37 { } 37 { }
38}; 38};
39MODULE_DEVICE_TABLE(i2c, pca953x_id); 39MODULE_DEVICE_TABLE(i2c, pca953x_id);
diff --git a/drivers/hwmon/abituguru3.c b/drivers/hwmon/abituguru3.c
index ed33fddc4dee..f00f497b9ca9 100644
--- a/drivers/hwmon/abituguru3.c
+++ b/drivers/hwmon/abituguru3.c
@@ -30,6 +30,7 @@
30#include <linux/platform_device.h> 30#include <linux/platform_device.h>
31#include <linux/hwmon.h> 31#include <linux/hwmon.h>
32#include <linux/hwmon-sysfs.h> 32#include <linux/hwmon-sysfs.h>
33#include <linux/dmi.h>
33#include <asm/io.h> 34#include <asm/io.h>
34 35
35/* uGuru3 bank addresses */ 36/* uGuru3 bank addresses */
@@ -323,7 +324,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
323 { "AUX1 Fan", 36, 2, 60, 1, 0 }, 324 { "AUX1 Fan", 36, 2, 60, 1, 0 },
324 { NULL, 0, 0, 0, 0, 0 } } 325 { NULL, 0, 0, 0, 0, 0 } }
325 }, 326 },
326 { 0x0013, "unknown", { 327 { 0x0013, "Abit AW8D", {
327 { "CPU Core", 0, 0, 10, 1, 0 }, 328 { "CPU Core", 0, 0, 10, 1, 0 },
328 { "DDR", 1, 0, 10, 1, 0 }, 329 { "DDR", 1, 0, 10, 1, 0 },
329 { "DDR VTT", 2, 0, 10, 1, 0 }, 330 { "DDR VTT", 2, 0, 10, 1, 0 },
@@ -349,6 +350,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
349 { "AUX2 Fan", 36, 2, 60, 1, 0 }, 350 { "AUX2 Fan", 36, 2, 60, 1, 0 },
350 { "AUX3 Fan", 37, 2, 60, 1, 0 }, 351 { "AUX3 Fan", 37, 2, 60, 1, 0 },
351 { "AUX4 Fan", 38, 2, 60, 1, 0 }, 352 { "AUX4 Fan", 38, 2, 60, 1, 0 },
353 { "AUX5 Fan", 39, 2, 60, 1, 0 },
352 { NULL, 0, 0, 0, 0, 0 } } 354 { NULL, 0, 0, 0, 0, 0 } }
353 }, 355 },
354 { 0x0014, "Abit AB9 Pro", { 356 { 0x0014, "Abit AB9 Pro", {
@@ -1111,11 +1113,12 @@ static int __init abituguru3_detect(void)
1111{ 1113{
1112 /* See if there is an uguru3 there. An idle uGuru3 will hold 0x00 or 1114 /* See if there is an uguru3 there. An idle uGuru3 will hold 0x00 or
1113 0x08 at DATA and 0xAC at CMD. Sometimes the uGuru3 will hold 0x05 1115 0x08 at DATA and 0xAC at CMD. Sometimes the uGuru3 will hold 0x05
1114 at CMD instead, why is unknown. So we test for 0x05 too. */ 1116 or 0x55 at CMD instead, why is unknown. */
1115 u8 data_val = inb_p(ABIT_UGURU3_BASE + ABIT_UGURU3_DATA); 1117 u8 data_val = inb_p(ABIT_UGURU3_BASE + ABIT_UGURU3_DATA);
1116 u8 cmd_val = inb_p(ABIT_UGURU3_BASE + ABIT_UGURU3_CMD); 1118 u8 cmd_val = inb_p(ABIT_UGURU3_BASE + ABIT_UGURU3_CMD);
1117 if (((data_val == 0x00) || (data_val == 0x08)) && 1119 if (((data_val == 0x00) || (data_val == 0x08)) &&
1118 ((cmd_val == 0xAC) || (cmd_val == 0x05))) 1120 ((cmd_val == 0xAC) || (cmd_val == 0x05) ||
1121 (cmd_val == 0x55)))
1119 return ABIT_UGURU3_BASE; 1122 return ABIT_UGURU3_BASE;
1120 1123
1121 ABIT_UGURU3_DEBUG("no Abit uGuru3 found, data = 0x%02X, cmd = " 1124 ABIT_UGURU3_DEBUG("no Abit uGuru3 found, data = 0x%02X, cmd = "
@@ -1138,6 +1141,15 @@ static int __init abituguru3_init(void)
1138 int address, err; 1141 int address, err;
1139 struct resource res = { .flags = IORESOURCE_IO }; 1142 struct resource res = { .flags = IORESOURCE_IO };
1140 1143
1144#ifdef CONFIG_DMI
1145 const char *board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR);
1146
1147 /* safety check, refuse to load on non Abit motherboards */
1148 if (!force && (!board_vendor ||
1149 strcmp(board_vendor, "http://www.abit.com.tw/")))
1150 return -ENODEV;
1151#endif
1152
1141 address = abituguru3_detect(); 1153 address = abituguru3_detect();
1142 if (address < 0) 1154 if (address < 0)
1143 return address; 1155 return address;
diff --git a/drivers/hwmon/adt7473.c b/drivers/hwmon/adt7473.c
index c1009d6f9796..93dbf5e7ff8a 100644
--- a/drivers/hwmon/adt7473.c
+++ b/drivers/hwmon/adt7473.c
@@ -309,6 +309,9 @@ no_sensor_update:
309 ADT7473_REG_PWM_BHVR(i)); 309 ADT7473_REG_PWM_BHVR(i));
310 } 310 }
311 311
312 i = i2c_smbus_read_byte_data(client, ADT7473_REG_CFG4);
313 data->max_duty_at_overheat = !!(i & ADT7473_CFG4_MAX_DUTY_AT_OVT);
314
312 data->limits_last_updated = local_jiffies; 315 data->limits_last_updated = local_jiffies;
313 data->limits_valid = 1; 316 data->limits_valid = 1;
314 317
diff --git a/drivers/hwmon/hdaps.c b/drivers/hwmon/hdaps.c
index 26df06f840eb..50f22690d611 100644
--- a/drivers/hwmon/hdaps.c
+++ b/drivers/hwmon/hdaps.c
@@ -516,17 +516,23 @@ static struct dmi_system_id __initdata hdaps_whitelist[] = {
516 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R51"), 516 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R51"),
517 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R52"), 517 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R52"),
518 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad R61i"), 518 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad R61i"),
519 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad R61"),
519 HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad T41p"), 520 HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad T41p"),
520 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad T41"), 521 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad T41"),
521 HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad T42p"), 522 HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad T42p"),
522 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad T42"), 523 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad T42"),
523 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad T43"), 524 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad T43"),
524 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad T60"), 525 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad T60"),
526 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad T61p"),
525 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad T61"), 527 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad T61"),
526 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad X40"), 528 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad X40"),
527 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad X41"), 529 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad X41"),
528 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad X60"), 530 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad X60"),
531 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad X61s"),
532 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad X61"),
529 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad Z60m"), 533 HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad Z60m"),
534 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad Z61m"),
535 HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad Z61p"),
530 { .ident = NULL } 536 { .ident = NULL }
531}; 537};
532 538
diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
index fa7696905154..de698dc73020 100644
--- a/drivers/hwmon/lm75.c
+++ b/drivers/hwmon/lm75.c
@@ -251,10 +251,13 @@ static int lm75_detach_client(struct i2c_client *client)
251 the SMBus standard. */ 251 the SMBus standard. */
252static int lm75_read_value(struct i2c_client *client, u8 reg) 252static int lm75_read_value(struct i2c_client *client, u8 reg)
253{ 253{
254 int value;
255
254 if (reg == LM75_REG_CONF) 256 if (reg == LM75_REG_CONF)
255 return i2c_smbus_read_byte_data(client, reg); 257 return i2c_smbus_read_byte_data(client, reg);
256 else 258
257 return swab16(i2c_smbus_read_word_data(client, reg)); 259 value = i2c_smbus_read_word_data(client, reg);
260 return (value < 0) ? value : swab16(value);
258} 261}
259 262
260static int lm75_write_value(struct i2c_client *client, u8 reg, u16 value) 263static int lm75_write_value(struct i2c_client *client, u8 reg, u16 value)
@@ -287,9 +290,16 @@ static struct lm75_data *lm75_update_device(struct device *dev)
287 int i; 290 int i;
288 dev_dbg(&client->dev, "Starting lm75 update\n"); 291 dev_dbg(&client->dev, "Starting lm75 update\n");
289 292
290 for (i = 0; i < ARRAY_SIZE(data->temp); i++) 293 for (i = 0; i < ARRAY_SIZE(data->temp); i++) {
291 data->temp[i] = lm75_read_value(client, 294 int status;
292 LM75_REG_TEMP[i]); 295
296 status = lm75_read_value(client, LM75_REG_TEMP[i]);
297 if (status < 0)
298 dev_dbg(&client->dev, "reg %d, err %d\n",
299 LM75_REG_TEMP[i], status);
300 else
301 data->temp[i] = status;
302 }
293 data->last_updated = jiffies; 303 data->last_updated = jiffies;
294 data->valid = 1; 304 data->valid = 1;
295 } 305 }
diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c
index 182fe6a5605f..ee5eca1c1921 100644
--- a/drivers/hwmon/lm85.c
+++ b/drivers/hwmon/lm85.c
@@ -192,23 +192,20 @@ static int RANGE_TO_REG( int range )
192{ 192{
193 int i; 193 int i;
194 194
195 if ( range < lm85_range_map[0] ) { 195 if (range >= lm85_range_map[15])
196 return 0 ;
197 } else if ( range > lm85_range_map[15] ) {
198 return 15 ; 196 return 15 ;
199 } else { /* find closest match */ 197
200 for ( i = 14 ; i >= 0 ; --i ) { 198 /* Find the closest match */
201 if ( range > lm85_range_map[i] ) { /* range bracketed */ 199 for (i = 14; i >= 0; --i) {
202 if ((lm85_range_map[i+1] - range) < 200 if (range >= lm85_range_map[i]) {
203 (range - lm85_range_map[i])) { 201 if ((lm85_range_map[i + 1] - range) <
204 i++; 202 (range - lm85_range_map[i]))
205 break; 203 return i + 1;
206 } 204 return i;
207 break;
208 }
209 } 205 }
210 } 206 }
211 return( i & 0x0f ); 207
208 return 0;
212} 209}
213#define RANGE_FROM_REG(val) (lm85_range_map[(val)&0x0f]) 210#define RANGE_FROM_REG(val) (lm85_range_map[(val)&0x0f])
214 211
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 1305ef190fc1..9e8c875437be 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -290,12 +290,12 @@ static int i2s_s3c_irq_nextbyte(struct s3c24xx_i2c *i2c, unsigned long iicstat)
290 * bus, or started a new i2c message 290 * bus, or started a new i2c message
291 */ 291 */
292 292
293 if (iicstat & S3C2410_IICSTAT_LASTBIT && 293 if (iicstat & S3C2410_IICSTAT_LASTBIT &&
294 !(i2c->msg->flags & I2C_M_IGNORE_NAK)) { 294 !(i2c->msg->flags & I2C_M_IGNORE_NAK)) {
295 /* ack was not received... */ 295 /* ack was not received... */
296 296
297 dev_dbg(i2c->dev, "ack was not received\n"); 297 dev_dbg(i2c->dev, "ack was not received\n");
298 s3c24xx_i2c_stop(i2c, -EREMOTEIO); 298 s3c24xx_i2c_stop(i2c, -ENXIO);
299 goto out_ack; 299 goto out_ack;
300 } 300 }
301 301
@@ -305,7 +305,7 @@ static int i2s_s3c_irq_nextbyte(struct s3c24xx_i2c *i2c, unsigned long iicstat)
305 i2c->state = STATE_WRITE; 305 i2c->state = STATE_WRITE;
306 306
307 /* terminate the transfer if there is nothing to do 307 /* terminate the transfer if there is nothing to do
308 * (used by the i2c probe to find devices */ 308 * as this is used by the i2c probe to find devices. */
309 309
310 if (is_lastmsg(i2c) && i2c->msg->len == 0) { 310 if (is_lastmsg(i2c) && i2c->msg->len == 0) {
311 s3c24xx_i2c_stop(i2c, 0); 311 s3c24xx_i2c_stop(i2c, 0);
@@ -323,7 +323,17 @@ static int i2s_s3c_irq_nextbyte(struct s3c24xx_i2c *i2c, unsigned long iicstat)
323 * end of the message, and if so, work out what to do 323 * end of the message, and if so, work out what to do
324 */ 324 */
325 325
326 if (!(i2c->msg->flags & I2C_M_IGNORE_NAK)) {
327 if (iicstat & S3C2410_IICSTAT_LASTBIT) {
328 dev_dbg(i2c->dev, "WRITE: No Ack\n");
329
330 s3c24xx_i2c_stop(i2c, -ECONNREFUSED);
331 goto out_ack;
332 }
333 }
334
326 retry_write: 335 retry_write:
336
327 if (!is_msgend(i2c)) { 337 if (!is_msgend(i2c)) {
328 byte = i2c->msg->buf[i2c->msg_ptr++]; 338 byte = i2c->msg->buf[i2c->msg_ptr++];
329 writeb(byte, i2c->regs + S3C2410_IICDS); 339 writeb(byte, i2c->regs + S3C2410_IICDS);
@@ -377,17 +387,6 @@ static int i2s_s3c_irq_nextbyte(struct s3c24xx_i2c *i2c, unsigned long iicstat)
377 * going to do any more read/write 387 * going to do any more read/write
378 */ 388 */
379 389
380 if (!(i2c->msg->flags & I2C_M_IGNORE_NAK) &&
381 !(is_msglast(i2c) && is_lastmsg(i2c))) {
382
383 if (iicstat & S3C2410_IICSTAT_LASTBIT) {
384 dev_dbg(i2c->dev, "READ: No Ack\n");
385
386 s3c24xx_i2c_stop(i2c, -ECONNREFUSED);
387 goto out_ack;
388 }
389 }
390
391 byte = readb(i2c->regs + S3C2410_IICDS); 390 byte = readb(i2c->regs + S3C2410_IICDS);
392 i2c->msg->buf[i2c->msg_ptr++] = byte; 391 i2c->msg->buf[i2c->msg_ptr++] = byte;
393 392
@@ -949,3 +948,4 @@ MODULE_DESCRIPTION("S3C24XX I2C Bus driver");
949MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>"); 948MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
950MODULE_LICENSE("GPL"); 949MODULE_LICENSE("GPL");
951MODULE_ALIAS("platform:s3c2410-i2c"); 950MODULE_ALIAS("platform:s3c2410-i2c");
951MODULE_ALIAS("platform:s3c2440-i2c");
diff --git a/drivers/ide/arm/palm_bk3710.c b/drivers/ide/arm/palm_bk3710.c
index d024ac8fad14..cc24803fadff 100644
--- a/drivers/ide/arm/palm_bk3710.c
+++ b/drivers/ide/arm/palm_bk3710.c
@@ -353,8 +353,8 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
353 struct clk *clkp; 353 struct clk *clkp;
354 struct resource *mem, *irq; 354 struct resource *mem, *irq;
355 ide_hwif_t *hwif; 355 ide_hwif_t *hwif;
356 void __iomem *base; 356 unsigned long base;
357 int pribase, i; 357 int i;
358 hw_regs_t hw; 358 hw_regs_t hw;
359 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; 359 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
360 360
@@ -374,22 +374,27 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
374 printk(KERN_ERR "failed to get memory region resource\n"); 374 printk(KERN_ERR "failed to get memory region resource\n");
375 return -ENODEV; 375 return -ENODEV;
376 } 376 }
377
377 irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); 378 irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
378 if (irq == NULL) { 379 if (irq == NULL) {
379 printk(KERN_ERR "failed to get IRQ resource\n"); 380 printk(KERN_ERR "failed to get IRQ resource\n");
380 return -ENODEV; 381 return -ENODEV;
381 } 382 }
382 383
383 base = (void *)mem->start; 384 if (request_mem_region(mem->start, mem->end - mem->start + 1,
385 "palm_bk3710") == NULL) {
386 printk(KERN_ERR "failed to request memory region\n");
387 return -EBUSY;
388 }
389
390 base = IO_ADDRESS(mem->start);
384 391
385 /* Configure the Palm Chip controller */ 392 /* Configure the Palm Chip controller */
386 palm_bk3710_chipinit(base); 393 palm_bk3710_chipinit((void __iomem *)base);
387 394
388 pribase = mem->start + IDE_PALM_ATA_PRI_REG_OFFSET;
389 for (i = 0; i < IDE_NR_PORTS - 2; i++) 395 for (i = 0; i < IDE_NR_PORTS - 2; i++)
390 hw.io_ports_array[i] = pribase + i; 396 hw.io_ports_array[i] = base + IDE_PALM_ATA_PRI_REG_OFFSET + i;
391 hw.io_ports.ctl_addr = mem->start + 397 hw.io_ports.ctl_addr = base + IDE_PALM_ATA_PRI_CTL_OFFSET;
392 IDE_PALM_ATA_PRI_CTL_OFFSET;
393 hw.irq = irq->start; 398 hw.irq = irq->start;
394 hw.chipset = ide_palm3710; 399 hw.chipset = ide_palm3710;
395 400
@@ -434,4 +439,3 @@ static int __init palm_bk3710_init(void)
434 439
435module_init(palm_bk3710_init); 440module_init(palm_bk3710_init);
436MODULE_LICENSE("GPL"); 441MODULE_LICENSE("GPL");
437
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 380fa0c8cc84..d27061b39324 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -646,8 +646,6 @@ static int ide_register_port(ide_hwif_t *hwif)
646 goto out; 646 goto out;
647 } 647 }
648 648
649 get_device(&hwif->gendev);
650
651 hwif->portdev = device_create_drvdata(ide_port_class, &hwif->gendev, 649 hwif->portdev = device_create_drvdata(ide_port_class, &hwif->gendev,
652 MKDEV(0, 0), hwif, hwif->name); 650 MKDEV(0, 0), hwif, hwif->name);
653 if (IS_ERR(hwif->portdev)) { 651 if (IS_ERR(hwif->portdev)) {
diff --git a/drivers/ide/ide-proc.c b/drivers/ide/ide-proc.c
index 55ec7f798772..8af88bf0969b 100644
--- a/drivers/ide/ide-proc.c
+++ b/drivers/ide/ide-proc.c
@@ -76,7 +76,7 @@ static int proc_ide_read_mate
76 ide_hwif_t *hwif = (ide_hwif_t *) data; 76 ide_hwif_t *hwif = (ide_hwif_t *) data;
77 int len; 77 int len;
78 78
79 if (hwif && hwif->mate && hwif->mate->present) 79 if (hwif && hwif->mate)
80 len = sprintf(page, "%s\n", hwif->mate->name); 80 len = sprintf(page, "%s\n", hwif->mate->name);
81 else 81 else
82 len = sprintf(page, "(none)\n"); 82 len = sprintf(page, "(none)\n");
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
index 0c908ca3ff79..ab545ffa1549 100644
--- a/drivers/ide/ide-taskfile.c
+++ b/drivers/ide/ide-taskfile.c
@@ -225,10 +225,10 @@ static u8 wait_drive_not_busy(ide_drive_t *drive)
225 u8 stat; 225 u8 stat;
226 226
227 /* 227 /*
228 * Last sector was transfered, wait until drive is ready. 228 * Last sector was transfered, wait until device is ready. This can
229 * This can take up to 10 usec, but we will wait max 1 ms. 229 * take up to 6 ms on some ATAPI devices, so we will wait max 10 ms.
230 */ 230 */
231 for (retries = 0; retries < 100; retries++) { 231 for (retries = 0; retries < 1000; retries++) {
232 stat = ide_read_status(drive); 232 stat = ide_read_status(drive);
233 233
234 if (stat & BUSY_STAT) 234 if (stat & BUSY_STAT)
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index c758dcb13b14..300431d080a9 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -315,13 +315,14 @@ void ide_unregister(ide_hwif_t *hwif)
315 315
316 BUG_ON(in_interrupt()); 316 BUG_ON(in_interrupt());
317 BUG_ON(irqs_disabled()); 317 BUG_ON(irqs_disabled());
318
318 mutex_lock(&ide_cfg_mtx); 319 mutex_lock(&ide_cfg_mtx);
319 spin_lock_irq(&ide_lock);
320 if (!hwif->present)
321 goto abort;
322 __ide_port_unregister_devices(hwif);
323 hwif->present = 0;
324 320
321 spin_lock_irq(&ide_lock);
322 if (hwif->present) {
323 __ide_port_unregister_devices(hwif);
324 hwif->present = 0;
325 }
325 spin_unlock_irq(&ide_lock); 326 spin_unlock_irq(&ide_lock);
326 327
327 ide_proc_unregister_port(hwif); 328 ide_proc_unregister_port(hwif);
@@ -351,16 +352,15 @@ void ide_unregister(ide_hwif_t *hwif)
351 blk_unregister_region(MKDEV(hwif->major, 0), MAX_DRIVES<<PARTN_BITS); 352 blk_unregister_region(MKDEV(hwif->major, 0), MAX_DRIVES<<PARTN_BITS);
352 kfree(hwif->sg_table); 353 kfree(hwif->sg_table);
353 unregister_blkdev(hwif->major, hwif->name); 354 unregister_blkdev(hwif->major, hwif->name);
354 spin_lock_irq(&ide_lock);
355 355
356 if (hwif->dma_base) 356 if (hwif->dma_base)
357 ide_release_dma_engine(hwif); 357 ide_release_dma_engine(hwif);
358 358
359 spin_lock_irq(&ide_lock);
359 /* restore hwif data to pristine status */ 360 /* restore hwif data to pristine status */
360 ide_init_port_data(hwif, hwif->index); 361 ide_init_port_data(hwif, hwif->index);
361
362abort:
363 spin_unlock_irq(&ide_lock); 362 spin_unlock_irq(&ide_lock);
363
364 mutex_unlock(&ide_cfg_mtx); 364 mutex_unlock(&ide_cfg_mtx);
365} 365}
366 366
@@ -1094,13 +1094,6 @@ struct bus_type ide_bus_type = {
1094 1094
1095EXPORT_SYMBOL_GPL(ide_bus_type); 1095EXPORT_SYMBOL_GPL(ide_bus_type);
1096 1096
1097static void ide_port_class_release(struct device *portdev)
1098{
1099 ide_hwif_t *hwif = dev_get_drvdata(portdev);
1100
1101 put_device(&hwif->gendev);
1102}
1103
1104int ide_vlb_clk; 1097int ide_vlb_clk;
1105EXPORT_SYMBOL_GPL(ide_vlb_clk); 1098EXPORT_SYMBOL_GPL(ide_vlb_clk);
1106 1099
@@ -1305,7 +1298,6 @@ static int __init ide_init(void)
1305 ret = PTR_ERR(ide_port_class); 1298 ret = PTR_ERR(ide_port_class);
1306 goto out_port_class; 1299 goto out_port_class;
1307 } 1300 }
1308 ide_port_class->dev_release = ide_port_class_release;
1309 1301
1310 init_ide_data(); 1302 init_ide_data();
1311 1303
diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c
index f633b6b3c7f3..3381424d70a1 100644
--- a/drivers/ide/legacy/ide-cs.c
+++ b/drivers/ide/legacy/ide-cs.c
@@ -410,6 +410,7 @@ static struct pcmcia_device_id ide_ids[] = {
410 PCMCIA_DEVICE_MANF_CARD(0x001c, 0x0001), /* Mitsubishi CFA */ 410 PCMCIA_DEVICE_MANF_CARD(0x001c, 0x0001), /* Mitsubishi CFA */
411 PCMCIA_DEVICE_MANF_CARD(0x0032, 0x0704), 411 PCMCIA_DEVICE_MANF_CARD(0x0032, 0x0704),
412 PCMCIA_DEVICE_MANF_CARD(0x0045, 0x0401), /* SanDisk CFA */ 412 PCMCIA_DEVICE_MANF_CARD(0x0045, 0x0401), /* SanDisk CFA */
413 PCMCIA_DEVICE_MANF_CARD(0x004f, 0x0000), /* Kingston */
413 PCMCIA_DEVICE_MANF_CARD(0x0098, 0x0000), /* Toshiba */ 414 PCMCIA_DEVICE_MANF_CARD(0x0098, 0x0000), /* Toshiba */
414 PCMCIA_DEVICE_MANF_CARD(0x00a4, 0x002d), 415 PCMCIA_DEVICE_MANF_CARD(0x00a4, 0x002d),
415 PCMCIA_DEVICE_MANF_CARD(0x00ce, 0x0000), /* Samsung */ 416 PCMCIA_DEVICE_MANF_CARD(0x00ce, 0x0000), /* Samsung */
@@ -439,6 +440,7 @@ static struct pcmcia_device_id ide_ids[] = {
439 PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149), 440 PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
440 PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674), 441 PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674),
441 PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b), 442 PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b),
443 PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF300", 0x7ed2ad87, 0x7e9e78ee),
442 PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c), 444 PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c),
443 PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79), 445 PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79),
444 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591), 446 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591),
@@ -449,6 +451,7 @@ static struct pcmcia_device_id ide_ids[] = {
449 PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6), 451 PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6),
450 PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003), 452 PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003),
451 PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443), 453 PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443),
454 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS1GCF45", 0x709b1bf1, 0xf68b6f32),
452 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS1GCF80", 0x709b1bf1, 0x2a54d4b1), 455 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS1GCF80", 0x709b1bf1, 0x2a54d4b1),
453 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS2GCF120", 0x709b1bf1, 0x969aa4f2), 456 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS2GCF120", 0x709b1bf1, 0x969aa4f2),
454 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8), 457 PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8),
diff --git a/drivers/ieee1394/Kconfig b/drivers/ieee1394/Kconfig
index 545663ef820b..95f45f9b8e5e 100644
--- a/drivers/ieee1394/Kconfig
+++ b/drivers/ieee1394/Kconfig
@@ -4,7 +4,7 @@ menu "IEEE 1394 (FireWire) support"
4source "drivers/firewire/Kconfig" 4source "drivers/firewire/Kconfig"
5 5
6config IEEE1394 6config IEEE1394
7 tristate "IEEE 1394 (FireWire) support" 7 tristate "Stable FireWire stack"
8 depends on PCI || BROKEN 8 depends on PCI || BROKEN
9 help 9 help
10 IEEE 1394 describes a high performance serial bus, which is also 10 IEEE 1394 describes a high performance serial bus, which is also
@@ -19,30 +19,45 @@ config IEEE1394
19 To compile this driver as a module, say M here: the 19 To compile this driver as a module, say M here: the
20 module will be called ieee1394. 20 module will be called ieee1394.
21 21
22comment "Subsystem Options" 22config IEEE1394_OHCI1394
23 depends on IEEE1394 23 tristate "OHCI-1394 controllers"
24 24 depends on PCI && IEEE1394
25config IEEE1394_VERBOSEDEBUG
26 bool "Excessive debugging output"
27 depends on IEEE1394
28 help 25 help
29 If you say Y here, you will get very verbose debugging logs from 26 Enable this driver if you have an IEEE 1394 controller based on the
30 the subsystem which includes a dump of the header of every sent 27 OHCI-1394 specification. The current driver is only tested with OHCI
31 and received packet. This can amount to a high amount of data 28 chipsets made by Texas Instruments and NEC. Most third-party vendors
32 collected in a very short time which is usually also saved to 29 use one of these chipsets. It should work with any OHCI-1394
33 disk by the system logging daemons. 30 compliant card, however.
34 31
35 Say Y if you really want or need the debugging output, everyone 32 To compile this driver as a module, say M here: the
36 else says N. 33 module will be called ohci1394.
37 34
38comment "Controllers" 35 NOTE:
39 depends on IEEE1394
40 36
41comment "Texas Instruments PCILynx requires I2C" 37 You should only build either ohci1394 or the new firewire-ohci driver,
38 but not both. If you nevertheless want to install both, you should
39 configure them only as modules and blacklist the driver(s) which you
40 don't want to have auto-loaded. Add either
41
42 blacklist firewire-ohci
43 or
44 blacklist ohci1394
45 blacklist video1394
46 blacklist dv1394
47
48 to /etc/modprobe.conf or /etc/modprobe.d/* and update modprobe.conf
49 depending on your distribution. The latter two modules should be
50 blacklisted together with ohci1394 because they depend on ohci1394.
51
52 If you have an old modprobe which doesn't implement the blacklist
53 directive, use "install modulename /bin/true" for the modules to be
54 blacklisted.
55
56comment "PCILynx controller requires I2C"
42 depends on IEEE1394 && I2C=n 57 depends on IEEE1394 && I2C=n
43 58
44config IEEE1394_PCILYNX 59config IEEE1394_PCILYNX
45 tristate "Texas Instruments PCILynx support" 60 tristate "PCILynx controller"
46 depends on PCI && IEEE1394 && I2C 61 depends on PCI && IEEE1394 && I2C
47 select I2C_ALGOBIT 62 select I2C_ALGOBIT
48 help 63 help
@@ -57,35 +72,11 @@ config IEEE1394_PCILYNX
57 PowerMacs G3 B&W contain the PCILynx controller. Therefore 72 PowerMacs G3 B&W contain the PCILynx controller. Therefore
58 almost everybody can say N here. 73 almost everybody can say N here.
59 74
60config IEEE1394_OHCI1394
61 tristate "OHCI-1394 support"
62 depends on PCI && IEEE1394
63 help
64 Enable this driver if you have an IEEE 1394 controller based on the
65 OHCI-1394 specification. The current driver is only tested with OHCI
66 chipsets made by Texas Instruments and NEC. Most third-party vendors
67 use one of these chipsets. It should work with any OHCI-1394
68 compliant card, however.
69
70 To compile this driver as a module, say M here: the
71 module will be called ohci1394.
72
73comment "Protocols"
74 depends on IEEE1394
75
76config IEEE1394_VIDEO1394
77 tristate "OHCI-1394 Video support"
78 depends on IEEE1394 && IEEE1394_OHCI1394
79 help
80 This option enables video device usage for OHCI-1394 cards. Enable
81 this option only if you have an IEEE 1394 video device connected to
82 an OHCI-1394 card.
83
84comment "SBP-2 support (for storage devices) requires SCSI" 75comment "SBP-2 support (for storage devices) requires SCSI"
85 depends on IEEE1394 && SCSI=n 76 depends on IEEE1394 && SCSI=n
86 77
87config IEEE1394_SBP2 78config IEEE1394_SBP2
88 tristate "SBP-2 support (Harddisks etc.)" 79 tristate "Storage devices (SBP-2 protocol)"
89 depends on IEEE1394 && SCSI 80 depends on IEEE1394 && SCSI
90 help 81 help
91 This option enables you to use SBP-2 devices connected to an IEEE 82 This option enables you to use SBP-2 devices connected to an IEEE
@@ -127,24 +118,47 @@ config IEEE1394_ETH1394
127 118
128 The module is called eth1394 although it does not emulate Ethernet. 119 The module is called eth1394 although it does not emulate Ethernet.
129 120
121config IEEE1394_RAWIO
122 tristate "raw1394 userspace interface"
123 depends on IEEE1394
124 help
125 This option adds support for the raw1394 device file which enables
126 direct communication of user programs with IEEE 1394 devices
127 (isochronous and asynchronous). Almost all application programs
128 which access FireWire require this option.
129
130 To compile this driver as a module, say M here: the module will be
131 called raw1394.
132
133config IEEE1394_VIDEO1394
134 tristate "video1394 userspace interface"
135 depends on IEEE1394 && IEEE1394_OHCI1394
136 help
137 This option adds support for the video1394 device files which enable
138 isochronous communication of user programs with IEEE 1394 devices,
139 especially video capture or export. This interface is used by all
140 libdc1394 based programs and by several other programs, in addition to
141 the raw1394 interface. It is generally not required for DV capture.
142
143 To compile this driver as a module, say M here: the module will be
144 called video1394.
145
130config IEEE1394_DV1394 146config IEEE1394_DV1394
131 tristate "OHCI-DV I/O support (deprecated)" 147 tristate "dv1394 userspace interface (deprecated)"
132 depends on IEEE1394 && IEEE1394_OHCI1394 148 depends on IEEE1394 && IEEE1394_OHCI1394
133 help 149 help
134 The dv1394 driver is unsupported and may be removed from Linux in a 150 The dv1394 driver is unsupported and may be removed from Linux in a
135 future release. Its functionality is now provided by raw1394 together 151 future release. Its functionality is now provided by raw1394 together
136 with libraries such as libiec61883. 152 with libraries such as libiec61883.
137 153
138config IEEE1394_RAWIO 154config IEEE1394_VERBOSEDEBUG
139 tristate "Raw IEEE1394 I/O support" 155 bool "Excessive debugging output"
140 depends on IEEE1394 156 depends on IEEE1394
141 help 157 help
142 This option adds support for the raw1394 device file which enables 158 If you say Y here, you will get very verbose debugging logs from the
143 direct communication of user programs with the IEEE 1394 bus and thus 159 ieee1394 drivers, including sent and received packet headers. This
144 with the attached peripherals. Almost all application programs which 160 will quickly result in large amounts of data sent to the system log.
145 access FireWire require this option.
146 161
147 To compile this driver as a module, say M here: the module will be 162 Say Y if you really need the debugging output. Everyone else says N.
148 called raw1394.
149 163
150endmenu 164endmenu
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
index f806da184b51..caed42bf7ef5 100644
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -423,7 +423,7 @@ static void ib_uverbs_async_handler(struct ib_uverbs_file *file,
423 unsigned long flags; 423 unsigned long flags;
424 424
425 spin_lock_irqsave(&file->async_file->lock, flags); 425 spin_lock_irqsave(&file->async_file->lock, flags);
426 if (!file->async_file->is_closed) { 426 if (file->async_file->is_closed) {
427 spin_unlock_irqrestore(&file->async_file->lock, flags); 427 spin_unlock_irqrestore(&file->async_file->lock, flags);
428 return; 428 return;
429 } 429 }
diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniband/hw/mthca/mthca_memfree.c
index b224079d4e1f..d5862e5d99a0 100644
--- a/drivers/infiniband/hw/mthca/mthca_memfree.c
+++ b/drivers/infiniband/hw/mthca/mthca_memfree.c
@@ -109,7 +109,11 @@ static int mthca_alloc_icm_pages(struct scatterlist *mem, int order, gfp_t gfp_m
109{ 109{
110 struct page *page; 110 struct page *page;
111 111
112 page = alloc_pages(gfp_mask, order); 112 /*
113 * Use __GFP_ZERO because buggy firmware assumes ICM pages are
114 * cleared, and subtle failures are seen if they aren't.
115 */
116 page = alloc_pages(gfp_mask | __GFP_ZERO, order);
113 if (!page) 117 if (!page)
114 return -ENOMEM; 118 return -ENOMEM;
115 119
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
index 99b3c4ae86eb..d617da9bd351 100644
--- a/drivers/infiniband/hw/nes/nes_verbs.c
+++ b/drivers/infiniband/hw/nes/nes_verbs.c
@@ -2456,10 +2456,8 @@ static struct ib_mr *nes_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
2456 if ((page_count!=0)&&(page_count<<12)-(region->offset&(4096-1))>=region->length) 2456 if ((page_count!=0)&&(page_count<<12)-(region->offset&(4096-1))>=region->length)
2457 goto enough_pages; 2457 goto enough_pages;
2458 if ((page_count&0x01FF) == 0) { 2458 if ((page_count&0x01FF) == 0) {
2459 if (page_count>(1024*512)) { 2459 if (page_count >= 1024 * 512) {
2460 ib_umem_release(region); 2460 ib_umem_release(region);
2461 pci_free_consistent(nesdev->pcidev, 4096, vpbl.pbl_vbase,
2462 vpbl.pbl_pbase);
2463 nes_free_resource(nesadapter, 2461 nes_free_resource(nesadapter,
2464 nesadapter->allocated_mrs, stag_index); 2462 nesadapter->allocated_mrs, stag_index);
2465 kfree(nesmr); 2463 kfree(nesmr);
diff --git a/drivers/input/ff-core.c b/drivers/input/ff-core.c
index eebc72465fc9..72c63e5dd630 100644
--- a/drivers/input/ff-core.c
+++ b/drivers/input/ff-core.c
@@ -28,6 +28,7 @@
28#include <linux/input.h> 28#include <linux/input.h>
29#include <linux/module.h> 29#include <linux/module.h>
30#include <linux/mutex.h> 30#include <linux/mutex.h>
31#include <linux/sched.h>
31 32
32/* 33/*
33 * Check that the effect_id is a valid effect and whether the user 34 * Check that the effect_id is a valid effect and whether the user
@@ -166,8 +167,10 @@ int input_ff_upload(struct input_dev *dev, struct ff_effect *effect,
166 if (ret) 167 if (ret)
167 goto out; 168 goto out;
168 169
170 spin_lock_irq(&dev->event_lock);
169 ff->effects[id] = *effect; 171 ff->effects[id] = *effect;
170 ff->effect_owners[id] = file; 172 ff->effect_owners[id] = file;
173 spin_unlock_irq(&dev->event_lock);
171 174
172 out: 175 out:
173 mutex_unlock(&ff->mutex); 176 mutex_unlock(&ff->mutex);
@@ -189,16 +192,22 @@ static int erase_effect(struct input_dev *dev, int effect_id,
189 if (error) 192 if (error)
190 return error; 193 return error;
191 194
195 spin_lock_irq(&dev->event_lock);
192 ff->playback(dev, effect_id, 0); 196 ff->playback(dev, effect_id, 0);
197 ff->effect_owners[effect_id] = NULL;
198 spin_unlock_irq(&dev->event_lock);
193 199
194 if (ff->erase) { 200 if (ff->erase) {
195 error = ff->erase(dev, effect_id); 201 error = ff->erase(dev, effect_id);
196 if (error) 202 if (error) {
203 spin_lock_irq(&dev->event_lock);
204 ff->effect_owners[effect_id] = file;
205 spin_unlock_irq(&dev->event_lock);
206
197 return error; 207 return error;
208 }
198 } 209 }
199 210
200 ff->effect_owners[effect_id] = NULL;
201
202 return 0; 211 return 0;
203} 212}
204 213
@@ -263,8 +272,6 @@ int input_ff_event(struct input_dev *dev, unsigned int type,
263 if (type != EV_FF) 272 if (type != EV_FF)
264 return 0; 273 return 0;
265 274
266 mutex_lock(&ff->mutex);
267
268 switch (code) { 275 switch (code) {
269 case FF_GAIN: 276 case FF_GAIN:
270 if (!test_bit(FF_GAIN, dev->ffbit) || value > 0xffff) 277 if (!test_bit(FF_GAIN, dev->ffbit) || value > 0xffff)
@@ -286,7 +293,6 @@ int input_ff_event(struct input_dev *dev, unsigned int type,
286 break; 293 break;
287 } 294 }
288 295
289 mutex_unlock(&ff->mutex);
290 return 0; 296 return 0;
291} 297}
292EXPORT_SYMBOL_GPL(input_ff_event); 298EXPORT_SYMBOL_GPL(input_ff_event);
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 3ad8bd9f7543..432699d61c58 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -15,7 +15,6 @@ if INPUT_MISC
15config INPUT_PCSPKR 15config INPUT_PCSPKR
16 tristate "PC Speaker support" 16 tristate "PC Speaker support"
17 depends on PCSPKR_PLATFORM 17 depends on PCSPKR_PLATFORM
18 depends on SND_PCSP=n
19 help 18 help
20 Say Y here if you want the standard PC Speaker to be used for 19 Say Y here if you want the standard PC Speaker to be used for
21 bells and whistles. 20 bells and whistles.
diff --git a/drivers/input/mouse/appletouch.c b/drivers/input/mouse/appletouch.c
index 8dd3942f3022..ce6fdec19e14 100644
--- a/drivers/input/mouse/appletouch.c
+++ b/drivers/input/mouse/appletouch.c
@@ -589,6 +589,21 @@ static void atp_close(struct input_dev *input)
589 dev->open = 0; 589 dev->open = 0;
590} 590}
591 591
592static int atp_handle_geyser(struct atp *dev)
593{
594 struct usb_device *udev = dev->udev;
595
596 if (!atp_is_fountain(dev)) {
597 /* switch to raw sensor mode */
598 if (atp_geyser_init(udev))
599 return -EIO;
600
601 printk(KERN_INFO "appletouch: Geyser mode initialized.\n");
602 }
603
604 return 0;
605}
606
592static int atp_probe(struct usb_interface *iface, const struct usb_device_id *id) 607static int atp_probe(struct usb_interface *iface, const struct usb_device_id *id)
593{ 608{
594 struct atp *dev; 609 struct atp *dev;
@@ -633,14 +648,6 @@ static int atp_probe(struct usb_interface *iface, const struct usb_device_id *id
633 else 648 else
634 dev->datalen = 81; 649 dev->datalen = 81;
635 650
636 if (!atp_is_fountain(dev)) {
637 /* switch to raw sensor mode */
638 if (atp_geyser_init(udev))
639 goto err_free_devs;
640
641 printk(KERN_INFO "appletouch: Geyser mode initialized.\n");
642 }
643
644 dev->urb = usb_alloc_urb(0, GFP_KERNEL); 651 dev->urb = usb_alloc_urb(0, GFP_KERNEL);
645 if (!dev->urb) 652 if (!dev->urb)
646 goto err_free_devs; 653 goto err_free_devs;
@@ -654,6 +661,10 @@ static int atp_probe(struct usb_interface *iface, const struct usb_device_id *id
654 usb_rcvintpipe(udev, int_in_endpointAddr), 661 usb_rcvintpipe(udev, int_in_endpointAddr),
655 dev->data, dev->datalen, atp_complete, dev, 1); 662 dev->data, dev->datalen, atp_complete, dev, 1);
656 663
664 error = atp_handle_geyser(dev);
665 if (error)
666 goto err_free_buffer;
667
657 usb_make_path(udev, dev->phys, sizeof(dev->phys)); 668 usb_make_path(udev, dev->phys, sizeof(dev->phys));
658 strlcat(dev->phys, "/input0", sizeof(dev->phys)); 669 strlcat(dev->phys, "/input0", sizeof(dev->phys));
659 670
@@ -744,6 +755,20 @@ static void atp_disconnect(struct usb_interface *iface)
744 printk(KERN_INFO "input: appletouch disconnected\n"); 755 printk(KERN_INFO "input: appletouch disconnected\n");
745} 756}
746 757
758static int atp_recover(struct atp *dev)
759{
760 int error;
761
762 error = atp_handle_geyser(dev);
763 if (error)
764 return error;
765
766 if (dev->open && usb_submit_urb(dev->urb, GFP_ATOMIC))
767 return -EIO;
768
769 return 0;
770}
771
747static int atp_suspend(struct usb_interface *iface, pm_message_t message) 772static int atp_suspend(struct usb_interface *iface, pm_message_t message)
748{ 773{
749 struct atp *dev = usb_get_intfdata(iface); 774 struct atp *dev = usb_get_intfdata(iface);
@@ -764,12 +789,20 @@ static int atp_resume(struct usb_interface *iface)
764 return 0; 789 return 0;
765} 790}
766 791
792static int atp_reset_resume(struct usb_interface *iface)
793{
794 struct atp *dev = usb_get_intfdata(iface);
795
796 return atp_recover(dev);
797}
798
767static struct usb_driver atp_driver = { 799static struct usb_driver atp_driver = {
768 .name = "appletouch", 800 .name = "appletouch",
769 .probe = atp_probe, 801 .probe = atp_probe,
770 .disconnect = atp_disconnect, 802 .disconnect = atp_disconnect,
771 .suspend = atp_suspend, 803 .suspend = atp_suspend,
772 .resume = atp_resume, 804 .resume = atp_resume,
805 .reset_resume = atp_reset_resume,
773 .id_table = atp_table, 806 .id_table = atp_table,
774}; 807};
775 808
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 9aafa96cb746..78eb7841174c 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -193,6 +193,13 @@ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = {
193 }, 193 },
194 }, 194 },
195 { 195 {
196 .ident = "Fujitsu-Siemens Amilo Pro 2030",
197 .matches = {
198 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
199 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"),
200 },
201 },
202 {
196 /* 203 /*
197 * No data is coming from the touchscreen unless KBC 204 * No data is coming from the touchscreen unless KBC
198 * is in legacy mode. 205 * is in legacy mode.
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 592ff55b62d0..170f71ee5772 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -952,8 +952,12 @@ static int i8042_resume(struct platform_device *dev)
952 i8042_ctr |= I8042_CTR_AUXDIS | I8042_CTR_KBDDIS; 952 i8042_ctr |= I8042_CTR_AUXDIS | I8042_CTR_KBDDIS;
953 i8042_ctr &= ~(I8042_CTR_AUXINT | I8042_CTR_KBDINT); 953 i8042_ctr &= ~(I8042_CTR_AUXINT | I8042_CTR_KBDINT);
954 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { 954 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
955 printk(KERN_ERR "i8042: Can't write CTR to resume\n"); 955 printk(KERN_WARNING "i8042: Can't write CTR to resume, retrying...\n");
956 return -EIO; 956 msleep(50);
957 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
958 printk(KERN_ERR "i8042: CTR write retry failed\n");
959 return -EIO;
960 }
957 } 961 }
958 962
959 963
diff --git a/drivers/input/xen-kbdfront.c b/drivers/input/xen-kbdfront.c
index 0f47f4697cdf..9ce3b3baf3a2 100644
--- a/drivers/input/xen-kbdfront.c
+++ b/drivers/input/xen-kbdfront.c
@@ -66,6 +66,9 @@ static irqreturn_t input_handler(int rq, void *dev_id)
66 case XENKBD_TYPE_MOTION: 66 case XENKBD_TYPE_MOTION:
67 input_report_rel(dev, REL_X, event->motion.rel_x); 67 input_report_rel(dev, REL_X, event->motion.rel_x);
68 input_report_rel(dev, REL_Y, event->motion.rel_y); 68 input_report_rel(dev, REL_Y, event->motion.rel_y);
69 if (event->motion.rel_z)
70 input_report_rel(dev, REL_WHEEL,
71 -event->motion.rel_z);
69 break; 72 break;
70 case XENKBD_TYPE_KEY: 73 case XENKBD_TYPE_KEY:
71 dev = NULL; 74 dev = NULL;
@@ -84,6 +87,9 @@ static irqreturn_t input_handler(int rq, void *dev_id)
84 case XENKBD_TYPE_POS: 87 case XENKBD_TYPE_POS:
85 input_report_abs(dev, ABS_X, event->pos.abs_x); 88 input_report_abs(dev, ABS_X, event->pos.abs_x);
86 input_report_abs(dev, ABS_Y, event->pos.abs_y); 89 input_report_abs(dev, ABS_Y, event->pos.abs_y);
90 if (event->pos.rel_z)
91 input_report_rel(dev, REL_WHEEL,
92 -event->pos.rel_z);
87 break; 93 break;
88 } 94 }
89 if (dev) 95 if (dev)
@@ -152,7 +158,7 @@ static int __devinit xenkbd_probe(struct xenbus_device *dev,
152 ptr->evbit[0] = BIT(EV_KEY) | BIT(EV_REL) | BIT(EV_ABS); 158 ptr->evbit[0] = BIT(EV_KEY) | BIT(EV_REL) | BIT(EV_ABS);
153 for (i = BTN_LEFT; i <= BTN_TASK; i++) 159 for (i = BTN_LEFT; i <= BTN_TASK; i++)
154 set_bit(i, ptr->keybit); 160 set_bit(i, ptr->keybit);
155 ptr->relbit[0] = BIT(REL_X) | BIT(REL_Y); 161 ptr->relbit[0] = BIT(REL_X) | BIT(REL_Y) | BIT(REL_WHEEL);
156 input_set_abs_params(ptr, ABS_X, 0, XENFB_WIDTH, 0, 0); 162 input_set_abs_params(ptr, ABS_X, 0, XENFB_WIDTH, 0, 0);
157 input_set_abs_params(ptr, ABS_Y, 0, XENFB_HEIGHT, 0, 0); 163 input_set_abs_params(ptr, ABS_Y, 0, XENFB_HEIGHT, 0, 0);
158 164
@@ -294,6 +300,16 @@ InitWait:
294 */ 300 */
295 if (dev->state != XenbusStateConnected) 301 if (dev->state != XenbusStateConnected)
296 goto InitWait; /* no InitWait seen yet, fudge it */ 302 goto InitWait; /* no InitWait seen yet, fudge it */
303
304 /* Set input abs params to match backend screen res */
305 if (xenbus_scanf(XBT_NIL, info->xbdev->otherend,
306 "width", "%d", &val) > 0)
307 input_set_abs_params(info->ptr, ABS_X, 0, val, 0, 0);
308
309 if (xenbus_scanf(XBT_NIL, info->xbdev->otherend,
310 "height", "%d", &val) > 0)
311 input_set_abs_params(info->ptr, ABS_Y, 0, val, 0, 0);
312
297 break; 313 break;
298 314
299 case XenbusStateClosing: 315 case XenbusStateClosing:
@@ -337,4 +353,6 @@ static void __exit xenkbd_cleanup(void)
337module_init(xenkbd_init); 353module_init(xenkbd_init);
338module_exit(xenkbd_cleanup); 354module_exit(xenkbd_cleanup);
339 355
356MODULE_DESCRIPTION("Xen virtual keyboard/pointer device frontend");
340MODULE_LICENSE("GPL"); 357MODULE_LICENSE("GPL");
358MODULE_ALIAS("xen:vkbd");
diff --git a/drivers/lguest/lg.h b/drivers/lguest/lg.h
index 005bd045d2eb..5faefeaf6790 100644
--- a/drivers/lguest/lg.h
+++ b/drivers/lguest/lg.h
@@ -136,7 +136,6 @@ int run_guest(struct lg_cpu *cpu, unsigned long __user *user);
136 * first step in the migration to the kernel types. pte_pfn is already defined 136 * first step in the migration to the kernel types. pte_pfn is already defined
137 * in the kernel. */ 137 * in the kernel. */
138#define pgd_flags(x) (pgd_val(x) & ~PAGE_MASK) 138#define pgd_flags(x) (pgd_val(x) & ~PAGE_MASK)
139#define pte_flags(x) (pte_val(x) & ~PAGE_MASK)
140#define pgd_pfn(x) (pgd_val(x) >> PAGE_SHIFT) 139#define pgd_pfn(x) (pgd_val(x) >> PAGE_SHIFT)
141 140
142/* interrupts_and_traps.c: */ 141/* interrupts_and_traps.c: */
diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c
index 5126d5d9ea0e..2e554a4ab337 100644
--- a/drivers/lguest/x86/core.c
+++ b/drivers/lguest/x86/core.c
@@ -176,7 +176,7 @@ void lguest_arch_run_guest(struct lg_cpu *cpu)
176 * we set it now, so we can trap and pass that trap to the Guest if it 176 * we set it now, so we can trap and pass that trap to the Guest if it
177 * uses the FPU. */ 177 * uses the FPU. */
178 if (cpu->ts) 178 if (cpu->ts)
179 lguest_set_ts(); 179 unlazy_fpu(current);
180 180
181 /* SYSENTER is an optimized way of doing system calls. We can't allow 181 /* SYSENTER is an optimized way of doing system calls. We can't allow
182 * it because it always jumps to privilege level 0. A normal Guest 182 * it because it always jumps to privilege level 0. A normal Guest
@@ -196,6 +196,10 @@ void lguest_arch_run_guest(struct lg_cpu *cpu)
196 * trap made the switcher code come back, and an error code which some 196 * trap made the switcher code come back, and an error code which some
197 * traps set. */ 197 * traps set. */
198 198
199 /* Restore SYSENTER if it's supposed to be on. */
200 if (boot_cpu_has(X86_FEATURE_SEP))
201 wrmsr(MSR_IA32_SYSENTER_CS, __KERNEL_CS, 0);
202
199 /* If the Guest page faulted, then the cr2 register will tell us the 203 /* If the Guest page faulted, then the cr2 register will tell us the
200 * bad virtual address. We have to grab this now, because once we 204 * bad virtual address. We have to grab this now, because once we
201 * re-enable interrupts an interrupt could fault and thus overwrite 205 * re-enable interrupts an interrupt could fault and thus overwrite
@@ -203,13 +207,12 @@ void lguest_arch_run_guest(struct lg_cpu *cpu)
203 if (cpu->regs->trapnum == 14) 207 if (cpu->regs->trapnum == 14)
204 cpu->arch.last_pagefault = read_cr2(); 208 cpu->arch.last_pagefault = read_cr2();
205 /* Similarly, if we took a trap because the Guest used the FPU, 209 /* Similarly, if we took a trap because the Guest used the FPU,
206 * we have to restore the FPU it expects to see. */ 210 * we have to restore the FPU it expects to see.
211 * math_state_restore() may sleep and we may even move off to
212 * a different CPU. So all the critical stuff should be done
213 * before this. */
207 else if (cpu->regs->trapnum == 7) 214 else if (cpu->regs->trapnum == 7)
208 math_state_restore(); 215 math_state_restore();
209
210 /* Restore SYSENTER if it's supposed to be on. */
211 if (boot_cpu_has(X86_FEATURE_SEP))
212 wrmsr(MSR_IA32_SYSENTER_CS, __KERNEL_CS, 0);
213} 216}
214 217
215/*H:130 Now we've examined the hypercall code; our Guest can make requests. 218/*H:130 Now we've examined the hypercall code; our Guest can make requests.
diff --git a/drivers/macintosh/mediabay.c b/drivers/macintosh/mediabay.c
index c34bdf852e32..818aba368541 100644
--- a/drivers/macintosh/mediabay.c
+++ b/drivers/macintosh/mediabay.c
@@ -84,7 +84,7 @@ struct media_bay_info {
84 int cd_irq; 84 int cd_irq;
85 int cd_retry; 85 int cd_retry;
86#endif 86#endif
87#if defined(CONFIG_BLK_DEV_IDE_PMAC) || defined(CONFIG_MAC_FLOPPY) 87#if defined(CONFIG_BLK_DEV_IDE_PMAC)
88 int cd_index; 88 int cd_index;
89#endif 89#endif
90}; 90};
@@ -417,6 +417,7 @@ static void poll_media_bay(struct media_bay_info* bay)
417 } 417 }
418} 418}
419 419
420#ifdef CONFIG_BLK_DEV_IDE_PMAC
420int check_media_bay(struct device_node *which_bay, int what) 421int check_media_bay(struct device_node *which_bay, int what)
421{ 422{
422 int i; 423 int i;
@@ -432,7 +433,6 @@ int check_media_bay(struct device_node *which_bay, int what)
432} 433}
433EXPORT_SYMBOL(check_media_bay); 434EXPORT_SYMBOL(check_media_bay);
434 435
435#ifdef CONFIG_BLK_DEV_IDE_PMAC
436int check_media_bay_by_base(unsigned long base, int what) 436int check_media_bay_by_base(unsigned long base, int what)
437{ 437{
438 int i; 438 int i;
diff --git a/drivers/macintosh/smu.c b/drivers/macintosh/smu.c
index 77ad192962c5..d86d57af282a 100644
--- a/drivers/macintosh/smu.c
+++ b/drivers/macintosh/smu.c
@@ -483,12 +483,15 @@ int __init smu_init (void)
483 483
484 if (smu_cmdbuf_abs == 0) { 484 if (smu_cmdbuf_abs == 0) {
485 printk(KERN_ERR "SMU: Command buffer not allocated !\n"); 485 printk(KERN_ERR "SMU: Command buffer not allocated !\n");
486 of_node_put(np);
486 return -EINVAL; 487 return -EINVAL;
487 } 488 }
488 489
489 smu = alloc_bootmem(sizeof(struct smu_device)); 490 smu = alloc_bootmem(sizeof(struct smu_device));
490 if (smu == NULL) 491 if (smu == NULL) {
492 of_node_put(np);
491 return -ENOMEM; 493 return -ENOMEM;
494 }
492 memset(smu, 0, sizeof(*smu)); 495 memset(smu, 0, sizeof(*smu));
493 496
494 spin_lock_init(&smu->lock); 497 spin_lock_init(&smu->lock);
diff --git a/drivers/macintosh/therm_adt746x.c b/drivers/macintosh/therm_adt746x.c
index 54f4942a2968..5366dc93fb38 100644
--- a/drivers/macintosh/therm_adt746x.c
+++ b/drivers/macintosh/therm_adt746x.c
@@ -562,18 +562,24 @@ thermostat_init(void)
562 therm_type = ADT7460; 562 therm_type = ADT7460;
563 else if (of_device_is_compatible(np, "adt7467")) 563 else if (of_device_is_compatible(np, "adt7467"))
564 therm_type = ADT7467; 564 therm_type = ADT7467;
565 else 565 else {
566 of_node_put(np);
566 return -ENODEV; 567 return -ENODEV;
568 }
567 569
568 prop = of_get_property(np, "hwsensor-params-version", NULL); 570 prop = of_get_property(np, "hwsensor-params-version", NULL);
569 printk(KERN_INFO "adt746x: version %d (%ssupported)\n", *prop, 571 printk(KERN_INFO "adt746x: version %d (%ssupported)\n", *prop,
570 (*prop == 1)?"":"un"); 572 (*prop == 1)?"":"un");
571 if (*prop != 1) 573 if (*prop != 1) {
574 of_node_put(np);
572 return -ENODEV; 575 return -ENODEV;
576 }
573 577
574 prop = of_get_property(np, "reg", NULL); 578 prop = of_get_property(np, "reg", NULL);
575 if (!prop) 579 if (!prop) {
580 of_node_put(np);
576 return -ENODEV; 581 return -ENODEV;
582 }
577 583
578 /* look for bus either by path or using "reg" */ 584 /* look for bus either by path or using "reg" */
579 if (strstr(np->full_name, "/i2c-bus@") != NULL) { 585 if (strstr(np->full_name, "/i2c-bus@") != NULL) {
@@ -610,6 +616,7 @@ thermostat_init(void)
610 616
611 if (of_dev == NULL) { 617 if (of_dev == NULL) {
612 printk(KERN_ERR "Can't register temperatures device !\n"); 618 printk(KERN_ERR "Can't register temperatures device !\n");
619 of_node_put(np);
613 return -ENODEV; 620 return -ENODEV;
614 } 621 }
615 622
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 835def11419d..ab6a61db63ce 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -432,6 +432,7 @@ static int crypt_convert(struct crypt_config *cc,
432 case 0: 432 case 0:
433 atomic_dec(&ctx->pending); 433 atomic_dec(&ctx->pending);
434 ctx->sector++; 434 ctx->sector++;
435 cond_resched();
435 continue; 436 continue;
436 437
437 /* error */ 438 /* error */
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 7cf512a34ccf..2580ac1b9b0f 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -3897,8 +3897,10 @@ static void autorun_devices(int part)
3897 3897
3898 md_probe(dev, NULL, NULL); 3898 md_probe(dev, NULL, NULL);
3899 mddev = mddev_find(dev); 3899 mddev = mddev_find(dev);
3900 if (!mddev) { 3900 if (!mddev || !mddev->gendisk) {
3901 printk(KERN_ERR 3901 if (mddev)
3902 mddev_put(mddev);
3903 printk(KERN_ERR
3902 "md: cannot allocate memory for md drive.\n"); 3904 "md: cannot allocate memory for md drive.\n");
3903 break; 3905 break;
3904 } 3906 }
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 1de17da34a95..a71277b640ab 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -2137,6 +2137,8 @@ static int run(mddev_t *mddev)
2137 !test_bit(In_sync, &disk->rdev->flags)) { 2137 !test_bit(In_sync, &disk->rdev->flags)) {
2138 disk->head_position = 0; 2138 disk->head_position = 0;
2139 mddev->degraded++; 2139 mddev->degraded++;
2140 if (disk->rdev)
2141 conf->fullsync = 1;
2140 } 2142 }
2141 } 2143 }
2142 2144
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index c37e256b1176..54c8ee28fcc4 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -2898,6 +2898,8 @@ static void handle_stripe5(struct stripe_head *sh)
2898 2898
2899 for (i = conf->raid_disks; i--; ) { 2899 for (i = conf->raid_disks; i--; ) {
2900 set_bit(R5_Wantwrite, &sh->dev[i].flags); 2900 set_bit(R5_Wantwrite, &sh->dev[i].flags);
2901 set_bit(R5_LOCKED, &dev->flags);
2902 s.locked++;
2901 if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) 2903 if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending))
2902 sh->ops.count++; 2904 sh->ops.count++;
2903 } 2905 }
@@ -2911,6 +2913,7 @@ static void handle_stripe5(struct stripe_head *sh)
2911 conf->raid_disks); 2913 conf->raid_disks);
2912 s.locked += handle_write_operations5(sh, 1, 1); 2914 s.locked += handle_write_operations5(sh, 1, 1);
2913 } else if (s.expanded && 2915 } else if (s.expanded &&
2916 s.locked == 0 &&
2914 !test_bit(STRIPE_OP_POSTXOR, &sh->ops.pending)) { 2917 !test_bit(STRIPE_OP_POSTXOR, &sh->ops.pending)) {
2915 clear_bit(STRIPE_EXPAND_READY, &sh->state); 2918 clear_bit(STRIPE_EXPAND_READY, &sh->state);
2916 atomic_dec(&conf->reshape_stripes); 2919 atomic_dec(&conf->reshape_stripes);
@@ -4305,7 +4308,9 @@ static int run(mddev_t *mddev)
4305 " disk %d\n", bdevname(rdev->bdev,b), 4308 " disk %d\n", bdevname(rdev->bdev,b),
4306 raid_disk); 4309 raid_disk);
4307 working_disks++; 4310 working_disks++;
4308 } 4311 } else
4312 /* Cannot rely on bitmap to complete recovery */
4313 conf->fullsync = 1;
4309 } 4314 }
4310 4315
4311 /* 4316 /*
diff --git a/drivers/media/common/ir-keymaps.c b/drivers/media/common/ir-keymaps.c
index a3485817e46c..8fa91f846d59 100644
--- a/drivers/media/common/ir-keymaps.c
+++ b/drivers/media/common/ir-keymaps.c
@@ -2201,3 +2201,41 @@ IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE] = {
2201 [0x25] = KEY_POWER, /* power */ 2201 [0x25] = KEY_POWER, /* power */
2202}; 2202};
2203EXPORT_SYMBOL_GPL(ir_codes_powercolor_real_angel); 2203EXPORT_SYMBOL_GPL(ir_codes_powercolor_real_angel);
2204
2205IR_KEYTAB_TYPE ir_codes_avermedia_a16d[IR_KEYTAB_SIZE] = {
2206 [0x20] = KEY_LIST,
2207 [0x00] = KEY_POWER,
2208 [0x28] = KEY_1,
2209 [0x18] = KEY_2,
2210 [0x38] = KEY_3,
2211 [0x24] = KEY_4,
2212 [0x14] = KEY_5,
2213 [0x34] = KEY_6,
2214 [0x2c] = KEY_7,
2215 [0x1c] = KEY_8,
2216 [0x3c] = KEY_9,
2217 [0x12] = KEY_SUBTITLE,
2218 [0x22] = KEY_0,
2219 [0x32] = KEY_REWIND,
2220 [0x3a] = KEY_SHUFFLE,
2221 [0x02] = KEY_PRINT,
2222 [0x11] = KEY_CHANNELDOWN,
2223 [0x31] = KEY_CHANNELUP,
2224 [0x0c] = KEY_ZOOM,
2225 [0x1e] = KEY_VOLUMEDOWN,
2226 [0x3e] = KEY_VOLUMEUP,
2227 [0x0a] = KEY_MUTE,
2228 [0x04] = KEY_AUDIO,
2229 [0x26] = KEY_RECORD,
2230 [0x06] = KEY_PLAY,
2231 [0x36] = KEY_STOP,
2232 [0x16] = KEY_PAUSE,
2233 [0x2e] = KEY_REWIND,
2234 [0x0e] = KEY_FASTFORWARD,
2235 [0x30] = KEY_TEXT,
2236 [0x21] = KEY_GREEN,
2237 [0x01] = KEY_BLUE,
2238 [0x08] = KEY_EPG,
2239 [0x2a] = KEY_MENU,
2240};
2241EXPORT_SYMBOL_GPL(ir_codes_avermedia_a16d);
diff --git a/drivers/media/common/tuners/tda18271-common.c b/drivers/media/common/tuners/tda18271-common.c
index f1894fec32b9..6fb5b4586569 100644
--- a/drivers/media/common/tuners/tda18271-common.c
+++ b/drivers/media/common/tuners/tda18271-common.c
@@ -649,9 +649,17 @@ int tda18271_calc_rf_cal(struct dvb_frontend *fe, u32 *freq)
649 u8 val; 649 u8 val;
650 650
651 int ret = tda18271_lookup_map(fe, RF_CAL, freq, &val); 651 int ret = tda18271_lookup_map(fe, RF_CAL, freq, &val);
652 /* The TDA18271HD/C1 rf_cal map lookup is expected to go out of range
653 * for frequencies above 61.1 MHz. In these cases, the internal RF
654 * tracking filters calibration mechanism is used.
655 *
656 * There is no need to warn the user about this.
657 */
658 if (ret < 0)
659 goto fail;
652 660
653 regs[R_EB14] = val; 661 regs[R_EB14] = val;
654 662fail:
655 return ret; 663 return ret;
656} 664}
657 665
diff --git a/drivers/media/common/tuners/tda18271-fe.c b/drivers/media/common/tuners/tda18271-fe.c
index 89c01fb1f859..93063c6fbbf6 100644
--- a/drivers/media/common/tuners/tda18271-fe.c
+++ b/drivers/media/common/tuners/tda18271-fe.c
@@ -45,6 +45,21 @@ static inline int charge_pump_source(struct dvb_frontend *fe, int force)
45 TDA18271_MAIN_PLL, force); 45 TDA18271_MAIN_PLL, force);
46} 46}
47 47
48static inline void tda18271_set_if_notch(struct dvb_frontend *fe)
49{
50 struct tda18271_priv *priv = fe->tuner_priv;
51 unsigned char *regs = priv->tda18271_regs;
52
53 switch (priv->mode) {
54 case TDA18271_ANALOG:
55 regs[R_MPD] &= ~0x80; /* IF notch = 0 */
56 break;
57 case TDA18271_DIGITAL:
58 regs[R_MPD] |= 0x80; /* IF notch = 1 */
59 break;
60 }
61}
62
48static int tda18271_channel_configuration(struct dvb_frontend *fe, 63static int tda18271_channel_configuration(struct dvb_frontend *fe,
49 struct tda18271_std_map_item *map, 64 struct tda18271_std_map_item *map,
50 u32 freq, u32 bw) 65 u32 freq, u32 bw)
@@ -60,25 +75,18 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe,
60 regs[R_EP3] &= ~0x1f; /* clear std bits */ 75 regs[R_EP3] &= ~0x1f; /* clear std bits */
61 regs[R_EP3] |= (map->agc_mode << 3) | map->std; 76 regs[R_EP3] |= (map->agc_mode << 3) | map->std;
62 77
63 /* set rfagc to high speed mode */ 78 if (priv->id == TDA18271HDC2) {
64 regs[R_EP3] &= ~0x04; 79 /* set rfagc to high speed mode */
80 regs[R_EP3] &= ~0x04;
81 }
65 82
66 /* set cal mode to normal */ 83 /* set cal mode to normal */
67 regs[R_EP4] &= ~0x03; 84 regs[R_EP4] &= ~0x03;
68 85
69 /* update IF output level & IF notch frequency */ 86 /* update IF output level */
70 regs[R_EP4] &= ~0x1c; /* clear if level bits */ 87 regs[R_EP4] &= ~0x1c; /* clear if level bits */
71 regs[R_EP4] |= (map->if_lvl << 2); 88 regs[R_EP4] |= (map->if_lvl << 2);
72 89
73 switch (priv->mode) {
74 case TDA18271_ANALOG:
75 regs[R_MPD] &= ~0x80; /* IF notch = 0 */
76 break;
77 case TDA18271_DIGITAL:
78 regs[R_MPD] |= 0x80; /* IF notch = 1 */
79 break;
80 }
81
82 /* update FM_RFn */ 90 /* update FM_RFn */
83 regs[R_EP4] &= ~0x80; 91 regs[R_EP4] &= ~0x80;
84 regs[R_EP4] |= map->fm_rfn << 7; 92 regs[R_EP4] |= map->fm_rfn << 7;
@@ -95,6 +103,9 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe,
95 /* disable Power Level Indicator */ 103 /* disable Power Level Indicator */
96 regs[R_EP1] |= 0x40; 104 regs[R_EP1] |= 0x40;
97 105
106 /* make sure thermometer is off */
107 regs[R_TM] &= ~0x10;
108
98 /* frequency dependent parameters */ 109 /* frequency dependent parameters */
99 110
100 tda18271_calc_ir_measure(fe, &freq); 111 tda18271_calc_ir_measure(fe, &freq);
@@ -135,6 +146,7 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe,
135 switch (priv->role) { 146 switch (priv->role) {
136 case TDA18271_MASTER: 147 case TDA18271_MASTER:
137 tda18271_calc_main_pll(fe, N); 148 tda18271_calc_main_pll(fe, N);
149 tda18271_set_if_notch(fe);
138 tda18271_write_regs(fe, R_MPD, 4); 150 tda18271_write_regs(fe, R_MPD, 4);
139 break; 151 break;
140 case TDA18271_SLAVE: 152 case TDA18271_SLAVE:
@@ -142,6 +154,7 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe,
142 tda18271_write_regs(fe, R_CPD, 4); 154 tda18271_write_regs(fe, R_CPD, 4);
143 155
144 regs[R_MPD] = regs[R_CPD] & 0x7f; 156 regs[R_MPD] = regs[R_CPD] & 0x7f;
157 tda18271_set_if_notch(fe);
145 tda18271_write_regs(fe, R_MPD, 1); 158 tda18271_write_regs(fe, R_MPD, 1);
146 break; 159 break;
147 } 160 }
@@ -160,12 +173,14 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe,
160 173
161 msleep(20); 174 msleep(20);
162 175
163 /* set rfagc to normal speed mode */ 176 if (priv->id == TDA18271HDC2) {
164 if (map->fm_rfn) 177 /* set rfagc to normal speed mode */
165 regs[R_EP3] &= ~0x04; 178 if (map->fm_rfn)
166 else 179 regs[R_EP3] &= ~0x04;
167 regs[R_EP3] |= 0x04; 180 else
168 ret = tda18271_write_regs(fe, R_EP3, 1); 181 regs[R_EP3] |= 0x04;
182 ret = tda18271_write_regs(fe, R_EP3, 1);
183 }
169fail: 184fail:
170 return ret; 185 return ret;
171} 186}
@@ -507,7 +522,7 @@ static int tda18271_powerscan_init(struct dvb_frontend *fe)
507 /* set cal mode to normal */ 522 /* set cal mode to normal */
508 regs[R_EP4] &= ~0x03; 523 regs[R_EP4] &= ~0x03;
509 524
510 /* update IF output level & IF notch frequency */ 525 /* update IF output level */
511 regs[R_EP4] &= ~0x1c; /* clear if level bits */ 526 regs[R_EP4] &= ~0x1c; /* clear if level bits */
512 527
513 ret = tda18271_write_regs(fe, R_EP3, 2); 528 ret = tda18271_write_regs(fe, R_EP3, 2);
diff --git a/drivers/media/common/tuners/xc5000.c b/drivers/media/common/tuners/xc5000.c
index ceae6db901ec..7cf4f5bdb2ec 100644
--- a/drivers/media/common/tuners/xc5000.c
+++ b/drivers/media/common/tuners/xc5000.c
@@ -177,6 +177,7 @@ static XC_TV_STANDARD XC5000_Standard[MAX_TV_STANDARD] = {
177 {"FM Radio-INPUT1", 0x0208, 0x9002} 177 {"FM Radio-INPUT1", 0x0208, 0x9002}
178}; 178};
179 179
180static int xc5000_is_firmware_loaded(struct dvb_frontend *fe);
180static int xc5000_writeregs(struct xc5000_priv *priv, u8 *buf, u8 len); 181static int xc5000_writeregs(struct xc5000_priv *priv, u8 *buf, u8 len);
181static int xc5000_readregs(struct xc5000_priv *priv, u8 *buf, u8 len); 182static int xc5000_readregs(struct xc5000_priv *priv, u8 *buf, u8 len);
182static void xc5000_TunerReset(struct dvb_frontend *fe); 183static void xc5000_TunerReset(struct dvb_frontend *fe);
@@ -352,7 +353,7 @@ static int xc_SetTVStandard(struct xc5000_priv *priv,
352 353
353static int xc_shutdown(struct xc5000_priv *priv) 354static int xc_shutdown(struct xc5000_priv *priv)
354{ 355{
355 return 0; 356 return XC_RESULT_SUCCESS;
356 /* Fixme: cannot bring tuner back alive once shutdown 357 /* Fixme: cannot bring tuner back alive once shutdown
357 * without reloading the driver modules. 358 * without reloading the driver modules.
358 * return xc_write_reg(priv, XREG_POWER_DOWN, 0); 359 * return xc_write_reg(priv, XREG_POWER_DOWN, 0);
@@ -685,6 +686,25 @@ static int xc5000_set_params(struct dvb_frontend *fe,
685 return 0; 686 return 0;
686} 687}
687 688
689static int xc5000_is_firmware_loaded(struct dvb_frontend *fe)
690{
691 struct xc5000_priv *priv = fe->tuner_priv;
692 int ret;
693 u16 id;
694
695 ret = xc5000_readreg(priv, XREG_PRODUCT_ID, &id);
696 if (ret == XC_RESULT_SUCCESS) {
697 if (id == XC_PRODUCT_ID_FW_NOT_LOADED)
698 ret = XC_RESULT_RESET_FAILURE;
699 else
700 ret = XC_RESULT_SUCCESS;
701 }
702
703 dprintk(1, "%s() returns %s id = 0x%x\n", __func__,
704 ret == XC_RESULT_SUCCESS ? "True" : "False", id);
705 return ret;
706}
707
688static int xc_load_fw_and_init_tuner(struct dvb_frontend *fe); 708static int xc_load_fw_and_init_tuner(struct dvb_frontend *fe);
689 709
690static int xc5000_set_analog_params(struct dvb_frontend *fe, 710static int xc5000_set_analog_params(struct dvb_frontend *fe,
@@ -693,7 +713,7 @@ static int xc5000_set_analog_params(struct dvb_frontend *fe,
693 struct xc5000_priv *priv = fe->tuner_priv; 713 struct xc5000_priv *priv = fe->tuner_priv;
694 int ret; 714 int ret;
695 715
696 if(priv->fwloaded == 0) 716 if (xc5000_is_firmware_loaded(fe) != XC_RESULT_SUCCESS)
697 xc_load_fw_and_init_tuner(fe); 717 xc_load_fw_and_init_tuner(fe);
698 718
699 dprintk(1, "%s() frequency=%d (in units of 62.5khz)\n", 719 dprintk(1, "%s() frequency=%d (in units of 62.5khz)\n",
@@ -808,11 +828,10 @@ static int xc_load_fw_and_init_tuner(struct dvb_frontend *fe)
808 struct xc5000_priv *priv = fe->tuner_priv; 828 struct xc5000_priv *priv = fe->tuner_priv;
809 int ret = 0; 829 int ret = 0;
810 830
811 if (priv->fwloaded == 0) { 831 if (xc5000_is_firmware_loaded(fe) != XC_RESULT_SUCCESS) {
812 ret = xc5000_fwupload(fe); 832 ret = xc5000_fwupload(fe);
813 if (ret != XC_RESULT_SUCCESS) 833 if (ret != XC_RESULT_SUCCESS)
814 return ret; 834 return ret;
815 priv->fwloaded = 1;
816 } 835 }
817 836
818 /* Start the tuner self-calibration process */ 837 /* Start the tuner self-calibration process */
@@ -852,7 +871,6 @@ static int xc5000_sleep(struct dvb_frontend *fe)
852 return -EREMOTEIO; 871 return -EREMOTEIO;
853 } 872 }
854 else { 873 else {
855 /* priv->fwloaded = 0; */
856 return XC_RESULT_SUCCESS; 874 return XC_RESULT_SUCCESS;
857 } 875 }
858} 876}
@@ -933,7 +951,6 @@ struct dvb_frontend *xc5000_attach(struct dvb_frontend *fe,
933 cfg->i2c_address); 951 cfg->i2c_address);
934 printk(KERN_INFO 952 printk(KERN_INFO
935 "xc5000: Firmware has been loaded previously\n"); 953 "xc5000: Firmware has been loaded previously\n");
936 priv->fwloaded = 1;
937 break; 954 break;
938 case XC_PRODUCT_ID_FW_NOT_LOADED: 955 case XC_PRODUCT_ID_FW_NOT_LOADED:
939 printk(KERN_INFO 956 printk(KERN_INFO
@@ -941,7 +958,6 @@ struct dvb_frontend *xc5000_attach(struct dvb_frontend *fe,
941 cfg->i2c_address); 958 cfg->i2c_address);
942 printk(KERN_INFO 959 printk(KERN_INFO
943 "xc5000: Firmware has not been loaded previously\n"); 960 "xc5000: Firmware has not been loaded previously\n");
944 priv->fwloaded = 0;
945 break; 961 break;
946 default: 962 default:
947 printk(KERN_ERR 963 printk(KERN_ERR
diff --git a/drivers/media/common/tuners/xc5000_priv.h b/drivers/media/common/tuners/xc5000_priv.h
index ecebfe4745ad..a72a9887fe7f 100644
--- a/drivers/media/common/tuners/xc5000_priv.h
+++ b/drivers/media/common/tuners/xc5000_priv.h
@@ -30,7 +30,6 @@ struct xc5000_priv {
30 u32 bandwidth; 30 u32 bandwidth;
31 u8 video_standard; 31 u8 video_standard;
32 u8 rf_mode; 32 u8 rf_mode;
33 u8 fwloaded;
34 33
35 void *devptr; 34 void *devptr;
36}; 35};
diff --git a/drivers/media/dvb/dvb-usb/gl861.c b/drivers/media/dvb/dvb-usb/gl861.c
index 0a8ac64a4e33..037f7ffb47b2 100644
--- a/drivers/media/dvb/dvb-usb/gl861.c
+++ b/drivers/media/dvb/dvb-usb/gl861.c
@@ -47,6 +47,8 @@ static int gl861_i2c_msg(struct dvb_usb_device *d, u8 addr,
47 return -EINVAL; 47 return -EINVAL;
48 } 48 }
49 49
50 msleep(1); /* avoid I2C errors */
51
50 return usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0), req, type, 52 return usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0), req, type,
51 value, index, rbuf, rlen, 2000); 53 value, index, rbuf, rlen, 2000);
52} 54}
@@ -92,16 +94,6 @@ static struct i2c_algorithm gl861_i2c_algo = {
92}; 94};
93 95
94/* Callbacks for DVB USB */ 96/* Callbacks for DVB USB */
95static int gl861_identify_state(struct usb_device *udev,
96 struct dvb_usb_device_properties *props,
97 struct dvb_usb_device_description **desc,
98 int *cold)
99{
100 *cold = 0;
101
102 return 0;
103}
104
105static struct zl10353_config gl861_zl10353_config = { 97static struct zl10353_config gl861_zl10353_config = {
106 .demod_address = 0x0f, 98 .demod_address = 0x0f,
107 .no_tuner = 1, 99 .no_tuner = 1,
@@ -172,7 +164,6 @@ static struct dvb_usb_device_properties gl861_properties = {
172 164
173 .size_of_priv = 0, 165 .size_of_priv = 0,
174 166
175 .identify_state = gl861_identify_state,
176 .num_adapters = 1, 167 .num_adapters = 1,
177 .adapter = {{ 168 .adapter = {{
178 169
@@ -194,13 +185,15 @@ static struct dvb_usb_device_properties gl861_properties = {
194 185
195 .num_device_descs = 2, 186 .num_device_descs = 2,
196 .devices = { 187 .devices = {
197 { "MSI Mega Sky 55801 DVB-T USB2.0", 188 {
198 { &gl861_table[0], NULL }, 189 .name = "MSI Mega Sky 55801 DVB-T USB2.0",
199 { NULL }, 190 .cold_ids = { NULL },
191 .warm_ids = { &gl861_table[0], NULL },
200 }, 192 },
201 { "A-LINK DTU DVB-T USB2.0", 193 {
202 { &gl861_table[1], NULL }, 194 .name = "A-LINK DTU DVB-T USB2.0",
203 { NULL }, 195 .cold_ids = { NULL },
196 .warm_ids = { &gl861_table[1], NULL },
204 }, 197 },
205 } 198 }
206}; 199};
diff --git a/drivers/media/dvb/dvb-usb/umt-010.c b/drivers/media/dvb/dvb-usb/umt-010.c
index 9e7653bb3b66..118aab1a3e54 100644
--- a/drivers/media/dvb/dvb-usb/umt-010.c
+++ b/drivers/media/dvb/dvb-usb/umt-010.c
@@ -107,7 +107,7 @@ static struct dvb_usb_device_properties umt_properties = {
107 /* parameter for the MPEG2-data transfer */ 107 /* parameter for the MPEG2-data transfer */
108 .stream = { 108 .stream = {
109 .type = USB_BULK, 109 .type = USB_BULK,
110 .count = 20, 110 .count = MAX_NO_URBS_FOR_DATA_STREAM,
111 .endpoint = 0x06, 111 .endpoint = 0x06,
112 .u = { 112 .u = {
113 .bulk = { 113 .bulk = {
diff --git a/drivers/media/dvb/frontends/au8522.c b/drivers/media/dvb/frontends/au8522.c
index 084a280c2d7f..03900d241a76 100644
--- a/drivers/media/dvb/frontends/au8522.c
+++ b/drivers/media/dvb/frontends/au8522.c
@@ -463,10 +463,13 @@ static int au8522_set_frontend(struct dvb_frontend *fe,
463 struct dvb_frontend_parameters *p) 463 struct dvb_frontend_parameters *p)
464{ 464{
465 struct au8522_state *state = fe->demodulator_priv; 465 struct au8522_state *state = fe->demodulator_priv;
466 int ret = -EINVAL;
466 467
467 dprintk("%s(frequency=%d)\n", __func__, p->frequency); 468 dprintk("%s(frequency=%d)\n", __func__, p->frequency);
468 469
469 state->current_frequency = p->frequency; 470 if ((state->current_frequency == p->frequency) &&
471 (state->current_modulation == p->u.vsb.modulation))
472 return 0;
470 473
471 au8522_enable_modulation(fe, p->u.vsb.modulation); 474 au8522_enable_modulation(fe, p->u.vsb.modulation);
472 475
@@ -476,11 +479,16 @@ static int au8522_set_frontend(struct dvb_frontend *fe,
476 if (fe->ops.tuner_ops.set_params) { 479 if (fe->ops.tuner_ops.set_params) {
477 if (fe->ops.i2c_gate_ctrl) 480 if (fe->ops.i2c_gate_ctrl)
478 fe->ops.i2c_gate_ctrl(fe, 1); 481 fe->ops.i2c_gate_ctrl(fe, 1);
479 fe->ops.tuner_ops.set_params(fe, p); 482 ret = fe->ops.tuner_ops.set_params(fe, p);
480 if (fe->ops.i2c_gate_ctrl) 483 if (fe->ops.i2c_gate_ctrl)
481 fe->ops.i2c_gate_ctrl(fe, 0); 484 fe->ops.i2c_gate_ctrl(fe, 0);
482 } 485 }
483 486
487 if (ret < 0)
488 return ret;
489
490 state->current_frequency = p->frequency;
491
484 return 0; 492 return 0;
485} 493}
486 494
@@ -498,6 +506,16 @@ static int au8522_init(struct dvb_frontend *fe)
498 return 0; 506 return 0;
499} 507}
500 508
509static int au8522_sleep(struct dvb_frontend *fe)
510{
511 struct au8522_state *state = fe->demodulator_priv;
512 dprintk("%s()\n", __func__);
513
514 state->current_frequency = 0;
515
516 return 0;
517}
518
501static int au8522_read_status(struct dvb_frontend *fe, fe_status_t *status) 519static int au8522_read_status(struct dvb_frontend *fe, fe_status_t *status)
502{ 520{
503 struct au8522_state *state = fe->demodulator_priv; 521 struct au8522_state *state = fe->demodulator_priv;
@@ -509,10 +527,8 @@ static int au8522_read_status(struct dvb_frontend *fe, fe_status_t *status)
509 if (state->current_modulation == VSB_8) { 527 if (state->current_modulation == VSB_8) {
510 dprintk("%s() Checking VSB_8\n", __func__); 528 dprintk("%s() Checking VSB_8\n", __func__);
511 reg = au8522_readreg(state, 0x4088); 529 reg = au8522_readreg(state, 0x4088);
512 if (reg & 0x01) 530 if ((reg & 0x03) == 0x03)
513 *status |= FE_HAS_VITERBI; 531 *status |= FE_HAS_LOCK | FE_HAS_SYNC | FE_HAS_VITERBI;
514 if (reg & 0x02)
515 *status |= FE_HAS_LOCK | FE_HAS_SYNC;
516 } else { 532 } else {
517 dprintk("%s() Checking QAM\n", __func__); 533 dprintk("%s() Checking QAM\n", __func__);
518 reg = au8522_readreg(state, 0x4541); 534 reg = au8522_readreg(state, 0x4541);
@@ -672,6 +688,7 @@ static struct dvb_frontend_ops au8522_ops = {
672 }, 688 },
673 689
674 .init = au8522_init, 690 .init = au8522_init,
691 .sleep = au8522_sleep,
675 .i2c_gate_ctrl = au8522_i2c_gate_ctrl, 692 .i2c_gate_ctrl = au8522_i2c_gate_ctrl,
676 .set_frontend = au8522_set_frontend, 693 .set_frontend = au8522_set_frontend,
677 .get_frontend = au8522_get_frontend, 694 .get_frontend = au8522_get_frontend,
diff --git a/drivers/media/dvb/frontends/stv0299.c b/drivers/media/dvb/frontends/stv0299.c
index 17556183e871..35435bef8e79 100644
--- a/drivers/media/dvb/frontends/stv0299.c
+++ b/drivers/media/dvb/frontends/stv0299.c
@@ -63,6 +63,7 @@ struct stv0299_state {
63 u32 symbol_rate; 63 u32 symbol_rate;
64 fe_code_rate_t fec_inner; 64 fe_code_rate_t fec_inner;
65 int errmode; 65 int errmode;
66 u32 ucblocks;
66}; 67};
67 68
68#define STATUS_BER 0 69#define STATUS_BER 0
@@ -501,8 +502,10 @@ static int stv0299_read_ber(struct dvb_frontend* fe, u32* ber)
501{ 502{
502 struct stv0299_state* state = fe->demodulator_priv; 503 struct stv0299_state* state = fe->demodulator_priv;
503 504
504 if (state->errmode != STATUS_BER) return 0; 505 if (state->errmode != STATUS_BER)
505 *ber = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e); 506 return -ENOSYS;
507
508 *ber = stv0299_readreg(state, 0x1e) | (stv0299_readreg(state, 0x1d) << 8);
506 509
507 return 0; 510 return 0;
508} 511}
@@ -540,8 +543,12 @@ static int stv0299_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
540{ 543{
541 struct stv0299_state* state = fe->demodulator_priv; 544 struct stv0299_state* state = fe->demodulator_priv;
542 545
543 if (state->errmode != STATUS_UCBLOCKS) *ucblocks = 0; 546 if (state->errmode != STATUS_UCBLOCKS)
544 else *ucblocks = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e); 547 return -ENOSYS;
548
549 state->ucblocks += stv0299_readreg(state, 0x1e);
550 state->ucblocks += (stv0299_readreg(state, 0x1d) << 8);
551 *ucblocks = state->ucblocks;
545 552
546 return 0; 553 return 0;
547} 554}
diff --git a/drivers/media/dvb/frontends/tda10023.c b/drivers/media/dvb/frontends/tda10023.c
index 0727b80bc4d2..c6ff5b82ff80 100644
--- a/drivers/media/dvb/frontends/tda10023.c
+++ b/drivers/media/dvb/frontends/tda10023.c
@@ -116,9 +116,12 @@ static u8 tda10023_readreg (struct tda10023_state* state, u8 reg)
116 int ret; 116 int ret;
117 117
118 ret = i2c_transfer (state->i2c, msg, 2); 118 ret = i2c_transfer (state->i2c, msg, 2);
119 if (ret != 2) 119 if (ret != 2) {
120 printk("DVB: TDA10023: %s: readreg error (ret == %i)\n", 120 int num = state->frontend.dvb ? state->frontend.dvb->num : -1;
121 __func__, ret); 121 printk(KERN_ERR "DVB: TDA10023(%d): %s: readreg error "
122 "(reg == 0x%02x, ret == %i)\n",
123 num, __func__, reg, ret);
124 }
122 return b1[0]; 125 return b1[0];
123} 126}
124 127
@@ -129,11 +132,12 @@ static int tda10023_writereg (struct tda10023_state* state, u8 reg, u8 data)
129 int ret; 132 int ret;
130 133
131 ret = i2c_transfer (state->i2c, &msg, 1); 134 ret = i2c_transfer (state->i2c, &msg, 1);
132 if (ret != 1) 135 if (ret != 1) {
133 printk("DVB: TDA10023(%d): %s, writereg error " 136 int num = state->frontend.dvb ? state->frontend.dvb->num : -1;
137 printk(KERN_ERR "DVB: TDA10023(%d): %s, writereg error "
134 "(reg == 0x%02x, val == 0x%02x, ret == %i)\n", 138 "(reg == 0x%02x, val == 0x%02x, ret == %i)\n",
135 state->frontend.dvb->num, __func__, reg, data, ret); 139 num, __func__, reg, data, ret);
136 140 }
137 return (ret != 1) ? -EREMOTEIO : 0; 141 return (ret != 1) ? -EREMOTEIO : 0;
138} 142}
139 143
@@ -464,7 +468,7 @@ struct dvb_frontend* tda10023_attach(const struct tda1002x_config* config,
464 int i; 468 int i;
465 469
466 /* allocate memory for the internal state */ 470 /* allocate memory for the internal state */
467 state = kmalloc(sizeof(struct tda10023_state), GFP_KERNEL); 471 state = kzalloc(sizeof(struct tda10023_state), GFP_KERNEL);
468 if (state == NULL) goto error; 472 if (state == NULL) goto error;
469 473
470 /* setup the state */ 474 /* setup the state */
diff --git a/drivers/media/dvb/frontends/tda1004x.c b/drivers/media/dvb/frontends/tda1004x.c
index 49973846373e..a0d638653567 100644
--- a/drivers/media/dvb/frontends/tda1004x.c
+++ b/drivers/media/dvb/frontends/tda1004x.c
@@ -1248,11 +1248,14 @@ struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config,
1248 struct i2c_adapter* i2c) 1248 struct i2c_adapter* i2c)
1249{ 1249{
1250 struct tda1004x_state *state; 1250 struct tda1004x_state *state;
1251 int id;
1251 1252
1252 /* allocate memory for the internal state */ 1253 /* allocate memory for the internal state */
1253 state = kmalloc(sizeof(struct tda1004x_state), GFP_KERNEL); 1254 state = kmalloc(sizeof(struct tda1004x_state), GFP_KERNEL);
1254 if (!state) 1255 if (!state) {
1256 printk(KERN_ERR "Can't alocate memory for tda10045 state\n");
1255 return NULL; 1257 return NULL;
1258 }
1256 1259
1257 /* setup the state */ 1260 /* setup the state */
1258 state->config = config; 1261 state->config = config;
@@ -1260,7 +1263,15 @@ struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config,
1260 state->demod_type = TDA1004X_DEMOD_TDA10045; 1263 state->demod_type = TDA1004X_DEMOD_TDA10045;
1261 1264
1262 /* check if the demod is there */ 1265 /* check if the demod is there */
1263 if (tda1004x_read_byte(state, TDA1004X_CHIPID) != 0x25) { 1266 id = tda1004x_read_byte(state, TDA1004X_CHIPID);
1267 if (id < 0) {
1268 printk(KERN_ERR "tda10045: chip is not answering. Giving up.\n");
1269 kfree(state);
1270 return NULL;
1271 }
1272
1273 if (id != 0x25) {
1274 printk(KERN_ERR "Invalid tda1004x ID = 0x%02x. Can't proceed\n", id);
1264 kfree(state); 1275 kfree(state);
1265 return NULL; 1276 return NULL;
1266 } 1277 }
@@ -1307,11 +1318,14 @@ struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config,
1307 struct i2c_adapter* i2c) 1318 struct i2c_adapter* i2c)
1308{ 1319{
1309 struct tda1004x_state *state; 1320 struct tda1004x_state *state;
1321 int id;
1310 1322
1311 /* allocate memory for the internal state */ 1323 /* allocate memory for the internal state */
1312 state = kmalloc(sizeof(struct tda1004x_state), GFP_KERNEL); 1324 state = kmalloc(sizeof(struct tda1004x_state), GFP_KERNEL);
1313 if (!state) 1325 if (!state) {
1326 printk(KERN_ERR "Can't alocate memory for tda10046 state\n");
1314 return NULL; 1327 return NULL;
1328 }
1315 1329
1316 /* setup the state */ 1330 /* setup the state */
1317 state->config = config; 1331 state->config = config;
@@ -1319,7 +1333,14 @@ struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config,
1319 state->demod_type = TDA1004X_DEMOD_TDA10046; 1333 state->demod_type = TDA1004X_DEMOD_TDA10046;
1320 1334
1321 /* check if the demod is there */ 1335 /* check if the demod is there */
1322 if (tda1004x_read_byte(state, TDA1004X_CHIPID) != 0x46) { 1336 id = tda1004x_read_byte(state, TDA1004X_CHIPID);
1337 if (id < 0) {
1338 printk(KERN_ERR "tda10046: chip is not answering. Giving up.\n");
1339 kfree(state);
1340 return NULL;
1341 }
1342 if (id != 0x46) {
1343 printk(KERN_ERR "Invalid tda1004x ID = 0x%02x. Can't proceed\n", id);
1323 kfree(state); 1344 kfree(state);
1324 return NULL; 1345 return NULL;
1325 } 1346 }
diff --git a/drivers/media/dvb/ttpci/Kconfig b/drivers/media/dvb/ttpci/Kconfig
index d4339b1b3b68..07643e010093 100644
--- a/drivers/media/dvb/ttpci/Kconfig
+++ b/drivers/media/dvb/ttpci/Kconfig
@@ -101,6 +101,7 @@ config DVB_BUDGET
101config DVB_BUDGET_CI 101config DVB_BUDGET_CI
102 tristate "Budget cards with onboard CI connector" 102 tristate "Budget cards with onboard CI connector"
103 depends on DVB_BUDGET_CORE && I2C 103 depends on DVB_BUDGET_CORE && I2C
104 depends on INPUT # due to IR
104 select DVB_STV0297 if !DVB_FE_CUSTOMISE 105 select DVB_STV0297 if !DVB_FE_CUSTOMISE
105 select DVB_STV0299 if !DVB_FE_CUSTOMISE 106 select DVB_STV0299 if !DVB_FE_CUSTOMISE
106 select DVB_TDA1004X if !DVB_FE_CUSTOMISE 107 select DVB_TDA1004X if !DVB_FE_CUSTOMISE
diff --git a/drivers/media/dvb/ttpci/av7110_hw.c b/drivers/media/dvb/ttpci/av7110_hw.c
index 9d81074b31df..3a3f5279e927 100644
--- a/drivers/media/dvb/ttpci/av7110_hw.c
+++ b/drivers/media/dvb/ttpci/av7110_hw.c
@@ -427,6 +427,7 @@ static int __av7110_send_fw_cmd(struct av7110 *av7110, u16* buf, int length)
427 if (err) { 427 if (err) {
428 printk(KERN_ERR "%s: timeout waiting on busy %s QUEUE\n", 428 printk(KERN_ERR "%s: timeout waiting on busy %s QUEUE\n",
429 __func__, type); 429 __func__, type);
430 av7110->arm_errors++;
430 return -ETIMEDOUT; 431 return -ETIMEDOUT;
431 } 432 }
432 msleep(1); 433 msleep(1);
@@ -853,10 +854,8 @@ static osd_raw_window_t bpp2bit[8] = {
853 854
854static inline int WaitUntilBmpLoaded(struct av7110 *av7110) 855static inline int WaitUntilBmpLoaded(struct av7110 *av7110)
855{ 856{
856 int ret = wait_event_interruptible_timeout(av7110->bmpq, 857 int ret = wait_event_timeout(av7110->bmpq,
857 av7110->bmp_state != BMP_LOADING, 10*HZ); 858 av7110->bmp_state != BMP_LOADING, 10*HZ);
858 if (ret == -ERESTARTSYS)
859 return ret;
860 if (ret == 0) { 859 if (ret == 0) {
861 printk("dvb-ttpci: warning: timeout waiting in LoadBitmap: %d, %d\n", 860 printk("dvb-ttpci: warning: timeout waiting in LoadBitmap: %d, %d\n",
862 ret, av7110->bmp_state); 861 ret, av7110->bmp_state);
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
index 3b26fbd3e558..5ccb0aeca8cc 100644
--- a/drivers/media/video/Kconfig
+++ b/drivers/media/video/Kconfig
@@ -793,6 +793,14 @@ menuconfig V4L_USB_DRIVERS
793 793
794if V4L_USB_DRIVERS && USB 794if V4L_USB_DRIVERS && USB
795 795
796config USB_VIDEO_CLASS
797 tristate "USB Video Class (UVC)"
798 ---help---
799 Support for the USB Video Class (UVC). Currently only video
800 input devices, such as webcams, are supported.
801
802 For more information see: <http://linux-uvc.berlios.de/>
803
796source "drivers/media/video/pvrusb2/Kconfig" 804source "drivers/media/video/pvrusb2/Kconfig"
797 805
798source "drivers/media/video/em28xx/Kconfig" 806source "drivers/media/video/em28xx/Kconfig"
diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
index dff0d6abe917..ecbbfaab24d5 100644
--- a/drivers/media/video/Makefile
+++ b/drivers/media/video/Makefile
@@ -136,6 +136,8 @@ obj-$(CONFIG_SOC_CAMERA_MT9V022) += mt9v022.o
136 136
137obj-$(CONFIG_VIDEO_AU0828) += au0828/ 137obj-$(CONFIG_VIDEO_AU0828) += au0828/
138 138
139obj-$(CONFIG_USB_VIDEO_CLASS) += uvc/
140
139EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core 141EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
140EXTRA_CFLAGS += -Idrivers/media/dvb/frontends 142EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
141EXTRA_CFLAGS += -Idrivers/media/common/tuners 143EXTRA_CFLAGS += -Idrivers/media/common/tuners
diff --git a/drivers/media/video/au0828/au0828-cards.c b/drivers/media/video/au0828/au0828-cards.c
index a2a6983444fa..898e12395e7c 100644
--- a/drivers/media/video/au0828/au0828-cards.c
+++ b/drivers/media/video/au0828/au0828-cards.c
@@ -77,8 +77,14 @@ static void hauppauge_eeprom(struct au0828_dev *dev, u8 *eeprom_data)
77 77
78 /* Make sure we support the board model */ 78 /* Make sure we support the board model */
79 switch (tv.model) { 79 switch (tv.model) {
80 case 72000: /* WinTV-HVR950q (Retail, IR, ATSC/QAM */
80 case 72001: /* WinTV-HVR950q (Retail, IR, ATSC/QAM and basic analog video */ 81 case 72001: /* WinTV-HVR950q (Retail, IR, ATSC/QAM and basic analog video */
82 case 72211: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and basic analog video */
83 case 72221: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and basic analog video */
84 case 72231: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and basic analog video */
85 case 72241: /* WinTV-HVR950q (OEM, No IR, ATSC/QAM and basic analog video */
81 case 72301: /* WinTV-HVR850 (Retail, IR, ATSC and basic analog video */ 86 case 72301: /* WinTV-HVR850 (Retail, IR, ATSC and basic analog video */
87 case 72500: /* WinTV-HVR950q (OEM, No IR, ATSC/QAM */
82 break; 88 break;
83 default: 89 default:
84 printk(KERN_WARNING "%s: warning: " 90 printk(KERN_WARNING "%s: warning: "
@@ -175,6 +181,18 @@ struct usb_device_id au0828_usb_id_table [] = {
175 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR850 }, 181 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR850 },
176 { USB_DEVICE(0x0fe9, 0xd620), 182 { USB_DEVICE(0x0fe9, 0xd620),
177 .driver_info = AU0828_BOARD_DVICO_FUSIONHDTV7 }, 183 .driver_info = AU0828_BOARD_DVICO_FUSIONHDTV7 },
184 { USB_DEVICE(0x2040, 0x7210),
185 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
186 { USB_DEVICE(0x2040, 0x7217),
187 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
188 { USB_DEVICE(0x2040, 0x721b),
189 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
190 { USB_DEVICE(0x2040, 0x721f),
191 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
192 { USB_DEVICE(0x2040, 0x7280),
193 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
194 { USB_DEVICE(0x0fd9, 0x0008),
195 .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
178 { }, 196 { },
179}; 197};
180 198
diff --git a/drivers/media/video/cx18/Kconfig b/drivers/media/video/cx18/Kconfig
index 5f942690570c..9aefdc5ea79a 100644
--- a/drivers/media/video/cx18/Kconfig
+++ b/drivers/media/video/cx18/Kconfig
@@ -10,8 +10,8 @@ config VIDEO_CX18
10 select VIDEO_TVEEPROM 10 select VIDEO_TVEEPROM
11 select VIDEO_CX2341X 11 select VIDEO_CX2341X
12 select VIDEO_CS5345 12 select VIDEO_CS5345
13 select DVB_S5H1409 13 select DVB_S5H1409 if !DVB_FE_CUSTOMISE
14 select MEDIA_TUNER_MXL5005S 14 select MEDIA_TUNER_MXL5005S if !DVB_FE_CUSTOMISE
15 ---help--- 15 ---help---
16 This is a video4linux driver for Conexant cx23418 based 16 This is a video4linux driver for Conexant cx23418 based
17 PCI combo video recorder devices. 17 PCI combo video recorder devices.
diff --git a/drivers/media/video/cx18/cx18-av-core.c b/drivers/media/video/cx18/cx18-av-core.c
index 9a26751615c6..faca43eb940f 100644
--- a/drivers/media/video/cx18/cx18-av-core.c
+++ b/drivers/media/video/cx18/cx18-av-core.c
@@ -69,6 +69,58 @@ int cx18_av_and_or4(struct cx18 *cx, u16 addr, u32 and_mask,
69 or_value); 69 or_value);
70} 70}
71 71
72int cx18_av_write_no_acfg(struct cx18 *cx, u16 addr, u8 value, int no_acfg_mask)
73{
74 int retval;
75 u32 saved_reg[8] = {0};
76
77 if (no_acfg_mask & CXADEC_NO_ACFG_AFE) {
78 saved_reg[0] = cx18_av_read4(cx, CXADEC_CHIP_CTRL);
79 saved_reg[1] = cx18_av_read4(cx, CXADEC_AFE_CTRL);
80 }
81
82 if (no_acfg_mask & CXADEC_NO_ACFG_PLL) {
83 saved_reg[2] = cx18_av_read4(cx, CXADEC_PLL_CTRL1);
84 saved_reg[3] = cx18_av_read4(cx, CXADEC_VID_PLL_FRAC);
85 }
86
87 if (no_acfg_mask & CXADEC_NO_ACFG_VID) {
88 saved_reg[4] = cx18_av_read4(cx, CXADEC_HORIZ_TIM_CTRL);
89 saved_reg[5] = cx18_av_read4(cx, CXADEC_VERT_TIM_CTRL);
90 saved_reg[6] = cx18_av_read4(cx, CXADEC_SRC_COMB_CFG);
91 saved_reg[7] = cx18_av_read4(cx, CXADEC_CHROMA_VBIOFF_CFG);
92 }
93
94 retval = cx18_av_write(cx, addr, value);
95
96 if (no_acfg_mask & CXADEC_NO_ACFG_AFE) {
97 cx18_av_write4(cx, CXADEC_CHIP_CTRL, saved_reg[0]);
98 cx18_av_write4(cx, CXADEC_AFE_CTRL, saved_reg[1]);
99 }
100
101 if (no_acfg_mask & CXADEC_NO_ACFG_PLL) {
102 cx18_av_write4(cx, CXADEC_PLL_CTRL1, saved_reg[2]);
103 cx18_av_write4(cx, CXADEC_VID_PLL_FRAC, saved_reg[3]);
104 }
105
106 if (no_acfg_mask & CXADEC_NO_ACFG_VID) {
107 cx18_av_write4(cx, CXADEC_HORIZ_TIM_CTRL, saved_reg[4]);
108 cx18_av_write4(cx, CXADEC_VERT_TIM_CTRL, saved_reg[5]);
109 cx18_av_write4(cx, CXADEC_SRC_COMB_CFG, saved_reg[6]);
110 cx18_av_write4(cx, CXADEC_CHROMA_VBIOFF_CFG, saved_reg[7]);
111 }
112
113 return retval;
114}
115
116int cx18_av_and_or_no_acfg(struct cx18 *cx, u16 addr, unsigned and_mask,
117 u8 or_value, int no_acfg_mask)
118{
119 return cx18_av_write_no_acfg(cx, addr,
120 (cx18_av_read(cx, addr) & and_mask) |
121 or_value, no_acfg_mask);
122}
123
72/* ----------------------------------------------------------------------- */ 124/* ----------------------------------------------------------------------- */
73 125
74static int set_input(struct cx18 *cx, enum cx18_av_video_input vid_input, 126static int set_input(struct cx18 *cx, enum cx18_av_video_input vid_input,
@@ -170,13 +222,15 @@ static void input_change(struct cx18 *cx)
170 222
171 /* Follow step 8c and 8d of section 3.16 in the cx18_av datasheet */ 223 /* Follow step 8c and 8d of section 3.16 in the cx18_av datasheet */
172 if (std & V4L2_STD_SECAM) 224 if (std & V4L2_STD_SECAM)
173 cx18_av_write(cx, 0x402, 0); 225 cx18_av_write_no_acfg(cx, 0x402, 0, CXADEC_NO_ACFG_ALL);
174 else { 226 else {
175 cx18_av_write(cx, 0x402, 0x04); 227 cx18_av_write_no_acfg(cx, 0x402, 0x04, CXADEC_NO_ACFG_ALL);
176 cx18_av_write(cx, 0x49f, (std & V4L2_STD_NTSC) ? 0x14 : 0x11); 228 cx18_av_write(cx, 0x49f, (std & V4L2_STD_NTSC) ? 0x14 : 0x11);
177 } 229 }
178 cx18_av_and_or(cx, 0x401, ~0x60, 0); 230 cx18_av_and_or_no_acfg(cx, 0x401, ~0x60, 0,
179 cx18_av_and_or(cx, 0x401, ~0x60, 0x60); 231 CXADEC_NO_ACFG_PLL | CXADEC_NO_ACFG_VID);
232 cx18_av_and_or_no_acfg(cx, 0x401, ~0x60, 0x60,
233 CXADEC_NO_ACFG_PLL | CXADEC_NO_ACFG_VID);
180 234
181 if (std & V4L2_STD_525_60) { 235 if (std & V4L2_STD_525_60) {
182 if (std == V4L2_STD_NTSC_M_JP) { 236 if (std == V4L2_STD_NTSC_M_JP) {
@@ -228,7 +282,7 @@ static int set_input(struct cx18 *cx, enum cx18_av_video_input vid_input,
228 282
229 if ((vid_input & ~0xff0) || 283 if ((vid_input & ~0xff0) ||
230 luma < CX18_AV_SVIDEO_LUMA1 || 284 luma < CX18_AV_SVIDEO_LUMA1 ||
231 luma > CX18_AV_SVIDEO_LUMA4 || 285 luma > CX18_AV_SVIDEO_LUMA8 ||
232 chroma < CX18_AV_SVIDEO_CHROMA4 || 286 chroma < CX18_AV_SVIDEO_CHROMA4 ||
233 chroma > CX18_AV_SVIDEO_CHROMA8) { 287 chroma > CX18_AV_SVIDEO_CHROMA8) {
234 CX18_ERR("0x%04x is not a valid video input!\n", 288 CX18_ERR("0x%04x is not a valid video input!\n",
@@ -262,7 +316,8 @@ static int set_input(struct cx18 *cx, enum cx18_av_video_input vid_input,
262 316
263 cx18_av_write(cx, 0x103, reg); 317 cx18_av_write(cx, 0x103, reg);
264 /* Set INPUT_MODE to Composite (0) or S-Video (1) */ 318 /* Set INPUT_MODE to Composite (0) or S-Video (1) */
265 cx18_av_and_or(cx, 0x401, ~0x6, is_composite ? 0 : 0x02); 319 cx18_av_and_or_no_acfg(cx, 0x401, ~0x6, is_composite ? 0 : 0x02,
320 CXADEC_NO_ACFG_PLL | CXADEC_NO_ACFG_VID);
266 /* Set CH_SEL_ADC2 to 1 if input comes from CH3 */ 321 /* Set CH_SEL_ADC2 to 1 if input comes from CH3 */
267 cx18_av_and_or(cx, 0x102, ~0x2, (reg & 0x80) == 0 ? 2 : 0); 322 cx18_av_and_or(cx, 0x102, ~0x2, (reg & 0x80) == 0 ? 2 : 0);
268 /* Set DUAL_MODE_ADC2 to 1 if input comes from both CH2 and CH3 */ 323 /* Set DUAL_MODE_ADC2 to 1 if input comes from both CH2 and CH3 */
@@ -318,12 +373,12 @@ static int set_v4lstd(struct cx18 *cx)
318 This happens for example with the Yuan MPC622. */ 373 This happens for example with the Yuan MPC622. */
319 if (fmt >= 4 && fmt < 8) { 374 if (fmt >= 4 && fmt < 8) {
320 /* Set format to NTSC-M */ 375 /* Set format to NTSC-M */
321 cx18_av_and_or(cx, 0x400, ~0xf, 1); 376 cx18_av_and_or_no_acfg(cx, 0x400, ~0xf, 1, CXADEC_NO_ACFG_AFE);
322 /* Turn off LCOMB */ 377 /* Turn off LCOMB */
323 cx18_av_and_or(cx, 0x47b, ~6, 0); 378 cx18_av_and_or(cx, 0x47b, ~6, 0);
324 } 379 }
325 cx18_av_and_or(cx, 0x400, ~0xf, fmt); 380 cx18_av_and_or_no_acfg(cx, 0x400, ~0xf, fmt, CXADEC_NO_ACFG_AFE);
326 cx18_av_and_or(cx, 0x403, ~0x3, pal_m); 381 cx18_av_and_or_no_acfg(cx, 0x403, ~0x3, pal_m, CXADEC_NO_ACFG_ALL);
327 cx18_av_vbi_setup(cx); 382 cx18_av_vbi_setup(cx);
328 input_change(cx); 383 input_change(cx);
329 return 0; 384 return 0;
diff --git a/drivers/media/video/cx18/cx18-av-core.h b/drivers/media/video/cx18/cx18-av-core.h
index 786901d72e9a..c172823ce1d8 100644
--- a/drivers/media/video/cx18/cx18-av-core.h
+++ b/drivers/media/video/cx18/cx18-av-core.h
@@ -37,12 +37,16 @@ enum cx18_av_video_input {
37 CX18_AV_COMPOSITE7, 37 CX18_AV_COMPOSITE7,
38 CX18_AV_COMPOSITE8, 38 CX18_AV_COMPOSITE8,
39 39
40 /* S-Video inputs consist of one luma input (In1-In4) ORed with one 40 /* S-Video inputs consist of one luma input (In1-In8) ORed with one
41 chroma input (In5-In8) */ 41 chroma input (In5-In8) */
42 CX18_AV_SVIDEO_LUMA1 = 0x10, 42 CX18_AV_SVIDEO_LUMA1 = 0x10,
43 CX18_AV_SVIDEO_LUMA2 = 0x20, 43 CX18_AV_SVIDEO_LUMA2 = 0x20,
44 CX18_AV_SVIDEO_LUMA3 = 0x30, 44 CX18_AV_SVIDEO_LUMA3 = 0x30,
45 CX18_AV_SVIDEO_LUMA4 = 0x40, 45 CX18_AV_SVIDEO_LUMA4 = 0x40,
46 CX18_AV_SVIDEO_LUMA5 = 0x50,
47 CX18_AV_SVIDEO_LUMA6 = 0x60,
48 CX18_AV_SVIDEO_LUMA7 = 0x70,
49 CX18_AV_SVIDEO_LUMA8 = 0x80,
46 CX18_AV_SVIDEO_CHROMA4 = 0x400, 50 CX18_AV_SVIDEO_CHROMA4 = 0x400,
47 CX18_AV_SVIDEO_CHROMA5 = 0x500, 51 CX18_AV_SVIDEO_CHROMA5 = 0x500,
48 CX18_AV_SVIDEO_CHROMA6 = 0x600, 52 CX18_AV_SVIDEO_CHROMA6 = 0x600,
@@ -291,14 +295,24 @@ struct cx18_av_state {
291#define CXADEC_SELECT_AUDIO_STANDARD_FM 0xF9 /* FM radio */ 295#define CXADEC_SELECT_AUDIO_STANDARD_FM 0xF9 /* FM radio */
292#define CXADEC_SELECT_AUDIO_STANDARD_AUTO 0xFF /* Auto detect */ 296#define CXADEC_SELECT_AUDIO_STANDARD_AUTO 0xFF /* Auto detect */
293 297
298/* Flags on what to preserve on write to 0x400-0x403 with cx18_av_.*_no_acfg()*/
299#define CXADEC_NO_ACFG_AFE 0x01 /* Preserve 0x100-0x107 */
300#define CXADEC_NO_ACFG_PLL 0x02 /* Preserve 0x108-0x10f */
301#define CXADEC_NO_ACFG_VID 0x04 /* Preserve 0x470-0x47f */
302#define CXADEC_NO_ACFG_ALL 0x07
303
294/* ----------------------------------------------------------------------- */ 304/* ----------------------------------------------------------------------- */
295/* cx18_av-core.c */ 305/* cx18_av-core.c */
296int cx18_av_write(struct cx18 *cx, u16 addr, u8 value); 306int cx18_av_write(struct cx18 *cx, u16 addr, u8 value);
297int cx18_av_write4(struct cx18 *cx, u16 addr, u32 value); 307int cx18_av_write4(struct cx18 *cx, u16 addr, u32 value);
308int cx18_av_write_no_acfg(struct cx18 *cx, u16 addr, u8 value,
309 int no_acfg_mask);
298u8 cx18_av_read(struct cx18 *cx, u16 addr); 310u8 cx18_av_read(struct cx18 *cx, u16 addr);
299u32 cx18_av_read4(struct cx18 *cx, u16 addr); 311u32 cx18_av_read4(struct cx18 *cx, u16 addr);
300int cx18_av_and_or(struct cx18 *cx, u16 addr, unsigned mask, u8 value); 312int cx18_av_and_or(struct cx18 *cx, u16 addr, unsigned mask, u8 value);
301int cx18_av_and_or4(struct cx18 *cx, u16 addr, u32 mask, u32 value); 313int cx18_av_and_or4(struct cx18 *cx, u16 addr, u32 mask, u32 value);
314int cx18_av_and_or_no_acfg(struct cx18 *cx, u16 addr, unsigned mask, u8 value,
315 int no_acfg_mask);
302int cx18_av_cmd(struct cx18 *cx, unsigned int cmd, void *arg); 316int cx18_av_cmd(struct cx18 *cx, unsigned int cmd, void *arg);
303 317
304/* ----------------------------------------------------------------------- */ 318/* ----------------------------------------------------------------------- */
diff --git a/drivers/media/video/cx18/cx18-cards.c b/drivers/media/video/cx18/cx18-cards.c
index baccd079243d..c26e0ef5b075 100644
--- a/drivers/media/video/cx18/cx18-cards.c
+++ b/drivers/media/video/cx18/cx18-cards.c
@@ -23,6 +23,7 @@
23 23
24#include "cx18-driver.h" 24#include "cx18-driver.h"
25#include "cx18-cards.h" 25#include "cx18-cards.h"
26#include "cx18-av-core.h"
26#include "cx18-i2c.h" 27#include "cx18-i2c.h"
27#include <media/cs5345.h> 28#include <media/cs5345.h>
28 29
@@ -54,22 +55,22 @@ static const struct cx18_card cx18_card_hvr1600_esmt = {
54 .hw_all = CX18_HW_TVEEPROM | CX18_HW_TUNER | 55 .hw_all = CX18_HW_TVEEPROM | CX18_HW_TUNER |
55 CX18_HW_CS5345 | CX18_HW_DVB, 56 CX18_HW_CS5345 | CX18_HW_DVB,
56 .video_inputs = { 57 .video_inputs = {
57 { CX18_CARD_INPUT_VID_TUNER, 0, CX23418_COMPOSITE7 }, 58 { CX18_CARD_INPUT_VID_TUNER, 0, CX18_AV_COMPOSITE7 },
58 { CX18_CARD_INPUT_SVIDEO1, 1, CX23418_SVIDEO1 }, 59 { CX18_CARD_INPUT_SVIDEO1, 1, CX18_AV_SVIDEO1 },
59 { CX18_CARD_INPUT_COMPOSITE1, 1, CX23418_COMPOSITE3 }, 60 { CX18_CARD_INPUT_COMPOSITE1, 1, CX18_AV_COMPOSITE3 },
60 { CX18_CARD_INPUT_SVIDEO2, 2, CX23418_SVIDEO2 }, 61 { CX18_CARD_INPUT_SVIDEO2, 2, CX18_AV_SVIDEO2 },
61 { CX18_CARD_INPUT_COMPOSITE2, 2, CX23418_COMPOSITE4 }, 62 { CX18_CARD_INPUT_COMPOSITE2, 2, CX18_AV_COMPOSITE4 },
62 }, 63 },
63 .audio_inputs = { 64 .audio_inputs = {
64 { CX18_CARD_INPUT_AUD_TUNER, 65 { CX18_CARD_INPUT_AUD_TUNER,
65 CX23418_AUDIO8, CS5345_IN_1 | CS5345_MCLK_1_5 }, 66 CX18_AV_AUDIO8, CS5345_IN_1 | CS5345_MCLK_1_5 },
66 { CX18_CARD_INPUT_LINE_IN1, 67 { CX18_CARD_INPUT_LINE_IN1,
67 CX23418_AUDIO_SERIAL, CS5345_IN_2 }, 68 CX18_AV_AUDIO_SERIAL, CS5345_IN_2 },
68 { CX18_CARD_INPUT_LINE_IN2, 69 { CX18_CARD_INPUT_LINE_IN2,
69 CX23418_AUDIO_SERIAL, CS5345_IN_2 }, 70 CX18_AV_AUDIO_SERIAL, CS5345_IN_3 },
70 }, 71 },
71 .radio_input = { CX18_CARD_INPUT_AUD_TUNER, 72 .radio_input = { CX18_CARD_INPUT_AUD_TUNER,
72 CX23418_AUDIO_SERIAL, 0 }, 73 CX18_AV_AUDIO_SERIAL, CS5345_IN_4 },
73 .ddr = { 74 .ddr = {
74 /* ESMT M13S128324A-5B memory */ 75 /* ESMT M13S128324A-5B memory */
75 .chip_config = 0x003, 76 .chip_config = 0x003,
@@ -81,6 +82,11 @@ static const struct cx18_card cx18_card_hvr1600_esmt = {
81 }, 82 },
82 .gpio_init.initial_value = 0x3001, 83 .gpio_init.initial_value = 0x3001,
83 .gpio_init.direction = 0x3001, 84 .gpio_init.direction = 0x3001,
85 .gpio_i2c_slave_reset = {
86 .active_lo_mask = 0x3001,
87 .msecs_asserted = 10,
88 .msecs_recovery = 40,
89 },
84 .i2c = &cx18_i2c_std, 90 .i2c = &cx18_i2c_std,
85}; 91};
86 92
@@ -94,22 +100,22 @@ static const struct cx18_card cx18_card_hvr1600_samsung = {
94 .hw_all = CX18_HW_TVEEPROM | CX18_HW_TUNER | 100 .hw_all = CX18_HW_TVEEPROM | CX18_HW_TUNER |
95 CX18_HW_CS5345 | CX18_HW_DVB, 101 CX18_HW_CS5345 | CX18_HW_DVB,
96 .video_inputs = { 102 .video_inputs = {
97 { CX18_CARD_INPUT_VID_TUNER, 0, CX23418_COMPOSITE7 }, 103 { CX18_CARD_INPUT_VID_TUNER, 0, CX18_AV_COMPOSITE7 },
98 { CX18_CARD_INPUT_SVIDEO1, 1, CX23418_SVIDEO1 }, 104 { CX18_CARD_INPUT_SVIDEO1, 1, CX18_AV_SVIDEO1 },
99 { CX18_CARD_INPUT_COMPOSITE1, 1, CX23418_COMPOSITE3 }, 105 { CX18_CARD_INPUT_COMPOSITE1, 1, CX18_AV_COMPOSITE3 },
100 { CX18_CARD_INPUT_SVIDEO2, 2, CX23418_SVIDEO2 }, 106 { CX18_CARD_INPUT_SVIDEO2, 2, CX18_AV_SVIDEO2 },
101 { CX18_CARD_INPUT_COMPOSITE2, 2, CX23418_COMPOSITE4 }, 107 { CX18_CARD_INPUT_COMPOSITE2, 2, CX18_AV_COMPOSITE4 },
102 }, 108 },
103 .audio_inputs = { 109 .audio_inputs = {
104 { CX18_CARD_INPUT_AUD_TUNER, 110 { CX18_CARD_INPUT_AUD_TUNER,
105 CX23418_AUDIO8, CS5345_IN_1 | CS5345_MCLK_1_5 }, 111 CX18_AV_AUDIO8, CS5345_IN_1 | CS5345_MCLK_1_5 },
106 { CX18_CARD_INPUT_LINE_IN1, 112 { CX18_CARD_INPUT_LINE_IN1,
107 CX23418_AUDIO_SERIAL, CS5345_IN_2 }, 113 CX18_AV_AUDIO_SERIAL, CS5345_IN_2 },
108 { CX18_CARD_INPUT_LINE_IN2, 114 { CX18_CARD_INPUT_LINE_IN2,
109 CX23418_AUDIO_SERIAL, CS5345_IN_2 }, 115 CX18_AV_AUDIO_SERIAL, CS5345_IN_3 },
110 }, 116 },
111 .radio_input = { CX18_CARD_INPUT_AUD_TUNER, 117 .radio_input = { CX18_CARD_INPUT_AUD_TUNER,
112 CX23418_AUDIO_SERIAL, 0 }, 118 CX18_AV_AUDIO_SERIAL, CS5345_IN_4 },
113 .ddr = { 119 .ddr = {
114 /* Samsung K4D263238G-VC33 memory */ 120 /* Samsung K4D263238G-VC33 memory */
115 .chip_config = 0x003, 121 .chip_config = 0x003,
@@ -121,6 +127,11 @@ static const struct cx18_card cx18_card_hvr1600_samsung = {
121 }, 127 },
122 .gpio_init.initial_value = 0x3001, 128 .gpio_init.initial_value = 0x3001,
123 .gpio_init.direction = 0x3001, 129 .gpio_init.direction = 0x3001,
130 .gpio_i2c_slave_reset = {
131 .active_lo_mask = 0x3001,
132 .msecs_asserted = 10,
133 .msecs_recovery = 40,
134 },
124 .i2c = &cx18_i2c_std, 135 .i2c = &cx18_i2c_std,
125}; 136};
126 137
@@ -141,19 +152,19 @@ static const struct cx18_card cx18_card_h900 = {
141 .hw_audio_ctrl = CX18_HW_CX23418, 152 .hw_audio_ctrl = CX18_HW_CX23418,
142 .hw_all = CX18_HW_TUNER, 153 .hw_all = CX18_HW_TUNER,
143 .video_inputs = { 154 .video_inputs = {
144 { CX18_CARD_INPUT_VID_TUNER, 0, CX23418_COMPOSITE2 }, 155 { CX18_CARD_INPUT_VID_TUNER, 0, CX18_AV_COMPOSITE2 },
145 { CX18_CARD_INPUT_SVIDEO1, 1, 156 { CX18_CARD_INPUT_SVIDEO1, 1,
146 CX23418_SVIDEO_LUMA3 | CX23418_SVIDEO_CHROMA4 }, 157 CX18_AV_SVIDEO_LUMA3 | CX18_AV_SVIDEO_CHROMA4 },
147 { CX18_CARD_INPUT_COMPOSITE1, 1, CX23418_COMPOSITE1 }, 158 { CX18_CARD_INPUT_COMPOSITE1, 1, CX18_AV_COMPOSITE1 },
148 }, 159 },
149 .audio_inputs = { 160 .audio_inputs = {
150 { CX18_CARD_INPUT_AUD_TUNER, 161 { CX18_CARD_INPUT_AUD_TUNER,
151 CX23418_AUDIO8, 0 }, 162 CX18_AV_AUDIO8, 0 },
152 { CX18_CARD_INPUT_LINE_IN1, 163 { CX18_CARD_INPUT_LINE_IN1,
153 CX23418_AUDIO_SERIAL, 0 }, 164 CX18_AV_AUDIO_SERIAL, 0 },
154 }, 165 },
155 .radio_input = { CX18_CARD_INPUT_AUD_TUNER, 166 .radio_input = { CX18_CARD_INPUT_AUD_TUNER,
156 CX23418_AUDIO_SERIAL, 0 }, 167 CX18_AV_AUDIO_SERIAL, 0 },
157 .tuners = { 168 .tuners = {
158 { .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 }, 169 { .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 },
159 }, 170 },
@@ -183,23 +194,26 @@ static const struct cx18_card_pci_info cx18_pci_mpc718[] = {
183static const struct cx18_card cx18_card_mpc718 = { 194static const struct cx18_card cx18_card_mpc718 = {
184 .type = CX18_CARD_YUAN_MPC718, 195 .type = CX18_CARD_YUAN_MPC718,
185 .name = "Yuan MPC718", 196 .name = "Yuan MPC718",
186 .comment = "Not yet supported!\n", 197 .comment = "Some Composite and S-Video inputs are currently working.\n",
187 .v4l2_capabilities = 0, 198 .v4l2_capabilities = CX18_CAP_ENCODER,
188 .hw_audio_ctrl = CX18_HW_CX23418, 199 .hw_audio_ctrl = CX18_HW_CX23418,
189 .hw_all = CX18_HW_TUNER, 200 .hw_all = CX18_HW_TUNER,
190 .video_inputs = { 201 .video_inputs = {
191 { CX18_CARD_INPUT_VID_TUNER, 0, CX23418_COMPOSITE7 }, 202 { CX18_CARD_INPUT_VID_TUNER, 0, CX18_AV_COMPOSITE2 },
192 { CX18_CARD_INPUT_SVIDEO1, 1, CX23418_SVIDEO1 }, 203 { CX18_CARD_INPUT_SVIDEO1, 1,
193 { CX18_CARD_INPUT_COMPOSITE1, 1, CX23418_COMPOSITE3 }, 204 CX18_AV_SVIDEO_LUMA3 | CX18_AV_SVIDEO_CHROMA4 },
205 { CX18_CARD_INPUT_COMPOSITE1, 1, CX18_AV_COMPOSITE1 },
206 { CX18_CARD_INPUT_SVIDEO2, 2,
207 CX18_AV_SVIDEO_LUMA7 | CX18_AV_SVIDEO_CHROMA8 },
208 { CX18_CARD_INPUT_COMPOSITE2, 2, CX18_AV_COMPOSITE6 },
209 { CX18_CARD_INPUT_COMPOSITE3, 2, CX18_AV_COMPOSITE3 },
194 }, 210 },
195 .audio_inputs = { 211 .audio_inputs = {
196 { CX18_CARD_INPUT_AUD_TUNER, 212 { CX18_CARD_INPUT_AUD_TUNER, CX18_AV_AUDIO5, 0 },
197 CX23418_AUDIO8, 0 }, 213 { CX18_CARD_INPUT_LINE_IN1, CX18_AV_AUDIO_SERIAL, 0 },
198 { CX18_CARD_INPUT_LINE_IN1, 214 { CX18_CARD_INPUT_LINE_IN2, CX18_AV_AUDIO_SERIAL, 0 },
199 CX23418_AUDIO_SERIAL, 0 },
200 }, 215 },
201 .radio_input = { CX18_CARD_INPUT_AUD_TUNER, 216 .radio_input = { CX18_CARD_INPUT_AUD_TUNER, CX18_AV_AUDIO_SERIAL, 0 },
202 CX23418_AUDIO_SERIAL, 0 },
203 .tuners = { 217 .tuners = {
204 /* XC3028 tuner */ 218 /* XC3028 tuner */
205 { .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 }, 219 { .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 },
diff --git a/drivers/media/video/cx18/cx18-cards.h b/drivers/media/video/cx18/cx18-cards.h
index bccb67f0db16..dc2dd945d4c3 100644
--- a/drivers/media/video/cx18/cx18-cards.h
+++ b/drivers/media/video/cx18/cx18-cards.h
@@ -36,36 +36,6 @@
36#define CX18_CARD_INPUT_COMPOSITE2 5 36#define CX18_CARD_INPUT_COMPOSITE2 5
37#define CX18_CARD_INPUT_COMPOSITE3 6 37#define CX18_CARD_INPUT_COMPOSITE3 6
38 38
39enum cx34180_video_input {
40 /* Composite video inputs In1-In8 */
41 CX23418_COMPOSITE1 = 1,
42 CX23418_COMPOSITE2,
43 CX23418_COMPOSITE3,
44 CX23418_COMPOSITE4,
45 CX23418_COMPOSITE5,
46 CX23418_COMPOSITE6,
47 CX23418_COMPOSITE7,
48 CX23418_COMPOSITE8,
49
50 /* S-Video inputs consist of one luma input (In1-In4) ORed with one
51 chroma input (In5-In8) */
52 CX23418_SVIDEO_LUMA1 = 0x10,
53 CX23418_SVIDEO_LUMA2 = 0x20,
54 CX23418_SVIDEO_LUMA3 = 0x30,
55 CX23418_SVIDEO_LUMA4 = 0x40,
56 CX23418_SVIDEO_CHROMA4 = 0x400,
57 CX23418_SVIDEO_CHROMA5 = 0x500,
58 CX23418_SVIDEO_CHROMA6 = 0x600,
59 CX23418_SVIDEO_CHROMA7 = 0x700,
60 CX23418_SVIDEO_CHROMA8 = 0x800,
61
62 /* S-Video aliases for common luma/chroma combinations */
63 CX23418_SVIDEO1 = 0x510,
64 CX23418_SVIDEO2 = 0x620,
65 CX23418_SVIDEO3 = 0x730,
66 CX23418_SVIDEO4 = 0x840,
67};
68
69/* audio inputs */ 39/* audio inputs */
70#define CX18_CARD_INPUT_AUD_TUNER 1 40#define CX18_CARD_INPUT_AUD_TUNER 1
71#define CX18_CARD_INPUT_LINE_IN1 2 41#define CX18_CARD_INPUT_LINE_IN1 2
@@ -75,16 +45,6 @@ enum cx34180_video_input {
75#define CX18_CARD_MAX_AUDIO_INPUTS 3 45#define CX18_CARD_MAX_AUDIO_INPUTS 3
76#define CX18_CARD_MAX_TUNERS 2 46#define CX18_CARD_MAX_TUNERS 2
77 47
78enum cx23418_audio_input {
79 /* Audio inputs: serial or In4-In8 */
80 CX23418_AUDIO_SERIAL,
81 CX23418_AUDIO4 = 4,
82 CX23418_AUDIO5,
83 CX23418_AUDIO6,
84 CX23418_AUDIO7,
85 CX23418_AUDIO8,
86};
87
88/* V4L2 capability aliases */ 48/* V4L2 capability aliases */
89#define CX18_CAP_ENCODER (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER | \ 49#define CX18_CAP_ENCODER (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER | \
90 V4L2_CAP_AUDIO | V4L2_CAP_READWRITE) 50 V4L2_CAP_AUDIO | V4L2_CAP_READWRITE)
@@ -118,6 +78,13 @@ struct cx18_gpio_init { /* set initial GPIO DIR and OUT values */
118 u32 initial_value; 78 u32 initial_value;
119}; 79};
120 80
81struct cx18_gpio_i2c_slave_reset {
82 u32 active_lo_mask; /* GPIO outputs that reset i2c chips when low */
83 u32 active_hi_mask; /* GPIO outputs that reset i2c chips when high */
84 int msecs_asserted; /* time period reset must remain asserted */
85 int msecs_recovery; /* time after deassert for chips to be ready */
86};
87
121struct cx18_card_tuner { 88struct cx18_card_tuner {
122 v4l2_std_id std; /* standard for which the tuner is suitable */ 89 v4l2_std_id std; /* standard for which the tuner is suitable */
123 int tuner; /* tuner ID (from tuner.h) */ 90 int tuner; /* tuner ID (from tuner.h) */
@@ -154,7 +121,8 @@ struct cx18_card {
154 121
155 /* GPIO card-specific settings */ 122 /* GPIO card-specific settings */
156 u8 xceive_pin; /* XCeive tuner GPIO reset pin */ 123 u8 xceive_pin; /* XCeive tuner GPIO reset pin */
157 struct cx18_gpio_init gpio_init; 124 struct cx18_gpio_init gpio_init;
125 struct cx18_gpio_i2c_slave_reset gpio_i2c_slave_reset;
158 126
159 struct cx18_card_tuner tuners[CX18_CARD_MAX_TUNERS]; 127 struct cx18_card_tuner tuners[CX18_CARD_MAX_TUNERS];
160 struct cx18_card_tuner_i2c *i2c; 128 struct cx18_card_tuner_i2c *i2c;
diff --git a/drivers/media/video/cx18/cx18-dvb.c b/drivers/media/video/cx18/cx18-dvb.c
index c9744173f969..cae38985b131 100644
--- a/drivers/media/video/cx18/cx18-dvb.c
+++ b/drivers/media/video/cx18/cx18-dvb.c
@@ -69,11 +69,21 @@ static int cx18_dvb_start_feed(struct dvb_demux_feed *feed)
69 struct dvb_demux *demux = feed->demux; 69 struct dvb_demux *demux = feed->demux;
70 struct cx18_stream *stream = (struct cx18_stream *) demux->priv; 70 struct cx18_stream *stream = (struct cx18_stream *) demux->priv;
71 struct cx18 *cx = stream->cx; 71 struct cx18 *cx = stream->cx;
72 int ret = -EINVAL; 72 int ret;
73 u32 v; 73 u32 v;
74 74
75 CX18_DEBUG_INFO("Start feed: pid = 0x%x index = %d\n", 75 CX18_DEBUG_INFO("Start feed: pid = 0x%x index = %d\n",
76 feed->pid, feed->index); 76 feed->pid, feed->index);
77
78 mutex_lock(&cx->serialize_lock);
79 ret = cx18_init_on_first_open(cx);
80 mutex_unlock(&cx->serialize_lock);
81 if (ret) {
82 CX18_ERR("Failed to initialize firmware starting DVB feed\n");
83 return ret;
84 }
85 ret = -EINVAL;
86
77 switch (cx->card->type) { 87 switch (cx->card->type) {
78 case CX18_CARD_HVR_1600_ESMT: 88 case CX18_CARD_HVR_1600_ESMT:
79 case CX18_CARD_HVR_1600_SAMSUNG: 89 case CX18_CARD_HVR_1600_SAMSUNG:
@@ -101,6 +111,11 @@ static int cx18_dvb_start_feed(struct dvb_demux_feed *feed)
101 if (stream->dvb.feeding++ == 0) { 111 if (stream->dvb.feeding++ == 0) {
102 CX18_DEBUG_INFO("Starting Transport DMA\n"); 112 CX18_DEBUG_INFO("Starting Transport DMA\n");
103 ret = cx18_start_v4l2_encode_stream(stream); 113 ret = cx18_start_v4l2_encode_stream(stream);
114 if (ret < 0) {
115 CX18_DEBUG_INFO(
116 "Failed to start Transport DMA\n");
117 stream->dvb.feeding--;
118 }
104 } else 119 } else
105 ret = 0; 120 ret = 0;
106 mutex_unlock(&stream->dvb.feedlock); 121 mutex_unlock(&stream->dvb.feedlock);
diff --git a/drivers/media/video/cx18/cx18-gpio.c b/drivers/media/video/cx18/cx18-gpio.c
index ceb63653c926..b302833f6f9d 100644
--- a/drivers/media/video/cx18/cx18-gpio.c
+++ b/drivers/media/video/cx18/cx18-gpio.c
@@ -53,10 +53,34 @@ static void gpio_write(struct cx18 *cx)
53 write_reg(((dir & 0xffff) << 16) | (val & 0xffff), 53 write_reg(((dir & 0xffff) << 16) | (val & 0xffff),
54 CX18_REG_GPIO_OUT1); 54 CX18_REG_GPIO_OUT1);
55 write_reg(dir & 0xffff0000, CX18_REG_GPIO_DIR2); 55 write_reg(dir & 0xffff0000, CX18_REG_GPIO_DIR2);
56 write_reg((dir & 0xffff0000) | ((val & 0xffff0000) >> 16), 56 write_reg_sync((dir & 0xffff0000) | ((val & 0xffff0000) >> 16),
57 CX18_REG_GPIO_OUT2); 57 CX18_REG_GPIO_OUT2);
58} 58}
59 59
60void cx18_reset_i2c_slaves_gpio(struct cx18 *cx)
61{
62 const struct cx18_gpio_i2c_slave_reset *p;
63
64 p = &cx->card->gpio_i2c_slave_reset;
65
66 if ((p->active_lo_mask | p->active_hi_mask) == 0)
67 return;
68
69 /* Assuming that the masks are a subset of the bits in gpio_dir */
70
71 /* Assert */
72 cx->gpio_val =
73 (cx->gpio_val | p->active_hi_mask) & ~(p->active_lo_mask);
74 gpio_write(cx);
75 schedule_timeout_uninterruptible(msecs_to_jiffies(p->msecs_asserted));
76
77 /* Deassert */
78 cx->gpio_val =
79 (cx->gpio_val | p->active_lo_mask) & ~(p->active_hi_mask);
80 gpio_write(cx);
81 schedule_timeout_uninterruptible(msecs_to_jiffies(p->msecs_recovery));
82}
83
60void cx18_gpio_init(struct cx18 *cx) 84void cx18_gpio_init(struct cx18 *cx)
61{ 85{
62 cx->gpio_dir = cx->card->gpio_init.direction; 86 cx->gpio_dir = cx->card->gpio_init.direction;
diff --git a/drivers/media/video/cx18/cx18-gpio.h b/drivers/media/video/cx18/cx18-gpio.h
index 41bac8856b50..525c328f748a 100644
--- a/drivers/media/video/cx18/cx18-gpio.h
+++ b/drivers/media/video/cx18/cx18-gpio.h
@@ -21,4 +21,5 @@
21 */ 21 */
22 22
23void cx18_gpio_init(struct cx18 *cx); 23void cx18_gpio_init(struct cx18 *cx);
24void cx18_reset_i2c_slaves_gpio(struct cx18 *cx);
24int cx18_reset_tuner_gpio(void *dev, int cmd, int value); 25int cx18_reset_tuner_gpio(void *dev, int cmd, int value);
diff --git a/drivers/media/video/cx18/cx18-i2c.c b/drivers/media/video/cx18/cx18-i2c.c
index 1d6c51a75313..680bc4e35b79 100644
--- a/drivers/media/video/cx18/cx18-i2c.c
+++ b/drivers/media/video/cx18/cx18-i2c.c
@@ -405,6 +405,8 @@ int init_cx18_i2c(struct cx18 *cx)
405 cx18_setscl(&cx->i2c_algo_cb_data[1], 1); 405 cx18_setscl(&cx->i2c_algo_cb_data[1], 1);
406 cx18_setsda(&cx->i2c_algo_cb_data[1], 1); 406 cx18_setsda(&cx->i2c_algo_cb_data[1], 1);
407 407
408 cx18_reset_i2c_slaves_gpio(cx);
409
408 return i2c_bit_add_bus(&cx->i2c_adap[0]) || 410 return i2c_bit_add_bus(&cx->i2c_adap[0]) ||
409 i2c_bit_add_bus(&cx->i2c_adap[1]); 411 i2c_bit_add_bus(&cx->i2c_adap[1]);
410} 412}
diff --git a/drivers/media/video/cx25840/cx25840-core.c b/drivers/media/video/cx25840/cx25840-core.c
index 607efdcd22f8..1da6f134888d 100644
--- a/drivers/media/video/cx25840/cx25840-core.c
+++ b/drivers/media/video/cx25840/cx25840-core.c
@@ -433,7 +433,7 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
433 int chroma = vid_input & 0xf00; 433 int chroma = vid_input & 0xf00;
434 434
435 if ((vid_input & ~0xff0) || 435 if ((vid_input & ~0xff0) ||
436 luma < CX25840_SVIDEO_LUMA1 || luma > CX25840_SVIDEO_LUMA4 || 436 luma < CX25840_SVIDEO_LUMA1 || luma > CX25840_SVIDEO_LUMA8 ||
437 chroma < CX25840_SVIDEO_CHROMA4 || chroma > CX25840_SVIDEO_CHROMA8) { 437 chroma < CX25840_SVIDEO_CHROMA4 || chroma > CX25840_SVIDEO_CHROMA8) {
438 v4l_err(client, "0x%04x is not a valid video input!\n", 438 v4l_err(client, "0x%04x is not a valid video input!\n",
439 vid_input); 439 vid_input);
diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c
index e976fc6bef7c..80c8883e54b5 100644
--- a/drivers/media/video/cx88/cx88-alsa.c
+++ b/drivers/media/video/cx88/cx88-alsa.c
@@ -332,6 +332,12 @@ static int snd_cx88_pcm_open(struct snd_pcm_substream *substream)
332 struct snd_pcm_runtime *runtime = substream->runtime; 332 struct snd_pcm_runtime *runtime = substream->runtime;
333 int err; 333 int err;
334 334
335 if (!chip) {
336 printk(KERN_ERR "BUG: cx88 can't find device struct."
337 " Can't proceed with open\n");
338 return -ENODEV;
339 }
340
335 err = snd_pcm_hw_constraint_pow2(runtime, 0, SNDRV_PCM_HW_PARAM_PERIODS); 341 err = snd_pcm_hw_constraint_pow2(runtime, 0, SNDRV_PCM_HW_PARAM_PERIODS);
336 if (err < 0) 342 if (err < 0)
337 goto _error; 343 goto _error;
diff --git a/drivers/media/video/em28xx/em28xx-audio.c b/drivers/media/video/em28xx/em28xx-audio.c
index 92b2a6db4fdc..3c006103c1eb 100644
--- a/drivers/media/video/em28xx/em28xx-audio.c
+++ b/drivers/media/video/em28xx/em28xx-audio.c
@@ -268,6 +268,12 @@ static int snd_em28xx_capture_open(struct snd_pcm_substream *substream)
268 268
269 dprintk("opening device and trying to acquire exclusive lock\n"); 269 dprintk("opening device and trying to acquire exclusive lock\n");
270 270
271 if (!dev) {
272 printk(KERN_ERR "BUG: em28xx can't find device struct."
273 " Can't proceed with open\n");
274 return -ENODEV;
275 }
276
271 /* Sets volume, mute, etc */ 277 /* Sets volume, mute, etc */
272 278
273 dev->mute = 0; 279 dev->mute = 0;
@@ -415,6 +421,12 @@ static int em28xx_audio_init(struct em28xx *dev)
415 static int devnr; 421 static int devnr;
416 int ret, err; 422 int ret, err;
417 423
424 if (dev->has_audio_class) {
425 /* This device does not support the extension (in this case
426 the device is expecting the snd-usb-audio module */
427 return 0;
428 }
429
418 printk(KERN_INFO "em28xx-audio.c: probing for em28x1 " 430 printk(KERN_INFO "em28xx-audio.c: probing for em28x1 "
419 "non standard usbaudio\n"); 431 "non standard usbaudio\n");
420 printk(KERN_INFO "em28xx-audio.c: Copyright (C) 2006 Markus " 432 printk(KERN_INFO "em28xx-audio.c: Copyright (C) 2006 Markus "
@@ -458,6 +470,12 @@ static int em28xx_audio_fini(struct em28xx *dev)
458 if (dev == NULL) 470 if (dev == NULL)
459 return 0; 471 return 0;
460 472
473 if (dev->has_audio_class) {
474 /* This device does not support the extension (in this case
475 the device is expecting the snd-usb-audio module */
476 return 0;
477 }
478
461 if (dev->adev) { 479 if (dev->adev) {
462 snd_card_free(dev->adev->sndcard); 480 snd_card_free(dev->adev->sndcard);
463 kfree(dev->adev); 481 kfree(dev->adev);
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
index 3e4f3c7e92e7..8cbda43727c3 100644
--- a/drivers/media/video/em28xx/em28xx-cards.c
+++ b/drivers/media/video/em28xx/em28xx-cards.c
@@ -157,6 +157,7 @@ struct em28xx_board em28xx_boards[] = {
157 .tda9887_conf = TDA9887_PRESENT, 157 .tda9887_conf = TDA9887_PRESENT,
158 .tuner_type = TUNER_XC2028, 158 .tuner_type = TUNER_XC2028,
159 .mts_firmware = 1, 159 .mts_firmware = 1,
160 .has_dvb = 1,
160 .decoder = EM28XX_TVP5150, 161 .decoder = EM28XX_TVP5150,
161 .input = { { 162 .input = { {
162 .type = EM28XX_VMUX_TELEVISION, 163 .type = EM28XX_VMUX_TELEVISION,
@@ -524,6 +525,9 @@ void em28xx_pre_card_setup(struct em28xx *dev)
524 rc = em28xx_read_reg(dev, EM28XX_R0A_CHIPID); 525 rc = em28xx_read_reg(dev, EM28XX_R0A_CHIPID);
525 if (rc > 0) { 526 if (rc > 0) {
526 switch (rc) { 527 switch (rc) {
528 case CHIP_ID_EM2860:
529 em28xx_info("chip ID is em2860\n");
530 break;
527 case CHIP_ID_EM2883: 531 case CHIP_ID_EM2883:
528 em28xx_info("chip ID is em2882/em2883\n"); 532 em28xx_info("chip ID is em2882/em2883\n");
529 dev->wait_after_write = 0; 533 dev->wait_after_write = 0;
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c
index 8cf4983f0039..0b2333ee07f8 100644
--- a/drivers/media/video/em28xx/em28xx-dvb.c
+++ b/drivers/media/video/em28xx/em28xx-dvb.c
@@ -382,6 +382,11 @@ static int dvb_init(struct em28xx *dev)
382 int result = 0; 382 int result = 0;
383 struct em28xx_dvb *dvb; 383 struct em28xx_dvb *dvb;
384 384
385 if (!dev->has_dvb) {
386 /* This device does not support the extension */
387 return 0;
388 }
389
385 dvb = kzalloc(sizeof(struct em28xx_dvb), GFP_KERNEL); 390 dvb = kzalloc(sizeof(struct em28xx_dvb), GFP_KERNEL);
386 391
387 if (dvb == NULL) { 392 if (dvb == NULL) {
@@ -444,6 +449,11 @@ out_free:
444 449
445static int dvb_fini(struct em28xx *dev) 450static int dvb_fini(struct em28xx *dev)
446{ 451{
452 if (!dev->has_dvb) {
453 /* This device does not support the extension */
454 return 0;
455 }
456
447 if (dev->dvb) { 457 if (dev->dvb) {
448 unregister_dvb(dev->dvb); 458 unregister_dvb(dev->dvb);
449 dev->dvb = NULL; 459 dev->dvb = NULL;
diff --git a/drivers/media/video/em28xx/em28xx-reg.h b/drivers/media/video/em28xx/em28xx-reg.h
index 9058bed07953..fac1ab23f621 100644
--- a/drivers/media/video/em28xx/em28xx-reg.h
+++ b/drivers/media/video/em28xx/em28xx-reg.h
@@ -84,5 +84,6 @@
84 84
85/* FIXME: Need to be populated with the other chip ID's */ 85/* FIXME: Need to be populated with the other chip ID's */
86enum em28xx_chip_id { 86enum em28xx_chip_id {
87 CHIP_ID_EM2860 = 34,
87 CHIP_ID_EM2883 = 36, 88 CHIP_ID_EM2883 = 36,
88}; 89};
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index fb163ecd9216..285bc62bbe46 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -1848,32 +1848,28 @@ static DEFINE_MUTEX(em28xx_extension_devlist_lock);
1848 1848
1849int em28xx_register_extension(struct em28xx_ops *ops) 1849int em28xx_register_extension(struct em28xx_ops *ops)
1850{ 1850{
1851 struct em28xx *h, *dev = NULL; 1851 struct em28xx *dev = NULL;
1852
1853 list_for_each_entry(h, &em28xx_devlist, devlist)
1854 dev = h;
1855 1852
1856 mutex_lock(&em28xx_extension_devlist_lock); 1853 mutex_lock(&em28xx_extension_devlist_lock);
1857 list_add_tail(&ops->next, &em28xx_extension_devlist); 1854 list_add_tail(&ops->next, &em28xx_extension_devlist);
1858 if (dev) 1855 list_for_each_entry(dev, &em28xx_devlist, devlist) {
1859 ops->init(dev); 1856 if (dev)
1860 1857 ops->init(dev);
1858 }
1861 printk(KERN_INFO "Em28xx: Initialized (%s) extension\n", ops->name); 1859 printk(KERN_INFO "Em28xx: Initialized (%s) extension\n", ops->name);
1862 mutex_unlock(&em28xx_extension_devlist_lock); 1860 mutex_unlock(&em28xx_extension_devlist_lock);
1863
1864 return 0; 1861 return 0;
1865} 1862}
1866EXPORT_SYMBOL(em28xx_register_extension); 1863EXPORT_SYMBOL(em28xx_register_extension);
1867 1864
1868void em28xx_unregister_extension(struct em28xx_ops *ops) 1865void em28xx_unregister_extension(struct em28xx_ops *ops)
1869{ 1866{
1870 struct em28xx *h, *dev = NULL; 1867 struct em28xx *dev = NULL;
1871
1872 list_for_each_entry(h, &em28xx_devlist, devlist)
1873 dev = h;
1874 1868
1875 if (dev) 1869 list_for_each_entry(dev, &em28xx_devlist, devlist) {
1876 ops->fini(dev); 1870 if (dev)
1871 ops->fini(dev);
1872 }
1877 1873
1878 mutex_lock(&em28xx_extension_devlist_lock); 1874 mutex_lock(&em28xx_extension_devlist_lock);
1879 printk(KERN_INFO "Em28xx: Removed (%s) extension\n", ops->name); 1875 printk(KERN_INFO "Em28xx: Removed (%s) extension\n", ops->name);
diff --git a/drivers/media/video/pxa_camera.c b/drivers/media/video/pxa_camera.c
index 7cc8e9b19fb7..5ec5bb9a94d2 100644
--- a/drivers/media/video/pxa_camera.c
+++ b/drivers/media/video/pxa_camera.c
@@ -1019,12 +1019,12 @@ static int pxa_camera_probe(struct platform_device *pdev)
1019 struct pxa_camera_dev *pcdev; 1019 struct pxa_camera_dev *pcdev;
1020 struct resource *res; 1020 struct resource *res;
1021 void __iomem *base; 1021 void __iomem *base;
1022 unsigned int irq; 1022 int irq;
1023 int err = 0; 1023 int err = 0;
1024 1024
1025 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1025 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1026 irq = platform_get_irq(pdev, 0); 1026 irq = platform_get_irq(pdev, 0);
1027 if (!res || !irq) { 1027 if (!res || irq < 0) {
1028 err = -ENODEV; 1028 err = -ENODEV;
1029 goto exit; 1029 goto exit;
1030 } 1030 }
diff --git a/drivers/media/video/saa7134/saa7134-alsa.c b/drivers/media/video/saa7134/saa7134-alsa.c
index ba3082422a01..f118de6e3672 100644
--- a/drivers/media/video/saa7134/saa7134-alsa.c
+++ b/drivers/media/video/saa7134/saa7134-alsa.c
@@ -613,9 +613,15 @@ static int snd_card_saa7134_capture_open(struct snd_pcm_substream * substream)
613 struct snd_pcm_runtime *runtime = substream->runtime; 613 struct snd_pcm_runtime *runtime = substream->runtime;
614 snd_card_saa7134_pcm_t *pcm; 614 snd_card_saa7134_pcm_t *pcm;
615 snd_card_saa7134_t *saa7134 = snd_pcm_substream_chip(substream); 615 snd_card_saa7134_t *saa7134 = snd_pcm_substream_chip(substream);
616 struct saa7134_dev *dev = saa7134->dev; 616 struct saa7134_dev *dev;
617 int amux, err; 617 int amux, err;
618 618
619 if (!saa7134) {
620 printk(KERN_ERR "BUG: saa7134 can't find device struct."
621 " Can't proceed with open\n");
622 return -ENODEV;
623 }
624 dev = saa7134->dev;
619 mutex_lock(&dev->dmasound.lock); 625 mutex_lock(&dev->dmasound.lock);
620 626
621 dev->dmasound.read_count = 0; 627 dev->dmasound.read_count = 0;
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index b111903aa322..2618cfa592e7 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -4114,11 +4114,7 @@ struct saa7134_board saa7134_boards[] = {
4114 .radio_type = UNSET, 4114 .radio_type = UNSET,
4115 .tuner_addr = ADDR_UNSET, 4115 .tuner_addr = ADDR_UNSET,
4116 .radio_addr = ADDR_UNSET, 4116 .radio_addr = ADDR_UNSET,
4117 /*
4118 TODO:
4119 .mpeg = SAA7134_MPEG_DVB, 4117 .mpeg = SAA7134_MPEG_DVB,
4120 */
4121
4122 .inputs = {{ 4118 .inputs = {{
4123 .name = name_tv, 4119 .name = name_tv,
4124 .vmux = 1, 4120 .vmux = 1,
@@ -4157,7 +4153,7 @@ struct saa7134_board saa7134_boards[] = {
4157 } }, 4153 } },
4158 .radio = { 4154 .radio = {
4159 .name = name_radio, 4155 .name = name_radio,
4160 .amux = LINE1, 4156 .amux = TV,
4161 }, 4157 },
4162 }, 4158 },
4163 [SAA7134_BOARD_AVERMEDIA_M115] = { 4159 [SAA7134_BOARD_AVERMEDIA_M115] = {
@@ -4167,6 +4163,7 @@ struct saa7134_board saa7134_boards[] = {
4167 .radio_type = UNSET, 4163 .radio_type = UNSET,
4168 .tuner_addr = ADDR_UNSET, 4164 .tuner_addr = ADDR_UNSET,
4169 .radio_addr = ADDR_UNSET, 4165 .radio_addr = ADDR_UNSET,
4166 .mpeg = SAA7134_MPEG_DVB,
4170 .inputs = {{ 4167 .inputs = {{
4171 .name = name_tv, 4168 .name = name_tv,
4172 .vmux = 1, 4169 .vmux = 1,
@@ -5351,22 +5348,21 @@ static int saa7134_xc2028_callback(struct saa7134_dev *dev,
5351{ 5348{
5352 switch (command) { 5349 switch (command) {
5353 case XC2028_TUNER_RESET: 5350 case XC2028_TUNER_RESET:
5354 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0x06e20000); 5351 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00000000);
5355 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0x06a20000); 5352 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
5356 mdelay(250); 5353 switch (dev->board) {
5357 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0); 5354 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
5358 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0); 5355 saa7134_set_gpio(dev, 23, 0);
5359 mdelay(250); 5356 msleep(10);
5360 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0x06e20000); 5357 saa7134_set_gpio(dev, 23, 1);
5361 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0x06a20000); 5358 break;
5362 mdelay(250); 5359 case SAA7134_BOARD_AVERMEDIA_A16D:
5363 saa_andorl(SAA7133_ANALOG_IO_SELECT >> 2, 0x02, 0x02); 5360 saa7134_set_gpio(dev, 21, 0);
5364 saa_andorl(SAA7134_ANALOG_IN_CTRL1 >> 2, 0x81, 0x81); 5361 msleep(10);
5365 saa_andorl(SAA7134_AUDIO_CLOCK0 >> 2, 0x03187de7, 0x03187de7); 5362 saa7134_set_gpio(dev, 21, 1);
5366 saa_andorl(SAA7134_AUDIO_PLL_CTRL >> 2, 0x03, 0x03); 5363 break;
5367 saa_andorl(SAA7134_AUDIO_CLOCKS_PER_FIELD0 >> 2, 5364 }
5368 0x0001e000, 0x0001e000); 5365 return 0;
5369 return 0;
5370 } 5366 }
5371 return -EINVAL; 5367 return -EINVAL;
5372} 5368}
@@ -5553,9 +5549,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
5553 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000); 5549 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000);
5554 break; 5550 break;
5555 case SAA7134_BOARD_AVERMEDIA_CARDBUS: 5551 case SAA7134_BOARD_AVERMEDIA_CARDBUS:
5556 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
5557 case SAA7134_BOARD_AVERMEDIA_M115: 5552 case SAA7134_BOARD_AVERMEDIA_M115:
5558 case SAA7134_BOARD_AVERMEDIA_A16D:
5559 /* power-down tuner chip */ 5553 /* power-down tuner chip */
5560 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0); 5554 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0);
5561 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0); 5555 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0);
@@ -5565,6 +5559,18 @@ int saa7134_board_init1(struct saa7134_dev *dev)
5565 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff); 5559 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
5566 msleep(10); 5560 msleep(10);
5567 break; 5561 break;
5562 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
5563 saa7134_set_gpio(dev, 23, 0);
5564 msleep(10);
5565 saa7134_set_gpio(dev, 23, 1);
5566 break;
5567 case SAA7134_BOARD_AVERMEDIA_A16D:
5568 saa7134_set_gpio(dev, 21, 0);
5569 msleep(10);
5570 saa7134_set_gpio(dev, 21, 1);
5571 msleep(1);
5572 dev->has_remote = SAA7134_REMOTE_GPIO;
5573 break;
5568 case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: 5574 case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
5569 /* power-down tuner chip */ 5575 /* power-down tuner chip */
5570 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004); 5576 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004);
@@ -5615,7 +5621,8 @@ int saa7134_board_init1(struct saa7134_dev *dev)
5615 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x80040100, 0x80040100); 5621 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x80040100, 0x80040100);
5616 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x80040100, 0x00040100); 5622 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x80040100, 0x00040100);
5617 printk("%s: %s: hybrid analog/dvb card\n" 5623 printk("%s: %s: hybrid analog/dvb card\n"
5618 "%s: Sorry, only the analog inputs are supported for now.\n", 5624 "%s: Sorry, only analog s-video and composite input "
5625 "are supported for now.\n",
5619 dev->name, card(dev).name, dev->name); 5626 dev->name, card(dev).name, dev->name);
5620 break; 5627 break;
5621 } 5628 }
@@ -5675,6 +5682,7 @@ static void saa7134_tuner_setup(struct saa7134_dev *dev)
5675 5682
5676 switch (dev->board) { 5683 switch (dev->board) {
5677 case SAA7134_BOARD_AVERMEDIA_A16D: 5684 case SAA7134_BOARD_AVERMEDIA_A16D:
5685 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
5678 ctl.demod = XC3028_FE_ZARLINK456; 5686 ctl.demod = XC3028_FE_ZARLINK456;
5679 break; 5687 break;
5680 default: 5688 default:
diff --git a/drivers/media/video/saa7134/saa7134-dvb.c b/drivers/media/video/saa7134/saa7134-dvb.c
index 469f93aac008..341b101b0357 100644
--- a/drivers/media/video/saa7134/saa7134-dvb.c
+++ b/drivers/media/video/saa7134/saa7134-dvb.c
@@ -153,12 +153,12 @@ static int mt352_aver777_init(struct dvb_frontend* fe)
153 return 0; 153 return 0;
154} 154}
155 155
156static int mt352_aver_a16d_init(struct dvb_frontend *fe) 156static int mt352_avermedia_xc3028_init(struct dvb_frontend *fe)
157{ 157{
158 static u8 clock_config [] = { CLOCK_CTL, 0x38, 0x2d }; 158 static u8 clock_config [] = { CLOCK_CTL, 0x38, 0x2d };
159 static u8 reset [] = { RESET, 0x80 }; 159 static u8 reset [] = { RESET, 0x80 };
160 static u8 adc_ctl_1_cfg [] = { ADC_CTL_1, 0x40 }; 160 static u8 adc_ctl_1_cfg [] = { ADC_CTL_1, 0x40 };
161 static u8 agc_cfg [] = { AGC_TARGET, 0x28, 0xa0 }; 161 static u8 agc_cfg [] = { AGC_TARGET, 0xe };
162 static u8 capt_range_cfg[] = { CAPT_RANGE, 0x33 }; 162 static u8 capt_range_cfg[] = { CAPT_RANGE, 0x33 };
163 163
164 mt352_write(fe, clock_config, sizeof(clock_config)); 164 mt352_write(fe, clock_config, sizeof(clock_config));
@@ -167,12 +167,9 @@ static int mt352_aver_a16d_init(struct dvb_frontend *fe)
167 mt352_write(fe, adc_ctl_1_cfg, sizeof(adc_ctl_1_cfg)); 167 mt352_write(fe, adc_ctl_1_cfg, sizeof(adc_ctl_1_cfg));
168 mt352_write(fe, agc_cfg, sizeof(agc_cfg)); 168 mt352_write(fe, agc_cfg, sizeof(agc_cfg));
169 mt352_write(fe, capt_range_cfg, sizeof(capt_range_cfg)); 169 mt352_write(fe, capt_range_cfg, sizeof(capt_range_cfg));
170
171 return 0; 170 return 0;
172} 171}
173 172
174
175
176static int mt352_pinnacle_tuner_set_params(struct dvb_frontend* fe, 173static int mt352_pinnacle_tuner_set_params(struct dvb_frontend* fe,
177 struct dvb_frontend_parameters* params) 174 struct dvb_frontend_parameters* params)
178{ 175{
@@ -215,14 +212,10 @@ static struct mt352_config avermedia_777 = {
215 .demod_init = mt352_aver777_init, 212 .demod_init = mt352_aver777_init,
216}; 213};
217 214
218static struct mt352_config avermedia_16d = { 215static struct mt352_config avermedia_xc3028_mt352_dev = {
219 .demod_address = 0xf,
220 .demod_init = mt352_aver_a16d_init,
221};
222
223static struct mt352_config avermedia_e506r_mt352_dev = {
224 .demod_address = (0x1e >> 1), 216 .demod_address = (0x1e >> 1),
225 .no_tuner = 1, 217 .no_tuner = 1,
218 .demod_init = mt352_avermedia_xc3028_init,
226}; 219};
227 220
228/* ================================================================== 221/* ==================================================================
@@ -975,9 +968,10 @@ static int dvb_init(struct saa7134_dev *dev)
975 } 968 }
976 break; 969 break;
977 case SAA7134_BOARD_AVERMEDIA_A16D: 970 case SAA7134_BOARD_AVERMEDIA_A16D:
978 dprintk("avertv A16D dvb setup\n"); 971 dprintk("AverMedia A16D dvb setup\n");
979 dev->dvb.frontend = dvb_attach(mt352_attach, &avermedia_16d, 972 dev->dvb.frontend = dvb_attach(mt352_attach,
980 &dev->i2c_adap); 973 &avermedia_xc3028_mt352_dev,
974 &dev->i2c_adap);
981 attach_xc3028 = 1; 975 attach_xc3028 = 1;
982 break; 976 break;
983 case SAA7134_BOARD_MD7134: 977 case SAA7134_BOARD_MD7134:
@@ -1091,7 +1085,8 @@ static int dvb_init(struct saa7134_dev *dev)
1091 ads_tech_duo_config.tuner_address); 1085 ads_tech_duo_config.tuner_address);
1092 goto dettach_frontend; 1086 goto dettach_frontend;
1093 } 1087 }
1094 } 1088 } else
1089 wprintk("failed to attach tda10046\n");
1095 break; 1090 break;
1096 case SAA7134_BOARD_TEVION_DVBT_220RF: 1091 case SAA7134_BOARD_TEVION_DVBT_220RF:
1097 if (configure_tda827x_fe(dev, &tevion_dvbt220rf_config, 1092 if (configure_tda827x_fe(dev, &tevion_dvbt220rf_config,
@@ -1260,11 +1255,14 @@ static int dvb_init(struct saa7134_dev *dev)
1260 goto dettach_frontend; 1255 goto dettach_frontend;
1261 break; 1256 break;
1262 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506: 1257 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
1258 dprintk("AverMedia E506R dvb setup\n");
1259 saa7134_set_gpio(dev, 25, 0);
1260 msleep(10);
1261 saa7134_set_gpio(dev, 25, 1);
1263 dev->dvb.frontend = dvb_attach(mt352_attach, 1262 dev->dvb.frontend = dvb_attach(mt352_attach,
1264 &avermedia_e506r_mt352_dev, 1263 &avermedia_xc3028_mt352_dev,
1265 &dev->i2c_adap); 1264 &dev->i2c_adap);
1266 attach_xc3028 = 1; 1265 attach_xc3028 = 1;
1267 break;
1268 case SAA7134_BOARD_MD7134_BRIDGE_2: 1266 case SAA7134_BOARD_MD7134_BRIDGE_2:
1269 dev->dvb.frontend = dvb_attach(tda10086_attach, 1267 dev->dvb.frontend = dvb_attach(tda10086_attach,
1270 &sd1878_4m, &dev->i2c_adap); 1268 &sd1878_4m, &dev->i2c_adap);
@@ -1338,7 +1336,8 @@ static int dvb_init(struct saa7134_dev *dev)
1338 return ret; 1336 return ret;
1339 1337
1340dettach_frontend: 1338dettach_frontend:
1341 dvb_frontend_detach(dev->dvb.frontend); 1339 if (dev->dvb.frontend)
1340 dvb_frontend_detach(dev->dvb.frontend);
1342 dev->dvb.frontend = NULL; 1341 dev->dvb.frontend = NULL;
1343 1342
1344 return -1; 1343 return -1;
diff --git a/drivers/media/video/saa7134/saa7134-empress.c b/drivers/media/video/saa7134/saa7134-empress.c
index 81431ee41842..3ae71a340822 100644
--- a/drivers/media/video/saa7134/saa7134-empress.c
+++ b/drivers/media/video/saa7134/saa7134-empress.c
@@ -110,9 +110,10 @@ static int ts_release(struct inode *inode, struct file *file)
110{ 110{
111 struct saa7134_dev *dev = file->private_data; 111 struct saa7134_dev *dev = file->private_data;
112 112
113 mutex_lock(&dev->empress_tsq.vb_lock);
114
113 videobuf_stop(&dev->empress_tsq); 115 videobuf_stop(&dev->empress_tsq);
114 videobuf_mmap_free(&dev->empress_tsq); 116 videobuf_mmap_free(&dev->empress_tsq);
115 dev->empress_users--;
116 117
117 /* stop the encoder */ 118 /* stop the encoder */
118 ts_reset_encoder(dev); 119 ts_reset_encoder(dev);
@@ -121,6 +122,10 @@ static int ts_release(struct inode *inode, struct file *file)
121 saa_writeb(SAA7134_AUDIO_MUTE_CTRL, 122 saa_writeb(SAA7134_AUDIO_MUTE_CTRL,
122 saa_readb(SAA7134_AUDIO_MUTE_CTRL) | (1 << 6)); 123 saa_readb(SAA7134_AUDIO_MUTE_CTRL) | (1 << 6));
123 124
125 dev->empress_users--;
126
127 mutex_unlock(&dev->empress_tsq.vb_lock);
128
124 return 0; 129 return 0;
125} 130}
126 131
@@ -218,8 +223,7 @@ static int empress_enum_fmt_cap(struct file *file, void *priv,
218static int empress_g_fmt_cap(struct file *file, void *priv, 223static int empress_g_fmt_cap(struct file *file, void *priv,
219 struct v4l2_format *f) 224 struct v4l2_format *f)
220{ 225{
221 struct saa7134_fh *fh = priv; 226 struct saa7134_dev *dev = file->private_data;
222 struct saa7134_dev *dev = fh->dev;
223 227
224 saa7134_i2c_call_clients(dev, VIDIOC_G_FMT, f); 228 saa7134_i2c_call_clients(dev, VIDIOC_G_FMT, f);
225 229
@@ -232,8 +236,7 @@ static int empress_g_fmt_cap(struct file *file, void *priv,
232static int empress_s_fmt_cap(struct file *file, void *priv, 236static int empress_s_fmt_cap(struct file *file, void *priv,
233 struct v4l2_format *f) 237 struct v4l2_format *f)
234{ 238{
235 struct saa7134_fh *fh = priv; 239 struct saa7134_dev *dev = file->private_data;
236 struct saa7134_dev *dev = fh->dev;
237 240
238 saa7134_i2c_call_clients(dev, VIDIOC_S_FMT, f); 241 saa7134_i2c_call_clients(dev, VIDIOC_S_FMT, f);
239 242
@@ -247,8 +250,7 @@ static int empress_s_fmt_cap(struct file *file, void *priv,
247static int empress_reqbufs(struct file *file, void *priv, 250static int empress_reqbufs(struct file *file, void *priv,
248 struct v4l2_requestbuffers *p) 251 struct v4l2_requestbuffers *p)
249{ 252{
250 struct saa7134_fh *fh = priv; 253 struct saa7134_dev *dev = file->private_data;
251 struct saa7134_dev *dev = fh->dev;
252 254
253 return videobuf_reqbufs(&dev->empress_tsq, p); 255 return videobuf_reqbufs(&dev->empress_tsq, p);
254} 256}
@@ -256,24 +258,21 @@ static int empress_reqbufs(struct file *file, void *priv,
256static int empress_querybuf(struct file *file, void *priv, 258static int empress_querybuf(struct file *file, void *priv,
257 struct v4l2_buffer *b) 259 struct v4l2_buffer *b)
258{ 260{
259 struct saa7134_fh *fh = priv; 261 struct saa7134_dev *dev = file->private_data;
260 struct saa7134_dev *dev = fh->dev;
261 262
262 return videobuf_querybuf(&dev->empress_tsq, b); 263 return videobuf_querybuf(&dev->empress_tsq, b);
263} 264}
264 265
265static int empress_qbuf(struct file *file, void *priv, struct v4l2_buffer *b) 266static int empress_qbuf(struct file *file, void *priv, struct v4l2_buffer *b)
266{ 267{
267 struct saa7134_fh *fh = priv; 268 struct saa7134_dev *dev = file->private_data;
268 struct saa7134_dev *dev = fh->dev;
269 269
270 return videobuf_qbuf(&dev->empress_tsq, b); 270 return videobuf_qbuf(&dev->empress_tsq, b);
271} 271}
272 272
273static int empress_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b) 273static int empress_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b)
274{ 274{
275 struct saa7134_fh *fh = priv; 275 struct saa7134_dev *dev = file->private_data;
276 struct saa7134_dev *dev = fh->dev;
277 276
278 return videobuf_dqbuf(&dev->empress_tsq, b, 277 return videobuf_dqbuf(&dev->empress_tsq, b,
279 file->f_flags & O_NONBLOCK); 278 file->f_flags & O_NONBLOCK);
@@ -282,8 +281,7 @@ static int empress_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b)
282static int empress_streamon(struct file *file, void *priv, 281static int empress_streamon(struct file *file, void *priv,
283 enum v4l2_buf_type type) 282 enum v4l2_buf_type type)
284{ 283{
285 struct saa7134_fh *fh = priv; 284 struct saa7134_dev *dev = file->private_data;
286 struct saa7134_dev *dev = fh->dev;
287 285
288 return videobuf_streamon(&dev->empress_tsq); 286 return videobuf_streamon(&dev->empress_tsq);
289} 287}
@@ -291,8 +289,7 @@ static int empress_streamon(struct file *file, void *priv,
291static int empress_streamoff(struct file *file, void *priv, 289static int empress_streamoff(struct file *file, void *priv,
292 enum v4l2_buf_type type) 290 enum v4l2_buf_type type)
293{ 291{
294 struct saa7134_fh *fh = priv; 292 struct saa7134_dev *dev = file->private_data;
295 struct saa7134_dev *dev = fh->dev;
296 293
297 return videobuf_streamoff(&dev->empress_tsq); 294 return videobuf_streamoff(&dev->empress_tsq);
298} 295}
@@ -300,8 +297,7 @@ static int empress_streamoff(struct file *file, void *priv,
300static int empress_s_ext_ctrls(struct file *file, void *priv, 297static int empress_s_ext_ctrls(struct file *file, void *priv,
301 struct v4l2_ext_controls *ctrls) 298 struct v4l2_ext_controls *ctrls)
302{ 299{
303 struct saa7134_fh *fh = priv; 300 struct saa7134_dev *dev = file->private_data;
304 struct saa7134_dev *dev = fh->dev;
305 301
306 /* count == 0 is abused in saa6752hs.c, so that special 302 /* count == 0 is abused in saa6752hs.c, so that special
307 case is handled here explicitly. */ 303 case is handled here explicitly. */
@@ -320,8 +316,7 @@ static int empress_s_ext_ctrls(struct file *file, void *priv,
320static int empress_g_ext_ctrls(struct file *file, void *priv, 316static int empress_g_ext_ctrls(struct file *file, void *priv,
321 struct v4l2_ext_controls *ctrls) 317 struct v4l2_ext_controls *ctrls)
322{ 318{
323 struct saa7134_fh *fh = priv; 319 struct saa7134_dev *dev = file->private_data;
324 struct saa7134_dev *dev = fh->dev;
325 320
326 if (ctrls->ctrl_class != V4L2_CTRL_CLASS_MPEG) 321 if (ctrls->ctrl_class != V4L2_CTRL_CLASS_MPEG)
327 return -EINVAL; 322 return -EINVAL;
diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c
index 919632b10aae..76e6501d238d 100644
--- a/drivers/media/video/saa7134/saa7134-input.c
+++ b/drivers/media/video/saa7134/saa7134-input.c
@@ -323,6 +323,15 @@ int saa7134_input_init1(struct saa7134_dev *dev)
323 saa_setb(SAA7134_GPIO_GPMODE1, 0x1); 323 saa_setb(SAA7134_GPIO_GPMODE1, 0x1);
324 saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1); 324 saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1);
325 break; 325 break;
326 case SAA7134_BOARD_AVERMEDIA_A16D:
327 ir_codes = ir_codes_avermedia_a16d;
328 mask_keycode = 0x02F200;
329 mask_keydown = 0x000400;
330 polling = 50; /* ms */
331 /* Without this we won't receive key up events */
332 saa_setb(SAA7134_GPIO_GPMODE1, 0x1);
333 saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1);
334 break;
326 case SAA7134_BOARD_KWORLD_TERMINATOR: 335 case SAA7134_BOARD_KWORLD_TERMINATOR:
327 ir_codes = ir_codes_pixelview; 336 ir_codes = ir_codes_pixelview;
328 mask_keycode = 0x00001f; 337 mask_keycode = 0x00001f;
diff --git a/drivers/media/video/soc_camera.c b/drivers/media/video/soc_camera.c
index a1b92446c8b4..d015bfe00950 100644
--- a/drivers/media/video/soc_camera.c
+++ b/drivers/media/video/soc_camera.c
@@ -763,15 +763,6 @@ static struct device_driver ic_drv = {
763 .owner = THIS_MODULE, 763 .owner = THIS_MODULE,
764}; 764};
765 765
766/*
767 * Image capture host - this is a host device, not a bus device, so,
768 * no bus reference, no probing.
769 */
770static struct class soc_camera_host_class = {
771 .owner = THIS_MODULE,
772 .name = "camera_host",
773};
774
775static void dummy_release(struct device *dev) 766static void dummy_release(struct device *dev)
776{ 767{
777} 768}
@@ -801,7 +792,6 @@ int soc_camera_host_register(struct soc_camera_host *ici)
801 792
802 /* Number might be equal to the platform device ID */ 793 /* Number might be equal to the platform device ID */
803 sprintf(ici->dev.bus_id, "camera_host%d", ici->nr); 794 sprintf(ici->dev.bus_id, "camera_host%d", ici->nr);
804 ici->dev.class = &soc_camera_host_class;
805 795
806 mutex_lock(&list_lock); 796 mutex_lock(&list_lock);
807 list_for_each_entry(ix, &hosts, list) { 797 list_for_each_entry(ix, &hosts, list) {
@@ -1003,14 +993,9 @@ static int __init soc_camera_init(void)
1003 ret = driver_register(&ic_drv); 993 ret = driver_register(&ic_drv);
1004 if (ret) 994 if (ret)
1005 goto edrvr; 995 goto edrvr;
1006 ret = class_register(&soc_camera_host_class);
1007 if (ret)
1008 goto eclr;
1009 996
1010 return 0; 997 return 0;
1011 998
1012eclr:
1013 driver_unregister(&ic_drv);
1014edrvr: 999edrvr:
1015 bus_unregister(&soc_camera_bus_type); 1000 bus_unregister(&soc_camera_bus_type);
1016 return ret; 1001 return ret;
@@ -1018,7 +1003,6 @@ edrvr:
1018 1003
1019static void __exit soc_camera_exit(void) 1004static void __exit soc_camera_exit(void)
1020{ 1005{
1021 class_unregister(&soc_camera_host_class);
1022 driver_unregister(&ic_drv); 1006 driver_unregister(&ic_drv);
1023 bus_unregister(&soc_camera_bus_type); 1007 bus_unregister(&soc_camera_bus_type);
1024} 1008}
diff --git a/drivers/media/video/uvc/Makefile b/drivers/media/video/uvc/Makefile
new file mode 100644
index 000000000000..968c1994eda0
--- /dev/null
+++ b/drivers/media/video/uvc/Makefile
@@ -0,0 +1,3 @@
1uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \
2 uvc_status.o uvc_isight.o
3obj-$(CONFIG_USB_VIDEO_CLASS) += uvcvideo.o
diff --git a/drivers/media/video/uvc/uvc_ctrl.c b/drivers/media/video/uvc/uvc_ctrl.c
new file mode 100644
index 000000000000..f0ee46d15540
--- /dev/null
+++ b/drivers/media/video/uvc/uvc_ctrl.c
@@ -0,0 +1,1256 @@
1/*
2 * uvc_ctrl.c -- USB Video Class driver - Controls
3 *
4 * Copyright (C) 2005-2008
5 * Laurent Pinchart (laurent.pinchart@skynet.be)
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/version.h>
16#include <linux/list.h>
17#include <linux/module.h>
18#include <linux/uaccess.h>
19#include <linux/usb.h>
20#include <linux/videodev2.h>
21#include <linux/vmalloc.h>
22#include <linux/wait.h>
23#include <asm/atomic.h>
24
25#include "uvcvideo.h"
26
27#define UVC_CTRL_NDATA 2
28#define UVC_CTRL_DATA_CURRENT 0
29#define UVC_CTRL_DATA_BACKUP 1
30
31/* ------------------------------------------------------------------------
32 * Control, formats, ...
33 */
34
35static struct uvc_control_info uvc_ctrls[] = {
36 {
37 .entity = UVC_GUID_UVC_PROCESSING,
38 .selector = PU_BRIGHTNESS_CONTROL,
39 .index = 0,
40 .size = 2,
41 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
42 | UVC_CONTROL_RESTORE,
43 },
44 {
45 .entity = UVC_GUID_UVC_PROCESSING,
46 .selector = PU_CONTRAST_CONTROL,
47 .index = 1,
48 .size = 2,
49 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
50 | UVC_CONTROL_RESTORE,
51 },
52 {
53 .entity = UVC_GUID_UVC_PROCESSING,
54 .selector = PU_HUE_CONTROL,
55 .index = 2,
56 .size = 2,
57 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
58 | UVC_CONTROL_RESTORE | UVC_CONTROL_AUTO_UPDATE,
59 },
60 {
61 .entity = UVC_GUID_UVC_PROCESSING,
62 .selector = PU_SATURATION_CONTROL,
63 .index = 3,
64 .size = 2,
65 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
66 | UVC_CONTROL_RESTORE,
67 },
68 {
69 .entity = UVC_GUID_UVC_PROCESSING,
70 .selector = PU_SHARPNESS_CONTROL,
71 .index = 4,
72 .size = 2,
73 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
74 | UVC_CONTROL_RESTORE,
75 },
76 {
77 .entity = UVC_GUID_UVC_PROCESSING,
78 .selector = PU_GAMMA_CONTROL,
79 .index = 5,
80 .size = 2,
81 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
82 | UVC_CONTROL_RESTORE,
83 },
84 {
85 .entity = UVC_GUID_UVC_PROCESSING,
86 .selector = PU_BACKLIGHT_COMPENSATION_CONTROL,
87 .index = 8,
88 .size = 2,
89 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
90 | UVC_CONTROL_RESTORE,
91 },
92 {
93 .entity = UVC_GUID_UVC_PROCESSING,
94 .selector = PU_GAIN_CONTROL,
95 .index = 9,
96 .size = 2,
97 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
98 | UVC_CONTROL_RESTORE,
99 },
100 {
101 .entity = UVC_GUID_UVC_PROCESSING,
102 .selector = PU_POWER_LINE_FREQUENCY_CONTROL,
103 .index = 10,
104 .size = 1,
105 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
106 | UVC_CONTROL_RESTORE,
107 },
108 {
109 .entity = UVC_GUID_UVC_PROCESSING,
110 .selector = PU_HUE_AUTO_CONTROL,
111 .index = 11,
112 .size = 1,
113 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_CUR
114 | UVC_CONTROL_GET_DEF | UVC_CONTROL_RESTORE,
115 },
116 {
117 .entity = UVC_GUID_UVC_CAMERA,
118 .selector = CT_AE_MODE_CONTROL,
119 .index = 1,
120 .size = 1,
121 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_CUR
122 | UVC_CONTROL_GET_DEF | UVC_CONTROL_GET_RES
123 | UVC_CONTROL_RESTORE,
124 },
125 {
126 .entity = UVC_GUID_UVC_CAMERA,
127 .selector = CT_AE_PRIORITY_CONTROL,
128 .index = 2,
129 .size = 1,
130 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_CUR
131 | UVC_CONTROL_RESTORE,
132 },
133 {
134 .entity = UVC_GUID_UVC_CAMERA,
135 .selector = CT_EXPOSURE_TIME_ABSOLUTE_CONTROL,
136 .index = 3,
137 .size = 4,
138 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
139 | UVC_CONTROL_RESTORE,
140 },
141 {
142 .entity = UVC_GUID_UVC_CAMERA,
143 .selector = CT_FOCUS_ABSOLUTE_CONTROL,
144 .index = 5,
145 .size = 2,
146 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
147 | UVC_CONTROL_RESTORE | UVC_CONTROL_AUTO_UPDATE,
148 },
149 {
150 .entity = UVC_GUID_UVC_CAMERA,
151 .selector = CT_FOCUS_AUTO_CONTROL,
152 .index = 17,
153 .size = 1,
154 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_CUR
155 | UVC_CONTROL_GET_DEF | UVC_CONTROL_RESTORE,
156 },
157 {
158 .entity = UVC_GUID_UVC_PROCESSING,
159 .selector = PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL,
160 .index = 12,
161 .size = 1,
162 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_CUR
163 | UVC_CONTROL_GET_DEF | UVC_CONTROL_RESTORE,
164 },
165 {
166 .entity = UVC_GUID_UVC_PROCESSING,
167 .selector = PU_WHITE_BALANCE_TEMPERATURE_CONTROL,
168 .index = 6,
169 .size = 2,
170 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
171 | UVC_CONTROL_RESTORE | UVC_CONTROL_AUTO_UPDATE,
172 },
173 {
174 .entity = UVC_GUID_UVC_PROCESSING,
175 .selector = PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL,
176 .index = 13,
177 .size = 1,
178 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_CUR
179 | UVC_CONTROL_GET_DEF | UVC_CONTROL_RESTORE,
180 },
181 {
182 .entity = UVC_GUID_UVC_PROCESSING,
183 .selector = PU_WHITE_BALANCE_COMPONENT_CONTROL,
184 .index = 7,
185 .size = 4,
186 .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
187 | UVC_CONTROL_RESTORE | UVC_CONTROL_AUTO_UPDATE,
188 },
189};
190
191static struct uvc_menu_info power_line_frequency_controls[] = {
192 { 0, "Disabled" },
193 { 1, "50 Hz" },
194 { 2, "60 Hz" },
195};
196
197static struct uvc_menu_info exposure_auto_controls[] = {
198 { 1, "Manual Mode" },
199 { 2, "Auto Mode" },
200 { 4, "Shutter Priority Mode" },
201 { 8, "Aperture Priority Mode" },
202};
203
204static struct uvc_control_mapping uvc_ctrl_mappings[] = {
205 {
206 .id = V4L2_CID_BRIGHTNESS,
207 .name = "Brightness",
208 .entity = UVC_GUID_UVC_PROCESSING,
209 .selector = PU_BRIGHTNESS_CONTROL,
210 .size = 16,
211 .offset = 0,
212 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
213 .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
214 },
215 {
216 .id = V4L2_CID_CONTRAST,
217 .name = "Contrast",
218 .entity = UVC_GUID_UVC_PROCESSING,
219 .selector = PU_CONTRAST_CONTROL,
220 .size = 16,
221 .offset = 0,
222 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
223 .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
224 },
225 {
226 .id = V4L2_CID_HUE,
227 .name = "Hue",
228 .entity = UVC_GUID_UVC_PROCESSING,
229 .selector = PU_HUE_CONTROL,
230 .size = 16,
231 .offset = 0,
232 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
233 .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
234 },
235 {
236 .id = V4L2_CID_SATURATION,
237 .name = "Saturation",
238 .entity = UVC_GUID_UVC_PROCESSING,
239 .selector = PU_SATURATION_CONTROL,
240 .size = 16,
241 .offset = 0,
242 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
243 .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
244 },
245 {
246 .id = V4L2_CID_SHARPNESS,
247 .name = "Sharpness",
248 .entity = UVC_GUID_UVC_PROCESSING,
249 .selector = PU_SHARPNESS_CONTROL,
250 .size = 16,
251 .offset = 0,
252 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
253 .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
254 },
255 {
256 .id = V4L2_CID_GAMMA,
257 .name = "Gamma",
258 .entity = UVC_GUID_UVC_PROCESSING,
259 .selector = PU_GAMMA_CONTROL,
260 .size = 16,
261 .offset = 0,
262 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
263 .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
264 },
265 {
266 .id = V4L2_CID_BACKLIGHT_COMPENSATION,
267 .name = "Backlight Compensation",
268 .entity = UVC_GUID_UVC_PROCESSING,
269 .selector = PU_BACKLIGHT_COMPENSATION_CONTROL,
270 .size = 16,
271 .offset = 0,
272 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
273 .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
274 },
275 {
276 .id = V4L2_CID_GAIN,
277 .name = "Gain",
278 .entity = UVC_GUID_UVC_PROCESSING,
279 .selector = PU_GAIN_CONTROL,
280 .size = 16,
281 .offset = 0,
282 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
283 .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
284 },
285 {
286 .id = V4L2_CID_POWER_LINE_FREQUENCY,
287 .name = "Power Line Frequency",
288 .entity = UVC_GUID_UVC_PROCESSING,
289 .selector = PU_POWER_LINE_FREQUENCY_CONTROL,
290 .size = 2,
291 .offset = 0,
292 .v4l2_type = V4L2_CTRL_TYPE_MENU,
293 .data_type = UVC_CTRL_DATA_TYPE_ENUM,
294 .menu_info = power_line_frequency_controls,
295 .menu_count = ARRAY_SIZE(power_line_frequency_controls),
296 },
297 {
298 .id = V4L2_CID_HUE_AUTO,
299 .name = "Hue, Auto",
300 .entity = UVC_GUID_UVC_PROCESSING,
301 .selector = PU_HUE_AUTO_CONTROL,
302 .size = 1,
303 .offset = 0,
304 .v4l2_type = V4L2_CTRL_TYPE_BOOLEAN,
305 .data_type = UVC_CTRL_DATA_TYPE_BOOLEAN,
306 },
307 {
308 .id = V4L2_CID_EXPOSURE_AUTO,
309 .name = "Exposure, Auto",
310 .entity = UVC_GUID_UVC_CAMERA,
311 .selector = CT_AE_MODE_CONTROL,
312 .size = 4,
313 .offset = 0,
314 .v4l2_type = V4L2_CTRL_TYPE_MENU,
315 .data_type = UVC_CTRL_DATA_TYPE_BITMASK,
316 .menu_info = exposure_auto_controls,
317 .menu_count = ARRAY_SIZE(exposure_auto_controls),
318 },
319 {
320 .id = V4L2_CID_EXPOSURE_AUTO_PRIORITY,
321 .name = "Exposure, Auto Priority",
322 .entity = UVC_GUID_UVC_CAMERA,
323 .selector = CT_AE_PRIORITY_CONTROL,
324 .size = 1,
325 .offset = 0,
326 .v4l2_type = V4L2_CTRL_TYPE_BOOLEAN,
327 .data_type = UVC_CTRL_DATA_TYPE_BOOLEAN,
328 },
329 {
330 .id = V4L2_CID_EXPOSURE_ABSOLUTE,
331 .name = "Exposure (Absolute)",
332 .entity = UVC_GUID_UVC_CAMERA,
333 .selector = CT_EXPOSURE_TIME_ABSOLUTE_CONTROL,
334 .size = 32,
335 .offset = 0,
336 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
337 .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
338 },
339 {
340 .id = V4L2_CID_AUTO_WHITE_BALANCE,
341 .name = "White Balance Temperature, Auto",
342 .entity = UVC_GUID_UVC_PROCESSING,
343 .selector = PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL,
344 .size = 1,
345 .offset = 0,
346 .v4l2_type = V4L2_CTRL_TYPE_BOOLEAN,
347 .data_type = UVC_CTRL_DATA_TYPE_BOOLEAN,
348 },
349 {
350 .id = V4L2_CID_WHITE_BALANCE_TEMPERATURE,
351 .name = "White Balance Temperature",
352 .entity = UVC_GUID_UVC_PROCESSING,
353 .selector = PU_WHITE_BALANCE_TEMPERATURE_CONTROL,
354 .size = 16,
355 .offset = 0,
356 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
357 .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
358 },
359 {
360 .id = V4L2_CID_AUTO_WHITE_BALANCE,
361 .name = "White Balance Component, Auto",
362 .entity = UVC_GUID_UVC_PROCESSING,
363 .selector = PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL,
364 .size = 1,
365 .offset = 0,
366 .v4l2_type = V4L2_CTRL_TYPE_BOOLEAN,
367 .data_type = UVC_CTRL_DATA_TYPE_BOOLEAN,
368 },
369 {
370 .id = V4L2_CID_BLUE_BALANCE,
371 .name = "White Balance Blue Component",
372 .entity = UVC_GUID_UVC_PROCESSING,
373 .selector = PU_WHITE_BALANCE_COMPONENT_CONTROL,
374 .size = 16,
375 .offset = 0,
376 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
377 .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
378 },
379 {
380 .id = V4L2_CID_RED_BALANCE,
381 .name = "White Balance Red Component",
382 .entity = UVC_GUID_UVC_PROCESSING,
383 .selector = PU_WHITE_BALANCE_COMPONENT_CONTROL,
384 .size = 16,
385 .offset = 16,
386 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
387 .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
388 },
389 {
390 .id = V4L2_CID_FOCUS_ABSOLUTE,
391 .name = "Focus (absolute)",
392 .entity = UVC_GUID_UVC_CAMERA,
393 .selector = CT_FOCUS_ABSOLUTE_CONTROL,
394 .size = 16,
395 .offset = 0,
396 .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
397 .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
398 },
399 {
400 .id = V4L2_CID_FOCUS_AUTO,
401 .name = "Focus, Auto",
402 .entity = UVC_GUID_UVC_CAMERA,
403 .selector = CT_FOCUS_AUTO_CONTROL,
404 .size = 1,
405 .offset = 0,
406 .v4l2_type = V4L2_CTRL_TYPE_BOOLEAN,
407 .data_type = UVC_CTRL_DATA_TYPE_BOOLEAN,
408 },
409};
410
411/* ------------------------------------------------------------------------
412 * Utility functions
413 */
414
415static inline __u8 *uvc_ctrl_data(struct uvc_control *ctrl, int id)
416{
417 return ctrl->data + id * ctrl->info->size;
418}
419
420static inline int uvc_get_bit(const __u8 *data, int bit)
421{
422 return (data[bit >> 3] >> (bit & 7)) & 1;
423}
424
425/* Extract the bit string specified by mapping->offset and mapping->size
426 * from the little-endian data stored at 'data' and return the result as
427 * a signed 32bit integer. Sign extension will be performed if the mapping
428 * references a signed data type.
429 */
430static __s32 uvc_get_le_value(const __u8 *data,
431 struct uvc_control_mapping *mapping)
432{
433 int bits = mapping->size;
434 int offset = mapping->offset;
435 __s32 value = 0;
436 __u8 mask;
437
438 data += offset / 8;
439 offset &= 7;
440 mask = ((1LL << bits) - 1) << offset;
441
442 for (; bits > 0; data++) {
443 __u8 byte = *data & mask;
444 value |= offset > 0 ? (byte >> offset) : (byte << (-offset));
445 bits -= 8 - (offset > 0 ? offset : 0);
446 offset -= 8;
447 mask = (1 << bits) - 1;
448 }
449
450 /* Sign-extend the value if needed */
451 if (mapping->data_type == UVC_CTRL_DATA_TYPE_SIGNED)
452 value |= -(value & (1 << (mapping->size - 1)));
453
454 return value;
455}
456
457/* Set the bit string specified by mapping->offset and mapping->size
458 * in the little-endian data stored at 'data' to the value 'value'.
459 */
460static void uvc_set_le_value(__s32 value, __u8 *data,
461 struct uvc_control_mapping *mapping)
462{
463 int bits = mapping->size;
464 int offset = mapping->offset;
465 __u8 mask;
466
467 data += offset / 8;
468 offset &= 7;
469
470 for (; bits > 0; data++) {
471 mask = ((1LL << bits) - 1) << offset;
472 *data = (*data & ~mask) | ((value << offset) & mask);
473 value >>= offset ? offset : 8;
474 bits -= 8 - offset;
475 offset = 0;
476 }
477}
478
479/* ------------------------------------------------------------------------
480 * Terminal and unit management
481 */
482
483static const __u8 uvc_processing_guid[16] = UVC_GUID_UVC_PROCESSING;
484static const __u8 uvc_camera_guid[16] = UVC_GUID_UVC_CAMERA;
485static const __u8 uvc_media_transport_input_guid[16] =
486 UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT;
487
488static int uvc_entity_match_guid(struct uvc_entity *entity, __u8 guid[16])
489{
490 switch (UVC_ENTITY_TYPE(entity)) {
491 case ITT_CAMERA:
492 return memcmp(uvc_camera_guid, guid, 16) == 0;
493
494 case ITT_MEDIA_TRANSPORT_INPUT:
495 return memcmp(uvc_media_transport_input_guid, guid, 16) == 0;
496
497 case VC_PROCESSING_UNIT:
498 return memcmp(uvc_processing_guid, guid, 16) == 0;
499
500 case VC_EXTENSION_UNIT:
501 return memcmp(entity->extension.guidExtensionCode,
502 guid, 16) == 0;
503
504 default:
505 return 0;
506 }
507}
508
509/* ------------------------------------------------------------------------
510 * UVC Controls
511 */
512
513static void __uvc_find_control(struct uvc_entity *entity, __u32 v4l2_id,
514 struct uvc_control_mapping **mapping, struct uvc_control **control,
515 int next)
516{
517 struct uvc_control *ctrl;
518 struct uvc_control_mapping *map;
519 unsigned int i;
520
521 if (entity == NULL)
522 return;
523
524 for (i = 0; i < entity->ncontrols; ++i) {
525 ctrl = &entity->controls[i];
526 if (ctrl->info == NULL)
527 continue;
528
529 list_for_each_entry(map, &ctrl->info->mappings, list) {
530 if ((map->id == v4l2_id) && !next) {
531 *control = ctrl;
532 *mapping = map;
533 return;
534 }
535
536 if ((*mapping == NULL || (*mapping)->id > map->id) &&
537 (map->id > v4l2_id) && next) {
538 *control = ctrl;
539 *mapping = map;
540 }
541 }
542 }
543}
544
545struct uvc_control *uvc_find_control(struct uvc_video_device *video,
546 __u32 v4l2_id, struct uvc_control_mapping **mapping)
547{
548 struct uvc_control *ctrl = NULL;
549 struct uvc_entity *entity;
550 int next = v4l2_id & V4L2_CTRL_FLAG_NEXT_CTRL;
551
552 *mapping = NULL;
553
554 /* Mask the query flags. */
555 v4l2_id &= V4L2_CTRL_ID_MASK;
556
557 /* Find the control. */
558 __uvc_find_control(video->processing, v4l2_id, mapping, &ctrl, next);
559 if (ctrl && !next)
560 return ctrl;
561
562 list_for_each_entry(entity, &video->iterms, chain) {
563 __uvc_find_control(entity, v4l2_id, mapping, &ctrl, next);
564 if (ctrl && !next)
565 return ctrl;
566 }
567
568 list_for_each_entry(entity, &video->extensions, chain) {
569 __uvc_find_control(entity, v4l2_id, mapping, &ctrl, next);
570 if (ctrl && !next)
571 return ctrl;
572 }
573
574 if (ctrl == NULL && !next)
575 uvc_trace(UVC_TRACE_CONTROL, "Control 0x%08x not found.\n",
576 v4l2_id);
577
578 return ctrl;
579}
580
581int uvc_query_v4l2_ctrl(struct uvc_video_device *video,
582 struct v4l2_queryctrl *v4l2_ctrl)
583{
584 struct uvc_control *ctrl;
585 struct uvc_control_mapping *mapping;
586 struct uvc_menu_info *menu;
587 unsigned int i;
588 __u8 data[8];
589 int ret;
590
591 ctrl = uvc_find_control(video, v4l2_ctrl->id, &mapping);
592 if (ctrl == NULL)
593 return -EINVAL;
594
595 v4l2_ctrl->id = mapping->id;
596 v4l2_ctrl->type = mapping->v4l2_type;
597 strncpy(v4l2_ctrl->name, mapping->name, sizeof v4l2_ctrl->name);
598 v4l2_ctrl->flags = 0;
599
600 if (!(ctrl->info->flags & UVC_CONTROL_SET_CUR))
601 v4l2_ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
602
603 if (ctrl->info->flags & UVC_CONTROL_GET_DEF) {
604 if ((ret = uvc_query_ctrl(video->dev, GET_DEF, ctrl->entity->id,
605 video->dev->intfnum, ctrl->info->selector,
606 &data, ctrl->info->size)) < 0)
607 return ret;
608 v4l2_ctrl->default_value = uvc_get_le_value(data, mapping);
609 }
610
611 if (mapping->v4l2_type == V4L2_CTRL_TYPE_MENU) {
612 v4l2_ctrl->minimum = 0;
613 v4l2_ctrl->maximum = mapping->menu_count - 1;
614 v4l2_ctrl->step = 1;
615
616 menu = mapping->menu_info;
617 for (i = 0; i < mapping->menu_count; ++i, ++menu) {
618 if (menu->value == v4l2_ctrl->default_value) {
619 v4l2_ctrl->default_value = i;
620 break;
621 }
622 }
623
624 return 0;
625 }
626
627 if (ctrl->info->flags & UVC_CONTROL_GET_MIN) {
628 if ((ret = uvc_query_ctrl(video->dev, GET_MIN, ctrl->entity->id,
629 video->dev->intfnum, ctrl->info->selector,
630 &data, ctrl->info->size)) < 0)
631 return ret;
632 v4l2_ctrl->minimum = uvc_get_le_value(data, mapping);
633 }
634 if (ctrl->info->flags & UVC_CONTROL_GET_MAX) {
635 if ((ret = uvc_query_ctrl(video->dev, GET_MAX, ctrl->entity->id,
636 video->dev->intfnum, ctrl->info->selector,
637 &data, ctrl->info->size)) < 0)
638 return ret;
639 v4l2_ctrl->maximum = uvc_get_le_value(data, mapping);
640 }
641 if (ctrl->info->flags & UVC_CONTROL_GET_RES) {
642 if ((ret = uvc_query_ctrl(video->dev, GET_RES, ctrl->entity->id,
643 video->dev->intfnum, ctrl->info->selector,
644 &data, ctrl->info->size)) < 0)
645 return ret;
646 v4l2_ctrl->step = uvc_get_le_value(data, mapping);
647 }
648
649 return 0;
650}
651
652
653/* --------------------------------------------------------------------------
654 * Control transactions
655 *
656 * To make extended set operations as atomic as the hardware allows, controls
657 * are handled using begin/commit/rollback operations.
658 *
659 * At the beginning of a set request, uvc_ctrl_begin should be called to
660 * initialize the request. This function acquires the control lock.
661 *
662 * When setting a control, the new value is stored in the control data field
663 * at position UVC_CTRL_DATA_CURRENT. The control is then marked as dirty for
664 * later processing. If the UVC and V4L2 control sizes differ, the current
665 * value is loaded from the hardware before storing the new value in the data
666 * field.
667 *
668 * After processing all controls in the transaction, uvc_ctrl_commit or
669 * uvc_ctrl_rollback must be called to apply the pending changes to the
670 * hardware or revert them. When applying changes, all controls marked as
671 * dirty will be modified in the UVC device, and the dirty flag will be
672 * cleared. When reverting controls, the control data field
673 * UVC_CTRL_DATA_CURRENT is reverted to its previous value
674 * (UVC_CTRL_DATA_BACKUP) for all dirty controls. Both functions release the
675 * control lock.
676 */
677int uvc_ctrl_begin(struct uvc_video_device *video)
678{
679 return mutex_lock_interruptible(&video->ctrl_mutex) ? -ERESTARTSYS : 0;
680}
681
682static int uvc_ctrl_commit_entity(struct uvc_device *dev,
683 struct uvc_entity *entity, int rollback)
684{
685 struct uvc_control *ctrl;
686 unsigned int i;
687 int ret;
688
689 if (entity == NULL)
690 return 0;
691
692 for (i = 0; i < entity->ncontrols; ++i) {
693 ctrl = &entity->controls[i];
694 if (ctrl->info == NULL || !ctrl->dirty)
695 continue;
696
697 if (!rollback)
698 ret = uvc_query_ctrl(dev, SET_CUR, ctrl->entity->id,
699 dev->intfnum, ctrl->info->selector,
700 uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
701 ctrl->info->size);
702 else
703 ret = 0;
704
705 if (rollback || ret < 0)
706 memcpy(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
707 uvc_ctrl_data(ctrl, UVC_CTRL_DATA_BACKUP),
708 ctrl->info->size);
709
710 if ((ctrl->info->flags & UVC_CONTROL_GET_CUR) == 0)
711 ctrl->loaded = 0;
712
713 ctrl->dirty = 0;
714
715 if (ret < 0)
716 return ret;
717 }
718
719 return 0;
720}
721
722int __uvc_ctrl_commit(struct uvc_video_device *video, int rollback)
723{
724 struct uvc_entity *entity;
725 int ret = 0;
726
727 /* Find the control. */
728 ret = uvc_ctrl_commit_entity(video->dev, video->processing, rollback);
729 if (ret < 0)
730 goto done;
731
732 list_for_each_entry(entity, &video->iterms, chain) {
733 ret = uvc_ctrl_commit_entity(video->dev, entity, rollback);
734 if (ret < 0)
735 goto done;
736 }
737
738 list_for_each_entry(entity, &video->extensions, chain) {
739 ret = uvc_ctrl_commit_entity(video->dev, entity, rollback);
740 if (ret < 0)
741 goto done;
742 }
743
744done:
745 mutex_unlock(&video->ctrl_mutex);
746 return ret;
747}
748
749int uvc_ctrl_get(struct uvc_video_device *video,
750 struct v4l2_ext_control *xctrl)
751{
752 struct uvc_control *ctrl;
753 struct uvc_control_mapping *mapping;
754 struct uvc_menu_info *menu;
755 unsigned int i;
756 int ret;
757
758 ctrl = uvc_find_control(video, xctrl->id, &mapping);
759 if (ctrl == NULL || (ctrl->info->flags & UVC_CONTROL_GET_CUR) == 0)
760 return -EINVAL;
761
762 if (!ctrl->loaded) {
763 ret = uvc_query_ctrl(video->dev, GET_CUR, ctrl->entity->id,
764 video->dev->intfnum, ctrl->info->selector,
765 uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
766 ctrl->info->size);
767 if (ret < 0)
768 return ret;
769
770 if ((ctrl->info->flags & UVC_CONTROL_AUTO_UPDATE) == 0)
771 ctrl->loaded = 1;
772 }
773
774 xctrl->value = uvc_get_le_value(
775 uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT), mapping);
776
777 if (mapping->v4l2_type == V4L2_CTRL_TYPE_MENU) {
778 menu = mapping->menu_info;
779 for (i = 0; i < mapping->menu_count; ++i, ++menu) {
780 if (menu->value == xctrl->value) {
781 xctrl->value = i;
782 break;
783 }
784 }
785 }
786
787 return 0;
788}
789
790int uvc_ctrl_set(struct uvc_video_device *video,
791 struct v4l2_ext_control *xctrl)
792{
793 struct uvc_control *ctrl;
794 struct uvc_control_mapping *mapping;
795 s32 value = xctrl->value;
796 int ret;
797
798 ctrl = uvc_find_control(video, xctrl->id, &mapping);
799 if (ctrl == NULL || (ctrl->info->flags & UVC_CONTROL_SET_CUR) == 0)
800 return -EINVAL;
801
802 if (mapping->v4l2_type == V4L2_CTRL_TYPE_MENU) {
803 if (value < 0 || value >= mapping->menu_count)
804 return -EINVAL;
805 value = mapping->menu_info[value].value;
806 }
807
808 if (!ctrl->loaded && (ctrl->info->size * 8) != mapping->size) {
809 if ((ctrl->info->flags & UVC_CONTROL_GET_CUR) == 0) {
810 memset(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
811 0, ctrl->info->size);
812 } else {
813 ret = uvc_query_ctrl(video->dev, GET_CUR,
814 ctrl->entity->id, video->dev->intfnum,
815 ctrl->info->selector,
816 uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
817 ctrl->info->size);
818 if (ret < 0)
819 return ret;
820 }
821
822 if ((ctrl->info->flags & UVC_CONTROL_AUTO_UPDATE) == 0)
823 ctrl->loaded = 1;
824 }
825
826 if (!ctrl->dirty) {
827 memcpy(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_BACKUP),
828 uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
829 ctrl->info->size);
830 }
831
832 uvc_set_le_value(value,
833 uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT), mapping);
834
835 ctrl->dirty = 1;
836 ctrl->modified = 1;
837 return 0;
838}
839
840/* --------------------------------------------------------------------------
841 * Dynamic controls
842 */
843
844int uvc_xu_ctrl_query(struct uvc_video_device *video,
845 struct uvc_xu_control *xctrl, int set)
846{
847 struct uvc_entity *entity;
848 struct uvc_control *ctrl = NULL;
849 unsigned int i, found = 0;
850 __u8 *data;
851 int ret;
852
853 /* Find the extension unit. */
854 list_for_each_entry(entity, &video->extensions, chain) {
855 if (entity->id == xctrl->unit)
856 break;
857 }
858
859 if (entity->id != xctrl->unit) {
860 uvc_trace(UVC_TRACE_CONTROL, "Extension unit %u not found.\n",
861 xctrl->unit);
862 return -EINVAL;
863 }
864
865 /* Find the control. */
866 for (i = 0; i < entity->ncontrols; ++i) {
867 ctrl = &entity->controls[i];
868 if (ctrl->info == NULL)
869 continue;
870
871 if (ctrl->info->selector == xctrl->selector) {
872 found = 1;
873 break;
874 }
875 }
876
877 if (!found) {
878 uvc_trace(UVC_TRACE_CONTROL,
879 "Control " UVC_GUID_FORMAT "/%u not found.\n",
880 UVC_GUID_ARGS(entity->extension.guidExtensionCode),
881 xctrl->selector);
882 return -EINVAL;
883 }
884
885 /* Validate control data size. */
886 if (ctrl->info->size != xctrl->size)
887 return -EINVAL;
888
889 if ((set && !(ctrl->info->flags & UVC_CONTROL_SET_CUR)) ||
890 (!set && !(ctrl->info->flags & UVC_CONTROL_GET_CUR)))
891 return -EINVAL;
892
893 if (mutex_lock_interruptible(&video->ctrl_mutex))
894 return -ERESTARTSYS;
895
896 memcpy(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_BACKUP),
897 uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
898 xctrl->size);
899 data = uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT);
900
901 if (set && copy_from_user(data, xctrl->data, xctrl->size)) {
902 ret = -EFAULT;
903 goto out;
904 }
905
906 ret = uvc_query_ctrl(video->dev, set ? SET_CUR : GET_CUR, xctrl->unit,
907 video->dev->intfnum, xctrl->selector, data,
908 xctrl->size);
909 if (ret < 0)
910 goto out;
911
912 if (!set && copy_to_user(xctrl->data, data, xctrl->size)) {
913 ret = -EFAULT;
914 goto out;
915 }
916
917out:
918 if (ret)
919 memcpy(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
920 uvc_ctrl_data(ctrl, UVC_CTRL_DATA_BACKUP),
921 xctrl->size);
922
923 mutex_unlock(&video->ctrl_mutex);
924 return ret;
925}
926
927/* --------------------------------------------------------------------------
928 * Suspend/resume
929 */
930
931/*
932 * Restore control values after resume, skipping controls that haven't been
933 * changed.
934 *
935 * TODO
936 * - Don't restore modified controls that are back to their default value.
937 * - Handle restore order (Auto-Exposure Mode should be restored before
938 * Exposure Time).
939 */
940int uvc_ctrl_resume_device(struct uvc_device *dev)
941{
942 struct uvc_control *ctrl;
943 struct uvc_entity *entity;
944 unsigned int i;
945 int ret;
946
947 /* Walk the entities list and restore controls when possible. */
948 list_for_each_entry(entity, &dev->entities, list) {
949
950 for (i = 0; i < entity->ncontrols; ++i) {
951 ctrl = &entity->controls[i];
952
953 if (ctrl->info == NULL || !ctrl->modified ||
954 (ctrl->info->flags & UVC_CONTROL_RESTORE) == 0)
955 continue;
956
957 printk(KERN_INFO "restoring control " UVC_GUID_FORMAT
958 "/%u/%u\n", UVC_GUID_ARGS(ctrl->info->entity),
959 ctrl->info->index, ctrl->info->selector);
960 ctrl->dirty = 1;
961 }
962
963 ret = uvc_ctrl_commit_entity(dev, entity, 0);
964 if (ret < 0)
965 return ret;
966 }
967
968 return 0;
969}
970
971/* --------------------------------------------------------------------------
972 * Control and mapping handling
973 */
974
975static void uvc_ctrl_add_ctrl(struct uvc_device *dev,
976 struct uvc_control_info *info)
977{
978 struct uvc_entity *entity;
979 struct uvc_control *ctrl = NULL;
980 int ret, found = 0;
981 unsigned int i;
982
983 list_for_each_entry(entity, &dev->entities, list) {
984 if (!uvc_entity_match_guid(entity, info->entity))
985 continue;
986
987 for (i = 0; i < entity->ncontrols; ++i) {
988 ctrl = &entity->controls[i];
989 if (ctrl->index == info->index) {
990 found = 1;
991 break;
992 }
993 }
994
995 if (found)
996 break;
997 }
998
999 if (!found)
1000 return;
1001
1002 if (UVC_ENTITY_TYPE(entity) == VC_EXTENSION_UNIT) {
1003 /* Check if the device control information and length match
1004 * the user supplied information.
1005 */
1006 __u32 flags;
1007 __le16 size;
1008 __u8 inf;
1009
1010 if ((ret = uvc_query_ctrl(dev, GET_LEN, ctrl->entity->id,
1011 dev->intfnum, info->selector, (__u8 *)&size, 2)) < 0) {
1012 uvc_trace(UVC_TRACE_CONTROL, "GET_LEN failed on "
1013 "control " UVC_GUID_FORMAT "/%u (%d).\n",
1014 UVC_GUID_ARGS(info->entity), info->selector,
1015 ret);
1016 return;
1017 }
1018
1019 if (info->size != le16_to_cpu(size)) {
1020 uvc_trace(UVC_TRACE_CONTROL, "Control " UVC_GUID_FORMAT
1021 "/%u size doesn't match user supplied "
1022 "value.\n", UVC_GUID_ARGS(info->entity),
1023 info->selector);
1024 return;
1025 }
1026
1027 if ((ret = uvc_query_ctrl(dev, GET_INFO, ctrl->entity->id,
1028 dev->intfnum, info->selector, &inf, 1)) < 0) {
1029 uvc_trace(UVC_TRACE_CONTROL, "GET_INFO failed on "
1030 "control " UVC_GUID_FORMAT "/%u (%d).\n",
1031 UVC_GUID_ARGS(info->entity), info->selector,
1032 ret);
1033 return;
1034 }
1035
1036 flags = info->flags;
1037 if (((flags & UVC_CONTROL_GET_CUR) && !(inf & (1 << 0))) ||
1038 ((flags & UVC_CONTROL_SET_CUR) && !(inf & (1 << 1)))) {
1039 uvc_trace(UVC_TRACE_CONTROL, "Control "
1040 UVC_GUID_FORMAT "/%u flags don't match "
1041 "supported operations.\n",
1042 UVC_GUID_ARGS(info->entity), info->selector);
1043 return;
1044 }
1045 }
1046
1047 ctrl->info = info;
1048 ctrl->data = kmalloc(ctrl->info->size * UVC_CTRL_NDATA, GFP_KERNEL);
1049 uvc_trace(UVC_TRACE_CONTROL, "Added control " UVC_GUID_FORMAT "/%u "
1050 "to device %s entity %u\n", UVC_GUID_ARGS(ctrl->info->entity),
1051 ctrl->info->selector, dev->udev->devpath, entity->id);
1052}
1053
1054/*
1055 * Add an item to the UVC control information list, and instantiate a control
1056 * structure for each device that supports the control.
1057 */
1058int uvc_ctrl_add_info(struct uvc_control_info *info)
1059{
1060 struct uvc_control_info *ctrl;
1061 struct uvc_device *dev;
1062 int ret = 0;
1063
1064 /* Find matching controls by walking the devices, entities and
1065 * controls list.
1066 */
1067 mutex_lock(&uvc_driver.ctrl_mutex);
1068
1069 /* First check if the list contains a control matching the new one.
1070 * Bail out if it does.
1071 */
1072 list_for_each_entry(ctrl, &uvc_driver.controls, list) {
1073 if (memcmp(ctrl->entity, info->entity, 16))
1074 continue;
1075
1076 if (ctrl->selector == info->selector) {
1077 uvc_trace(UVC_TRACE_CONTROL, "Control "
1078 UVC_GUID_FORMAT "/%u is already defined.\n",
1079 UVC_GUID_ARGS(info->entity), info->selector);
1080 ret = -EEXIST;
1081 goto end;
1082 }
1083 if (ctrl->index == info->index) {
1084 uvc_trace(UVC_TRACE_CONTROL, "Control "
1085 UVC_GUID_FORMAT "/%u would overwrite index "
1086 "%d.\n", UVC_GUID_ARGS(info->entity),
1087 info->selector, info->index);
1088 ret = -EEXIST;
1089 goto end;
1090 }
1091 }
1092
1093 list_for_each_entry(dev, &uvc_driver.devices, list)
1094 uvc_ctrl_add_ctrl(dev, info);
1095
1096 INIT_LIST_HEAD(&info->mappings);
1097 list_add_tail(&info->list, &uvc_driver.controls);
1098end:
1099 mutex_unlock(&uvc_driver.ctrl_mutex);
1100 return ret;
1101}
1102
1103int uvc_ctrl_add_mapping(struct uvc_control_mapping *mapping)
1104{
1105 struct uvc_control_info *info;
1106 struct uvc_control_mapping *map;
1107 int ret = -EINVAL;
1108
1109 if (mapping->id & ~V4L2_CTRL_ID_MASK) {
1110 uvc_trace(UVC_TRACE_CONTROL, "Can't add mapping '%s' with "
1111 "invalid control id 0x%08x\n", mapping->name,
1112 mapping->id);
1113 return -EINVAL;
1114 }
1115
1116 mutex_lock(&uvc_driver.ctrl_mutex);
1117 list_for_each_entry(info, &uvc_driver.controls, list) {
1118 if (memcmp(info->entity, mapping->entity, 16) ||
1119 info->selector != mapping->selector)
1120 continue;
1121
1122 if (info->size * 8 < mapping->size + mapping->offset) {
1123 uvc_trace(UVC_TRACE_CONTROL, "Mapping '%s' would "
1124 "overflow control " UVC_GUID_FORMAT "/%u\n",
1125 mapping->name, UVC_GUID_ARGS(info->entity),
1126 info->selector);
1127 ret = -EOVERFLOW;
1128 goto end;
1129 }
1130
1131 /* Check if the list contains a mapping matching the new one.
1132 * Bail out if it does.
1133 */
1134 list_for_each_entry(map, &info->mappings, list) {
1135 if (map->id == mapping->id) {
1136 uvc_trace(UVC_TRACE_CONTROL, "Mapping '%s' is "
1137 "already defined.\n", mapping->name);
1138 ret = -EEXIST;
1139 goto end;
1140 }
1141 }
1142
1143 mapping->ctrl = info;
1144 list_add_tail(&mapping->list, &info->mappings);
1145 uvc_trace(UVC_TRACE_CONTROL, "Adding mapping %s to control "
1146 UVC_GUID_FORMAT "/%u.\n", mapping->name,
1147 UVC_GUID_ARGS(info->entity), info->selector);
1148
1149 ret = 0;
1150 break;
1151 }
1152end:
1153 mutex_unlock(&uvc_driver.ctrl_mutex);
1154 return ret;
1155}
1156
1157/*
1158 * Initialize device controls.
1159 */
1160int uvc_ctrl_init_device(struct uvc_device *dev)
1161{
1162 struct uvc_control_info *info;
1163 struct uvc_control *ctrl;
1164 struct uvc_entity *entity;
1165 unsigned int i;
1166
1167 /* Walk the entities list and instantiate controls */
1168 list_for_each_entry(entity, &dev->entities, list) {
1169 unsigned int bControlSize = 0, ncontrols = 0;
1170 __u8 *bmControls = NULL;
1171
1172 if (UVC_ENTITY_TYPE(entity) == VC_EXTENSION_UNIT) {
1173 bmControls = entity->extension.bmControls;
1174 bControlSize = entity->extension.bControlSize;
1175 } else if (UVC_ENTITY_TYPE(entity) == VC_PROCESSING_UNIT) {
1176 bmControls = entity->processing.bmControls;
1177 bControlSize = entity->processing.bControlSize;
1178 } else if (UVC_ENTITY_TYPE(entity) == ITT_CAMERA) {
1179 bmControls = entity->camera.bmControls;
1180 bControlSize = entity->camera.bControlSize;
1181 }
1182
1183 for (i = 0; i < bControlSize; ++i)
1184 ncontrols += hweight8(bmControls[i]);
1185
1186 if (ncontrols == 0)
1187 continue;
1188
1189 entity->controls = kzalloc(ncontrols*sizeof *ctrl, GFP_KERNEL);
1190 if (entity->controls == NULL)
1191 return -ENOMEM;
1192
1193 entity->ncontrols = ncontrols;
1194
1195 ctrl = entity->controls;
1196 for (i = 0; i < bControlSize * 8; ++i) {
1197 if (uvc_get_bit(bmControls, i) == 0)
1198 continue;
1199
1200 ctrl->entity = entity;
1201 ctrl->index = i;
1202 ctrl++;
1203 }
1204 }
1205
1206 /* Walk the controls info list and associate them with the device
1207 * controls, then add the device to the global device list. This has
1208 * to be done while holding the controls lock, to make sure
1209 * uvc_ctrl_add_info() will not get called in-between.
1210 */
1211 mutex_lock(&uvc_driver.ctrl_mutex);
1212 list_for_each_entry(info, &uvc_driver.controls, list)
1213 uvc_ctrl_add_ctrl(dev, info);
1214
1215 list_add_tail(&dev->list, &uvc_driver.devices);
1216 mutex_unlock(&uvc_driver.ctrl_mutex);
1217
1218 return 0;
1219}
1220
1221/*
1222 * Cleanup device controls.
1223 */
1224void uvc_ctrl_cleanup_device(struct uvc_device *dev)
1225{
1226 struct uvc_entity *entity;
1227 unsigned int i;
1228
1229 /* Remove the device from the global devices list */
1230 mutex_lock(&uvc_driver.ctrl_mutex);
1231 if (dev->list.next != NULL)
1232 list_del(&dev->list);
1233 mutex_unlock(&uvc_driver.ctrl_mutex);
1234
1235 list_for_each_entry(entity, &dev->entities, list) {
1236 for (i = 0; i < entity->ncontrols; ++i)
1237 kfree(entity->controls[i].data);
1238
1239 kfree(entity->controls);
1240 }
1241}
1242
1243void uvc_ctrl_init(void)
1244{
1245 struct uvc_control_info *ctrl = uvc_ctrls;
1246 struct uvc_control_info *cend = ctrl + ARRAY_SIZE(uvc_ctrls);
1247 struct uvc_control_mapping *mapping = uvc_ctrl_mappings;
1248 struct uvc_control_mapping *mend =
1249 mapping + ARRAY_SIZE(uvc_ctrl_mappings);
1250
1251 for (; ctrl < cend; ++ctrl)
1252 uvc_ctrl_add_info(ctrl);
1253
1254 for (; mapping < mend; ++mapping)
1255 uvc_ctrl_add_mapping(mapping);
1256}
diff --git a/drivers/media/video/uvc/uvc_driver.c b/drivers/media/video/uvc/uvc_driver.c
new file mode 100644
index 000000000000..60ced589f898
--- /dev/null
+++ b/drivers/media/video/uvc/uvc_driver.c
@@ -0,0 +1,1955 @@
1/*
2 * uvc_driver.c -- USB Video Class driver
3 *
4 * Copyright (C) 2005-2008
5 * Laurent Pinchart (laurent.pinchart@skynet.be)
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 */
13
14/*
15 * This driver aims to support video input devices compliant with the 'USB
16 * Video Class' specification.
17 *
18 * The driver doesn't support the deprecated v4l1 interface. It implements the
19 * mmap capture method only, and doesn't do any image format conversion in
20 * software. If your user-space application doesn't support YUYV or MJPEG, fix
21 * it :-). Please note that the MJPEG data have been stripped from their
22 * Huffman tables (DHT marker), you will need to add it back if your JPEG
23 * codec can't handle MJPEG data.
24 */
25
26#include <linux/kernel.h>
27#include <linux/version.h>
28#include <linux/list.h>
29#include <linux/module.h>
30#include <linux/usb.h>
31#include <linux/videodev2.h>
32#include <linux/vmalloc.h>
33#include <linux/wait.h>
34#include <asm/atomic.h>
35
36#include <media/v4l2-common.h>
37
38#include "uvcvideo.h"
39
40#define DRIVER_AUTHOR "Laurent Pinchart <laurent.pinchart@skynet.be>"
41#define DRIVER_DESC "USB Video Class driver"
42#ifndef DRIVER_VERSION
43#define DRIVER_VERSION "v0.1.0"
44#endif
45
46static unsigned int uvc_quirks_param;
47unsigned int uvc_trace_param;
48
49/* ------------------------------------------------------------------------
50 * Control, formats, ...
51 */
52
53static struct uvc_format_desc uvc_fmts[] = {
54 {
55 .name = "YUV 4:2:2 (YUYV)",
56 .guid = UVC_GUID_FORMAT_YUY2,
57 .fcc = V4L2_PIX_FMT_YUYV,
58 },
59 {
60 .name = "YUV 4:2:0 (NV12)",
61 .guid = UVC_GUID_FORMAT_NV12,
62 .fcc = V4L2_PIX_FMT_NV12,
63 },
64 {
65 .name = "MJPEG",
66 .guid = UVC_GUID_FORMAT_MJPEG,
67 .fcc = V4L2_PIX_FMT_MJPEG,
68 },
69 {
70 .name = "YVU 4:2:0 (YV12)",
71 .guid = UVC_GUID_FORMAT_YV12,
72 .fcc = V4L2_PIX_FMT_YVU420,
73 },
74 {
75 .name = "YUV 4:2:0 (I420)",
76 .guid = UVC_GUID_FORMAT_I420,
77 .fcc = V4L2_PIX_FMT_YUV420,
78 },
79 {
80 .name = "YUV 4:2:2 (UYVY)",
81 .guid = UVC_GUID_FORMAT_UYVY,
82 .fcc = V4L2_PIX_FMT_UYVY,
83 },
84 {
85 .name = "Greyscale",
86 .guid = UVC_GUID_FORMAT_Y800,
87 .fcc = V4L2_PIX_FMT_GREY,
88 },
89 {
90 .name = "RGB Bayer",
91 .guid = UVC_GUID_FORMAT_BY8,
92 .fcc = V4L2_PIX_FMT_SBGGR8,
93 },
94};
95
96/* ------------------------------------------------------------------------
97 * Utility functions
98 */
99
100struct usb_host_endpoint *uvc_find_endpoint(struct usb_host_interface *alts,
101 __u8 epaddr)
102{
103 struct usb_host_endpoint *ep;
104 unsigned int i;
105
106 for (i = 0; i < alts->desc.bNumEndpoints; ++i) {
107 ep = &alts->endpoint[i];
108 if (ep->desc.bEndpointAddress == epaddr)
109 return ep;
110 }
111
112 return NULL;
113}
114
115static struct uvc_format_desc *uvc_format_by_guid(const __u8 guid[16])
116{
117 unsigned int len = ARRAY_SIZE(uvc_fmts);
118 unsigned int i;
119
120 for (i = 0; i < len; ++i) {
121 if (memcmp(guid, uvc_fmts[i].guid, 16) == 0)
122 return &uvc_fmts[i];
123 }
124
125 return NULL;
126}
127
128static __u32 uvc_colorspace(const __u8 primaries)
129{
130 static const __u8 colorprimaries[] = {
131 0,
132 V4L2_COLORSPACE_SRGB,
133 V4L2_COLORSPACE_470_SYSTEM_M,
134 V4L2_COLORSPACE_470_SYSTEM_BG,
135 V4L2_COLORSPACE_SMPTE170M,
136 V4L2_COLORSPACE_SMPTE240M,
137 };
138
139 if (primaries < ARRAY_SIZE(colorprimaries))
140 return colorprimaries[primaries];
141
142 return 0;
143}
144
145/* Simplify a fraction using a simple continued fraction decomposition. The
146 * idea here is to convert fractions such as 333333/10000000 to 1/30 using
147 * 32 bit arithmetic only. The algorithm is not perfect and relies upon two
148 * arbitrary parameters to remove non-significative terms from the simple
149 * continued fraction decomposition. Using 8 and 333 for n_terms and threshold
150 * respectively seems to give nice results.
151 */
152void uvc_simplify_fraction(uint32_t *numerator, uint32_t *denominator,
153 unsigned int n_terms, unsigned int threshold)
154{
155 uint32_t *an;
156 uint32_t x, y, r;
157 unsigned int i, n;
158
159 an = kmalloc(n_terms * sizeof *an, GFP_KERNEL);
160 if (an == NULL)
161 return;
162
163 /* Convert the fraction to a simple continued fraction. See
164 * http://mathforum.org/dr.math/faq/faq.fractions.html
165 * Stop if the current term is bigger than or equal to the given
166 * threshold.
167 */
168 x = *numerator;
169 y = *denominator;
170
171 for (n = 0; n < n_terms && y != 0; ++n) {
172 an[n] = x / y;
173 if (an[n] >= threshold) {
174 if (n < 2)
175 n++;
176 break;
177 }
178
179 r = x - an[n] * y;
180 x = y;
181 y = r;
182 }
183
184 /* Expand the simple continued fraction back to an integer fraction. */
185 x = 0;
186 y = 1;
187
188 for (i = n; i > 0; --i) {
189 r = y;
190 y = an[i-1] * y + x;
191 x = r;
192 }
193
194 *numerator = y;
195 *denominator = x;
196 kfree(an);
197}
198
199/* Convert a fraction to a frame interval in 100ns multiples. The idea here is
200 * to compute numerator / denominator * 10000000 using 32 bit fixed point
201 * arithmetic only.
202 */
203uint32_t uvc_fraction_to_interval(uint32_t numerator, uint32_t denominator)
204{
205 uint32_t multiplier;
206
207 /* Saturate the result if the operation would overflow. */
208 if (denominator == 0 ||
209 numerator/denominator >= ((uint32_t)-1)/10000000)
210 return (uint32_t)-1;
211
212 /* Divide both the denominator and the multiplier by two until
213 * numerator * multiplier doesn't overflow. If anyone knows a better
214 * algorithm please let me know.
215 */
216 multiplier = 10000000;
217 while (numerator > ((uint32_t)-1)/multiplier) {
218 multiplier /= 2;
219 denominator /= 2;
220 }
221
222 return denominator ? numerator * multiplier / denominator : 0;
223}
224
225/* ------------------------------------------------------------------------
226 * Terminal and unit management
227 */
228
229static struct uvc_entity *uvc_entity_by_id(struct uvc_device *dev, int id)
230{
231 struct uvc_entity *entity;
232
233 list_for_each_entry(entity, &dev->entities, list) {
234 if (entity->id == id)
235 return entity;
236 }
237
238 return NULL;
239}
240
241static struct uvc_entity *uvc_entity_by_reference(struct uvc_device *dev,
242 int id, struct uvc_entity *entity)
243{
244 unsigned int i;
245
246 if (entity == NULL)
247 entity = list_entry(&dev->entities, struct uvc_entity, list);
248
249 list_for_each_entry_continue(entity, &dev->entities, list) {
250 switch (UVC_ENTITY_TYPE(entity)) {
251 case TT_STREAMING:
252 if (entity->output.bSourceID == id)
253 return entity;
254 break;
255
256 case VC_PROCESSING_UNIT:
257 if (entity->processing.bSourceID == id)
258 return entity;
259 break;
260
261 case VC_SELECTOR_UNIT:
262 for (i = 0; i < entity->selector.bNrInPins; ++i)
263 if (entity->selector.baSourceID[i] == id)
264 return entity;
265 break;
266
267 case VC_EXTENSION_UNIT:
268 for (i = 0; i < entity->extension.bNrInPins; ++i)
269 if (entity->extension.baSourceID[i] == id)
270 return entity;
271 break;
272 }
273 }
274
275 return NULL;
276}
277
278/* ------------------------------------------------------------------------
279 * Descriptors handling
280 */
281
282static int uvc_parse_format(struct uvc_device *dev,
283 struct uvc_streaming *streaming, struct uvc_format *format,
284 __u32 **intervals, unsigned char *buffer, int buflen)
285{
286 struct usb_interface *intf = streaming->intf;
287 struct usb_host_interface *alts = intf->cur_altsetting;
288 struct uvc_format_desc *fmtdesc;
289 struct uvc_frame *frame;
290 const unsigned char *start = buffer;
291 unsigned int interval;
292 unsigned int i, n;
293 __u8 ftype;
294
295 format->type = buffer[2];
296 format->index = buffer[3];
297
298 switch (buffer[2]) {
299 case VS_FORMAT_UNCOMPRESSED:
300 case VS_FORMAT_FRAME_BASED:
301 if (buflen < 27) {
302 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming"
303 "interface %d FORMAT error\n",
304 dev->udev->devnum,
305 alts->desc.bInterfaceNumber);
306 return -EINVAL;
307 }
308
309 /* Find the format descriptor from its GUID. */
310 fmtdesc = uvc_format_by_guid(&buffer[5]);
311
312 if (fmtdesc != NULL) {
313 strncpy(format->name, fmtdesc->name,
314 sizeof format->name);
315 format->fcc = fmtdesc->fcc;
316 } else {
317 uvc_printk(KERN_INFO, "Unknown video format "
318 UVC_GUID_FORMAT "\n",
319 UVC_GUID_ARGS(&buffer[5]));
320 snprintf(format->name, sizeof format->name,
321 UVC_GUID_FORMAT, UVC_GUID_ARGS(&buffer[5]));
322 format->fcc = 0;
323 }
324
325 format->bpp = buffer[21];
326 if (buffer[2] == VS_FORMAT_UNCOMPRESSED) {
327 ftype = VS_FRAME_UNCOMPRESSED;
328 } else {
329 ftype = VS_FRAME_FRAME_BASED;
330 if (buffer[27])
331 format->flags = UVC_FMT_FLAG_COMPRESSED;
332 }
333 break;
334
335 case VS_FORMAT_MJPEG:
336 if (buflen < 11) {
337 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming"
338 "interface %d FORMAT error\n",
339 dev->udev->devnum,
340 alts->desc.bInterfaceNumber);
341 return -EINVAL;
342 }
343
344 strncpy(format->name, "MJPEG", sizeof format->name);
345 format->fcc = V4L2_PIX_FMT_MJPEG;
346 format->flags = UVC_FMT_FLAG_COMPRESSED;
347 format->bpp = 0;
348 ftype = VS_FRAME_MJPEG;
349 break;
350
351 case VS_FORMAT_DV:
352 if (buflen < 9) {
353 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming"
354 "interface %d FORMAT error\n",
355 dev->udev->devnum,
356 alts->desc.bInterfaceNumber);
357 return -EINVAL;
358 }
359
360 switch (buffer[8] & 0x7f) {
361 case 0:
362 strncpy(format->name, "SD-DV", sizeof format->name);
363 break;
364 case 1:
365 strncpy(format->name, "SDL-DV", sizeof format->name);
366 break;
367 case 2:
368 strncpy(format->name, "HD-DV", sizeof format->name);
369 break;
370 default:
371 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming"
372 "interface %d: unknown DV format %u\n",
373 dev->udev->devnum,
374 alts->desc.bInterfaceNumber, buffer[8]);
375 return -EINVAL;
376 }
377
378 strncat(format->name, buffer[8] & (1 << 7) ? " 60Hz" : " 50Hz",
379 sizeof format->name);
380
381 format->fcc = V4L2_PIX_FMT_DV;
382 format->flags = UVC_FMT_FLAG_COMPRESSED | UVC_FMT_FLAG_STREAM;
383 format->bpp = 0;
384 ftype = 0;
385
386 /* Create a dummy frame descriptor. */
387 frame = &format->frame[0];
388 memset(&format->frame[0], 0, sizeof format->frame[0]);
389 frame->bFrameIntervalType = 1;
390 frame->dwDefaultFrameInterval = 1;
391 frame->dwFrameInterval = *intervals;
392 *(*intervals)++ = 1;
393 format->nframes = 1;
394 break;
395
396 case VS_FORMAT_MPEG2TS:
397 case VS_FORMAT_STREAM_BASED:
398 /* Not supported yet. */
399 default:
400 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming"
401 "interface %d unsupported format %u\n",
402 dev->udev->devnum, alts->desc.bInterfaceNumber,
403 buffer[2]);
404 return -EINVAL;
405 }
406
407 uvc_trace(UVC_TRACE_DESCR, "Found format %s.\n", format->name);
408
409 buflen -= buffer[0];
410 buffer += buffer[0];
411
412 /* Parse the frame descriptors. Only uncompressed, MJPEG and frame
413 * based formats have frame descriptors.
414 */
415 while (buflen > 2 && buffer[2] == ftype) {
416 frame = &format->frame[format->nframes];
417
418 if (ftype != VS_FRAME_FRAME_BASED)
419 n = buflen > 25 ? buffer[25] : 0;
420 else
421 n = buflen > 21 ? buffer[21] : 0;
422
423 n = n ? n : 3;
424
425 if (buflen < 26 + 4*n) {
426 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming"
427 "interface %d FRAME error\n", dev->udev->devnum,
428 alts->desc.bInterfaceNumber);
429 return -EINVAL;
430 }
431
432 frame->bFrameIndex = buffer[3];
433 frame->bmCapabilities = buffer[4];
434 frame->wWidth = le16_to_cpup((__le16 *)&buffer[5]);
435 frame->wHeight = le16_to_cpup((__le16 *)&buffer[7]);
436 frame->dwMinBitRate = le32_to_cpup((__le32 *)&buffer[9]);
437 frame->dwMaxBitRate = le32_to_cpup((__le32 *)&buffer[13]);
438 if (ftype != VS_FRAME_FRAME_BASED) {
439 frame->dwMaxVideoFrameBufferSize =
440 le32_to_cpup((__le32 *)&buffer[17]);
441 frame->dwDefaultFrameInterval =
442 le32_to_cpup((__le32 *)&buffer[21]);
443 frame->bFrameIntervalType = buffer[25];
444 } else {
445 frame->dwMaxVideoFrameBufferSize = 0;
446 frame->dwDefaultFrameInterval =
447 le32_to_cpup((__le32 *)&buffer[17]);
448 frame->bFrameIntervalType = buffer[21];
449 }
450 frame->dwFrameInterval = *intervals;
451
452 /* Several UVC chipsets screw up dwMaxVideoFrameBufferSize
453 * completely. Observed behaviours range from setting the
454 * value to 1.1x the actual frame size of hardwiring the
455 * 16 low bits to 0. This results in a higher than necessary
456 * memory usage as well as a wrong image size information. For
457 * uncompressed formats this can be fixed by computing the
458 * value from the frame size.
459 */
460 if (!(format->flags & UVC_FMT_FLAG_COMPRESSED))
461 frame->dwMaxVideoFrameBufferSize = format->bpp
462 * frame->wWidth * frame->wHeight / 8;
463
464 /* Some bogus devices report dwMinFrameInterval equal to
465 * dwMaxFrameInterval and have dwFrameIntervalStep set to
466 * zero. Setting all null intervals to 1 fixes the problem and
467 * some other divisions by zero which could happen.
468 */
469 for (i = 0; i < n; ++i) {
470 interval = le32_to_cpup((__le32 *)&buffer[26+4*i]);
471 *(*intervals)++ = interval ? interval : 1;
472 }
473
474 /* Make sure that the default frame interval stays between
475 * the boundaries.
476 */
477 n -= frame->bFrameIntervalType ? 1 : 2;
478 frame->dwDefaultFrameInterval =
479 min(frame->dwFrameInterval[n],
480 max(frame->dwFrameInterval[0],
481 frame->dwDefaultFrameInterval));
482
483 uvc_trace(UVC_TRACE_DESCR, "- %ux%u (%u.%u fps)\n",
484 frame->wWidth, frame->wHeight,
485 10000000/frame->dwDefaultFrameInterval,
486 (100000000/frame->dwDefaultFrameInterval)%10);
487
488 format->nframes++;
489 buflen -= buffer[0];
490 buffer += buffer[0];
491 }
492
493 if (buflen > 2 && buffer[2] == VS_STILL_IMAGE_FRAME) {
494 buflen -= buffer[0];
495 buffer += buffer[0];
496 }
497
498 if (buflen > 2 && buffer[2] == VS_COLORFORMAT) {
499 if (buflen < 6) {
500 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming"
501 "interface %d COLORFORMAT error\n",
502 dev->udev->devnum,
503 alts->desc.bInterfaceNumber);
504 return -EINVAL;
505 }
506
507 format->colorspace = uvc_colorspace(buffer[3]);
508
509 buflen -= buffer[0];
510 buffer += buffer[0];
511 }
512
513 return buffer - start;
514}
515
516static int uvc_parse_streaming(struct uvc_device *dev,
517 struct usb_interface *intf)
518{
519 struct uvc_streaming *streaming = NULL;
520 struct uvc_format *format;
521 struct uvc_frame *frame;
522 struct usb_host_interface *alts = &intf->altsetting[0];
523 unsigned char *_buffer, *buffer = alts->extra;
524 int _buflen, buflen = alts->extralen;
525 unsigned int nformats = 0, nframes = 0, nintervals = 0;
526 unsigned int size, i, n, p;
527 __u32 *interval;
528 __u16 psize;
529 int ret = -EINVAL;
530
531 if (intf->cur_altsetting->desc.bInterfaceSubClass
532 != SC_VIDEOSTREAMING) {
533 uvc_trace(UVC_TRACE_DESCR, "device %d interface %d isn't a "
534 "video streaming interface\n", dev->udev->devnum,
535 intf->altsetting[0].desc.bInterfaceNumber);
536 return -EINVAL;
537 }
538
539 if (usb_driver_claim_interface(&uvc_driver.driver, intf, dev)) {
540 uvc_trace(UVC_TRACE_DESCR, "device %d interface %d is already "
541 "claimed\n", dev->udev->devnum,
542 intf->altsetting[0].desc.bInterfaceNumber);
543 return -EINVAL;
544 }
545
546 streaming = kzalloc(sizeof *streaming, GFP_KERNEL);
547 if (streaming == NULL) {
548 usb_driver_release_interface(&uvc_driver.driver, intf);
549 return -EINVAL;
550 }
551
552 mutex_init(&streaming->mutex);
553 streaming->intf = usb_get_intf(intf);
554 streaming->intfnum = intf->cur_altsetting->desc.bInterfaceNumber;
555
556 /* The Pico iMage webcam has its class-specific interface descriptors
557 * after the endpoint descriptors.
558 */
559 if (buflen == 0) {
560 for (i = 0; i < alts->desc.bNumEndpoints; ++i) {
561 struct usb_host_endpoint *ep = &alts->endpoint[i];
562
563 if (ep->extralen == 0)
564 continue;
565
566 if (ep->extralen > 2 &&
567 ep->extra[1] == USB_DT_CS_INTERFACE) {
568 uvc_trace(UVC_TRACE_DESCR, "trying extra data "
569 "from endpoint %u.\n", i);
570 buffer = alts->endpoint[i].extra;
571 buflen = alts->endpoint[i].extralen;
572 break;
573 }
574 }
575 }
576
577 /* Skip the standard interface descriptors. */
578 while (buflen > 2 && buffer[1] != USB_DT_CS_INTERFACE) {
579 buflen -= buffer[0];
580 buffer += buffer[0];
581 }
582
583 if (buflen <= 2) {
584 uvc_trace(UVC_TRACE_DESCR, "no class-specific streaming "
585 "interface descriptors found.\n");
586 goto error;
587 }
588
589 /* Parse the header descriptor. */
590 if (buffer[2] == VS_OUTPUT_HEADER) {
591 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming interface "
592 "%d OUTPUT HEADER descriptor is not supported.\n",
593 dev->udev->devnum, alts->desc.bInterfaceNumber);
594 goto error;
595 } else if (buffer[2] == VS_INPUT_HEADER) {
596 p = buflen >= 5 ? buffer[3] : 0;
597 n = buflen >= 12 ? buffer[12] : 0;
598
599 if (buflen < 13 + p*n || buffer[2] != VS_INPUT_HEADER) {
600 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
601 "interface %d INPUT HEADER descriptor is "
602 "invalid.\n", dev->udev->devnum,
603 alts->desc.bInterfaceNumber);
604 goto error;
605 }
606
607 streaming->header.bNumFormats = p;
608 streaming->header.bEndpointAddress = buffer[6];
609 streaming->header.bmInfo = buffer[7];
610 streaming->header.bTerminalLink = buffer[8];
611 streaming->header.bStillCaptureMethod = buffer[9];
612 streaming->header.bTriggerSupport = buffer[10];
613 streaming->header.bTriggerUsage = buffer[11];
614 streaming->header.bControlSize = n;
615
616 streaming->header.bmaControls = kmalloc(p*n, GFP_KERNEL);
617 if (streaming->header.bmaControls == NULL) {
618 ret = -ENOMEM;
619 goto error;
620 }
621
622 memcpy(streaming->header.bmaControls, &buffer[13], p*n);
623 } else {
624 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming interface "
625 "%d HEADER descriptor not found.\n", dev->udev->devnum,
626 alts->desc.bInterfaceNumber);
627 goto error;
628 }
629
630 buflen -= buffer[0];
631 buffer += buffer[0];
632
633 _buffer = buffer;
634 _buflen = buflen;
635
636 /* Count the format and frame descriptors. */
637 while (_buflen > 2) {
638 switch (_buffer[2]) {
639 case VS_FORMAT_UNCOMPRESSED:
640 case VS_FORMAT_MJPEG:
641 case VS_FORMAT_FRAME_BASED:
642 nformats++;
643 break;
644
645 case VS_FORMAT_DV:
646 /* DV format has no frame descriptor. We will create a
647 * dummy frame descriptor with a dummy frame interval.
648 */
649 nformats++;
650 nframes++;
651 nintervals++;
652 break;
653
654 case VS_FORMAT_MPEG2TS:
655 case VS_FORMAT_STREAM_BASED:
656 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
657 "interface %d FORMAT %u is not supported.\n",
658 dev->udev->devnum,
659 alts->desc.bInterfaceNumber, _buffer[2]);
660 break;
661
662 case VS_FRAME_UNCOMPRESSED:
663 case VS_FRAME_MJPEG:
664 nframes++;
665 if (_buflen > 25)
666 nintervals += _buffer[25] ? _buffer[25] : 3;
667 break;
668
669 case VS_FRAME_FRAME_BASED:
670 nframes++;
671 if (_buflen > 21)
672 nintervals += _buffer[21] ? _buffer[21] : 3;
673 break;
674 }
675
676 _buflen -= _buffer[0];
677 _buffer += _buffer[0];
678 }
679
680 if (nformats == 0) {
681 uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming interface "
682 "%d has no supported formats defined.\n",
683 dev->udev->devnum, alts->desc.bInterfaceNumber);
684 goto error;
685 }
686
687 size = nformats * sizeof *format + nframes * sizeof *frame
688 + nintervals * sizeof *interval;
689 format = kzalloc(size, GFP_KERNEL);
690 if (format == NULL) {
691 ret = -ENOMEM;
692 goto error;
693 }
694
695 frame = (struct uvc_frame *)&format[nformats];
696 interval = (__u32 *)&frame[nframes];
697
698 streaming->format = format;
699 streaming->nformats = nformats;
700
701 /* Parse the format descriptors. */
702 while (buflen > 2) {
703 switch (buffer[2]) {
704 case VS_FORMAT_UNCOMPRESSED:
705 case VS_FORMAT_MJPEG:
706 case VS_FORMAT_DV:
707 case VS_FORMAT_FRAME_BASED:
708 format->frame = frame;
709 ret = uvc_parse_format(dev, streaming, format,
710 &interval, buffer, buflen);
711 if (ret < 0)
712 goto error;
713
714 frame += format->nframes;
715 format++;
716
717 buflen -= ret;
718 buffer += ret;
719 continue;
720
721 default:
722 break;
723 }
724
725 buflen -= buffer[0];
726 buffer += buffer[0];
727 }
728
729 /* Parse the alternate settings to find the maximum bandwidth. */
730 for (i = 0; i < intf->num_altsetting; ++i) {
731 struct usb_host_endpoint *ep;
732 alts = &intf->altsetting[i];
733 ep = uvc_find_endpoint(alts,
734 streaming->header.bEndpointAddress);
735 if (ep == NULL)
736 continue;
737
738 psize = le16_to_cpu(ep->desc.wMaxPacketSize);
739 psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3));
740 if (psize > streaming->maxpsize)
741 streaming->maxpsize = psize;
742 }
743
744 list_add_tail(&streaming->list, &dev->streaming);
745 return 0;
746
747error:
748 usb_driver_release_interface(&uvc_driver.driver, intf);
749 usb_put_intf(intf);
750 kfree(streaming->format);
751 kfree(streaming->header.bmaControls);
752 kfree(streaming);
753 return ret;
754}
755
756/* Parse vendor-specific extensions. */
757static int uvc_parse_vendor_control(struct uvc_device *dev,
758 const unsigned char *buffer, int buflen)
759{
760 struct usb_device *udev = dev->udev;
761 struct usb_host_interface *alts = dev->intf->cur_altsetting;
762 struct uvc_entity *unit;
763 unsigned int n, p;
764 int handled = 0;
765
766 switch (le16_to_cpu(dev->udev->descriptor.idVendor)) {
767 case 0x046d: /* Logitech */
768 if (buffer[1] != 0x41 || buffer[2] != 0x01)
769 break;
770
771 /* Logitech implements several vendor specific functions
772 * through vendor specific extension units (LXU).
773 *
774 * The LXU descriptors are similar to XU descriptors
775 * (see "USB Device Video Class for Video Devices", section
776 * 3.7.2.6 "Extension Unit Descriptor") with the following
777 * differences:
778 *
779 * ----------------------------------------------------------
780 * 0 bLength 1 Number
781 * Size of this descriptor, in bytes: 24+p+n*2
782 * ----------------------------------------------------------
783 * 23+p+n bmControlsType N Bitmap
784 * Individual bits in the set are defined:
785 * 0: Absolute
786 * 1: Relative
787 *
788 * This bitset is mapped exactly the same as bmControls.
789 * ----------------------------------------------------------
790 * 23+p+n*2 bReserved 1 Boolean
791 * ----------------------------------------------------------
792 * 24+p+n*2 iExtension 1 Index
793 * Index of a string descriptor that describes this
794 * extension unit.
795 * ----------------------------------------------------------
796 */
797 p = buflen >= 22 ? buffer[21] : 0;
798 n = buflen >= 25 + p ? buffer[22+p] : 0;
799
800 if (buflen < 25 + p + 2*n) {
801 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
802 "interface %d EXTENSION_UNIT error\n",
803 udev->devnum, alts->desc.bInterfaceNumber);
804 break;
805 }
806
807 unit = kzalloc(sizeof *unit + p + 2*n, GFP_KERNEL);
808 if (unit == NULL)
809 return -ENOMEM;
810
811 unit->id = buffer[3];
812 unit->type = VC_EXTENSION_UNIT;
813 memcpy(unit->extension.guidExtensionCode, &buffer[4], 16);
814 unit->extension.bNumControls = buffer[20];
815 unit->extension.bNrInPins =
816 le16_to_cpup((__le16 *)&buffer[21]);
817 unit->extension.baSourceID = (__u8 *)unit + sizeof *unit;
818 memcpy(unit->extension.baSourceID, &buffer[22], p);
819 unit->extension.bControlSize = buffer[22+p];
820 unit->extension.bmControls = (__u8 *)unit + sizeof *unit + p;
821 unit->extension.bmControlsType = (__u8 *)unit + sizeof *unit
822 + p + n;
823 memcpy(unit->extension.bmControls, &buffer[23+p], 2*n);
824
825 if (buffer[24+p+2*n] != 0)
826 usb_string(udev, buffer[24+p+2*n], unit->name,
827 sizeof unit->name);
828 else
829 sprintf(unit->name, "Extension %u", buffer[3]);
830
831 list_add_tail(&unit->list, &dev->entities);
832 handled = 1;
833 break;
834 }
835
836 return handled;
837}
838
839static int uvc_parse_standard_control(struct uvc_device *dev,
840 const unsigned char *buffer, int buflen)
841{
842 struct usb_device *udev = dev->udev;
843 struct uvc_entity *unit, *term;
844 struct usb_interface *intf;
845 struct usb_host_interface *alts = dev->intf->cur_altsetting;
846 unsigned int i, n, p, len;
847 __u16 type;
848
849 switch (buffer[2]) {
850 case VC_HEADER:
851 n = buflen >= 12 ? buffer[11] : 0;
852
853 if (buflen < 12 || buflen < 12 + n) {
854 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
855 "interface %d HEADER error\n", udev->devnum,
856 alts->desc.bInterfaceNumber);
857 return -EINVAL;
858 }
859
860 dev->uvc_version = le16_to_cpup((__le16 *)&buffer[3]);
861 dev->clock_frequency = le32_to_cpup((__le32 *)&buffer[7]);
862
863 /* Parse all USB Video Streaming interfaces. */
864 for (i = 0; i < n; ++i) {
865 intf = usb_ifnum_to_if(udev, buffer[12+i]);
866 if (intf == NULL) {
867 uvc_trace(UVC_TRACE_DESCR, "device %d "
868 "interface %d doesn't exists\n",
869 udev->devnum, i);
870 continue;
871 }
872
873 uvc_parse_streaming(dev, intf);
874 }
875 break;
876
877 case VC_INPUT_TERMINAL:
878 if (buflen < 8) {
879 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
880 "interface %d INPUT_TERMINAL error\n",
881 udev->devnum, alts->desc.bInterfaceNumber);
882 return -EINVAL;
883 }
884
885 /* Make sure the terminal type MSB is not null, otherwise it
886 * could be confused with a unit.
887 */
888 type = le16_to_cpup((__le16 *)&buffer[4]);
889 if ((type & 0xff00) == 0) {
890 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
891 "interface %d INPUT_TERMINAL %d has invalid "
892 "type 0x%04x, skipping\n", udev->devnum,
893 alts->desc.bInterfaceNumber,
894 buffer[3], type);
895 return 0;
896 }
897
898 n = 0;
899 p = 0;
900 len = 8;
901
902 if (type == ITT_CAMERA) {
903 n = buflen >= 15 ? buffer[14] : 0;
904 len = 15;
905
906 } else if (type == ITT_MEDIA_TRANSPORT_INPUT) {
907 n = buflen >= 9 ? buffer[8] : 0;
908 p = buflen >= 10 + n ? buffer[9+n] : 0;
909 len = 10;
910 }
911
912 if (buflen < len + n + p) {
913 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
914 "interface %d INPUT_TERMINAL error\n",
915 udev->devnum, alts->desc.bInterfaceNumber);
916 return -EINVAL;
917 }
918
919 term = kzalloc(sizeof *term + n + p, GFP_KERNEL);
920 if (term == NULL)
921 return -ENOMEM;
922
923 term->id = buffer[3];
924 term->type = type | UVC_TERM_INPUT;
925
926 if (UVC_ENTITY_TYPE(term) == ITT_CAMERA) {
927 term->camera.bControlSize = n;
928 term->camera.bmControls = (__u8 *)term + sizeof *term;
929 term->camera.wObjectiveFocalLengthMin =
930 le16_to_cpup((__le16 *)&buffer[8]);
931 term->camera.wObjectiveFocalLengthMax =
932 le16_to_cpup((__le16 *)&buffer[10]);
933 term->camera.wOcularFocalLength =
934 le16_to_cpup((__le16 *)&buffer[12]);
935 memcpy(term->camera.bmControls, &buffer[15], n);
936 } else if (UVC_ENTITY_TYPE(term) == ITT_MEDIA_TRANSPORT_INPUT) {
937 term->media.bControlSize = n;
938 term->media.bmControls = (__u8 *)term + sizeof *term;
939 term->media.bTransportModeSize = p;
940 term->media.bmTransportModes = (__u8 *)term
941 + sizeof *term + n;
942 memcpy(term->media.bmControls, &buffer[9], n);
943 memcpy(term->media.bmTransportModes, &buffer[10+n], p);
944 }
945
946 if (buffer[7] != 0)
947 usb_string(udev, buffer[7], term->name,
948 sizeof term->name);
949 else if (UVC_ENTITY_TYPE(term) == ITT_CAMERA)
950 sprintf(term->name, "Camera %u", buffer[3]);
951 else if (UVC_ENTITY_TYPE(term) == ITT_MEDIA_TRANSPORT_INPUT)
952 sprintf(term->name, "Media %u", buffer[3]);
953 else
954 sprintf(term->name, "Input %u", buffer[3]);
955
956 list_add_tail(&term->list, &dev->entities);
957 break;
958
959 case VC_OUTPUT_TERMINAL:
960 if (buflen < 9) {
961 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
962 "interface %d OUTPUT_TERMINAL error\n",
963 udev->devnum, alts->desc.bInterfaceNumber);
964 return -EINVAL;
965 }
966
967 /* Make sure the terminal type MSB is not null, otherwise it
968 * could be confused with a unit.
969 */
970 type = le16_to_cpup((__le16 *)&buffer[4]);
971 if ((type & 0xff00) == 0) {
972 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
973 "interface %d OUTPUT_TERMINAL %d has invalid "
974 "type 0x%04x, skipping\n", udev->devnum,
975 alts->desc.bInterfaceNumber, buffer[3], type);
976 return 0;
977 }
978
979 term = kzalloc(sizeof *term, GFP_KERNEL);
980 if (term == NULL)
981 return -ENOMEM;
982
983 term->id = buffer[3];
984 term->type = type | UVC_TERM_OUTPUT;
985 term->output.bSourceID = buffer[7];
986
987 if (buffer[8] != 0)
988 usb_string(udev, buffer[8], term->name,
989 sizeof term->name);
990 else
991 sprintf(term->name, "Output %u", buffer[3]);
992
993 list_add_tail(&term->list, &dev->entities);
994 break;
995
996 case VC_SELECTOR_UNIT:
997 p = buflen >= 5 ? buffer[4] : 0;
998
999 if (buflen < 5 || buflen < 6 + p) {
1000 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
1001 "interface %d SELECTOR_UNIT error\n",
1002 udev->devnum, alts->desc.bInterfaceNumber);
1003 return -EINVAL;
1004 }
1005
1006 unit = kzalloc(sizeof *unit + p, GFP_KERNEL);
1007 if (unit == NULL)
1008 return -ENOMEM;
1009
1010 unit->id = buffer[3];
1011 unit->type = buffer[2];
1012 unit->selector.bNrInPins = buffer[4];
1013 unit->selector.baSourceID = (__u8 *)unit + sizeof *unit;
1014 memcpy(unit->selector.baSourceID, &buffer[5], p);
1015
1016 if (buffer[5+p] != 0)
1017 usb_string(udev, buffer[5+p], unit->name,
1018 sizeof unit->name);
1019 else
1020 sprintf(unit->name, "Selector %u", buffer[3]);
1021
1022 list_add_tail(&unit->list, &dev->entities);
1023 break;
1024
1025 case VC_PROCESSING_UNIT:
1026 n = buflen >= 8 ? buffer[7] : 0;
1027 p = dev->uvc_version >= 0x0110 ? 10 : 9;
1028
1029 if (buflen < p + n) {
1030 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
1031 "interface %d PROCESSING_UNIT error\n",
1032 udev->devnum, alts->desc.bInterfaceNumber);
1033 return -EINVAL;
1034 }
1035
1036 unit = kzalloc(sizeof *unit + n, GFP_KERNEL);
1037 if (unit == NULL)
1038 return -ENOMEM;
1039
1040 unit->id = buffer[3];
1041 unit->type = buffer[2];
1042 unit->processing.bSourceID = buffer[4];
1043 unit->processing.wMaxMultiplier =
1044 le16_to_cpup((__le16 *)&buffer[5]);
1045 unit->processing.bControlSize = buffer[7];
1046 unit->processing.bmControls = (__u8 *)unit + sizeof *unit;
1047 memcpy(unit->processing.bmControls, &buffer[8], n);
1048 if (dev->uvc_version >= 0x0110)
1049 unit->processing.bmVideoStandards = buffer[9+n];
1050
1051 if (buffer[8+n] != 0)
1052 usb_string(udev, buffer[8+n], unit->name,
1053 sizeof unit->name);
1054 else
1055 sprintf(unit->name, "Processing %u", buffer[3]);
1056
1057 list_add_tail(&unit->list, &dev->entities);
1058 break;
1059
1060 case VC_EXTENSION_UNIT:
1061 p = buflen >= 22 ? buffer[21] : 0;
1062 n = buflen >= 24 + p ? buffer[22+p] : 0;
1063
1064 if (buflen < 24 + p + n) {
1065 uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
1066 "interface %d EXTENSION_UNIT error\n",
1067 udev->devnum, alts->desc.bInterfaceNumber);
1068 return -EINVAL;
1069 }
1070
1071 unit = kzalloc(sizeof *unit + p + n, GFP_KERNEL);
1072 if (unit == NULL)
1073 return -ENOMEM;
1074
1075 unit->id = buffer[3];
1076 unit->type = buffer[2];
1077 memcpy(unit->extension.guidExtensionCode, &buffer[4], 16);
1078 unit->extension.bNumControls = buffer[20];
1079 unit->extension.bNrInPins =
1080 le16_to_cpup((__le16 *)&buffer[21]);
1081 unit->extension.baSourceID = (__u8 *)unit + sizeof *unit;
1082 memcpy(unit->extension.baSourceID, &buffer[22], p);
1083 unit->extension.bControlSize = buffer[22+p];
1084 unit->extension.bmControls = (__u8 *)unit + sizeof *unit + p;
1085 memcpy(unit->extension.bmControls, &buffer[23+p], n);
1086
1087 if (buffer[23+p+n] != 0)
1088 usb_string(udev, buffer[23+p+n], unit->name,
1089 sizeof unit->name);
1090 else
1091 sprintf(unit->name, "Extension %u", buffer[3]);
1092
1093 list_add_tail(&unit->list, &dev->entities);
1094 break;
1095
1096 default:
1097 uvc_trace(UVC_TRACE_DESCR, "Found an unknown CS_INTERFACE "
1098 "descriptor (%u)\n", buffer[2]);
1099 break;
1100 }
1101
1102 return 0;
1103}
1104
1105static int uvc_parse_control(struct uvc_device *dev)
1106{
1107 struct usb_host_interface *alts = dev->intf->cur_altsetting;
1108 unsigned char *buffer = alts->extra;
1109 int buflen = alts->extralen;
1110 int ret;
1111
1112 /* Parse the default alternate setting only, as the UVC specification
1113 * defines a single alternate setting, the default alternate setting
1114 * zero.
1115 */
1116
1117 while (buflen > 2) {
1118 if (uvc_parse_vendor_control(dev, buffer, buflen) ||
1119 buffer[1] != USB_DT_CS_INTERFACE)
1120 goto next_descriptor;
1121
1122 if ((ret = uvc_parse_standard_control(dev, buffer, buflen)) < 0)
1123 return ret;
1124
1125next_descriptor:
1126 buflen -= buffer[0];
1127 buffer += buffer[0];
1128 }
1129
1130 /* Check if the optional status endpoint is present. */
1131 if (alts->desc.bNumEndpoints == 1) {
1132 struct usb_host_endpoint *ep = &alts->endpoint[0];
1133 struct usb_endpoint_descriptor *desc = &ep->desc;
1134
1135 if (usb_endpoint_is_int_in(desc) &&
1136 le16_to_cpu(desc->wMaxPacketSize) >= 8 &&
1137 desc->bInterval != 0) {
1138 uvc_trace(UVC_TRACE_DESCR, "Found a Status endpoint "
1139 "(addr %02x).\n", desc->bEndpointAddress);
1140 dev->int_ep = ep;
1141 }
1142 }
1143
1144 return 0;
1145}
1146
1147/* ------------------------------------------------------------------------
1148 * USB probe and disconnect
1149 */
1150
1151/*
1152 * Unregister the video devices.
1153 */
1154static void uvc_unregister_video(struct uvc_device *dev)
1155{
1156 if (dev->video.vdev) {
1157 if (dev->video.vdev->minor == -1)
1158 video_device_release(dev->video.vdev);
1159 else
1160 video_unregister_device(dev->video.vdev);
1161 dev->video.vdev = NULL;
1162 }
1163}
1164
1165/*
1166 * Scan the UVC descriptors to locate a chain starting at an Output Terminal
1167 * and containing the following units:
1168 *
1169 * - a USB Streaming Output Terminal
1170 * - zero or one Processing Unit
1171 * - zero, one or mode single-input Selector Units
1172 * - zero or one multiple-input Selector Units, provided all inputs are
1173 * connected to input terminals
1174 * - zero, one or mode single-input Extension Units
1175 * - one Camera Input Terminal, or one or more External terminals.
1176 *
1177 * A side forward scan is made on each detected entity to check for additional
1178 * extension units.
1179 */
1180static int uvc_scan_chain_entity(struct uvc_video_device *video,
1181 struct uvc_entity *entity)
1182{
1183 switch (UVC_ENTITY_TYPE(entity)) {
1184 case VC_EXTENSION_UNIT:
1185 if (uvc_trace_param & UVC_TRACE_PROBE)
1186 printk(" <- XU %d", entity->id);
1187
1188 if (entity->extension.bNrInPins != 1) {
1189 uvc_trace(UVC_TRACE_DESCR, "Extension unit %d has more "
1190 "than 1 input pin.\n", entity->id);
1191 return -1;
1192 }
1193
1194 list_add_tail(&entity->chain, &video->extensions);
1195 break;
1196
1197 case VC_PROCESSING_UNIT:
1198 if (uvc_trace_param & UVC_TRACE_PROBE)
1199 printk(" <- PU %d", entity->id);
1200
1201 if (video->processing != NULL) {
1202 uvc_trace(UVC_TRACE_DESCR, "Found multiple "
1203 "Processing Units in chain.\n");
1204 return -1;
1205 }
1206
1207 video->processing = entity;
1208 break;
1209
1210 case VC_SELECTOR_UNIT:
1211 if (uvc_trace_param & UVC_TRACE_PROBE)
1212 printk(" <- SU %d", entity->id);
1213
1214 /* Single-input selector units are ignored. */
1215 if (entity->selector.bNrInPins == 1)
1216 break;
1217
1218 if (video->selector != NULL) {
1219 uvc_trace(UVC_TRACE_DESCR, "Found multiple Selector "
1220 "Units in chain.\n");
1221 return -1;
1222 }
1223
1224 video->selector = entity;
1225 break;
1226
1227 case ITT_VENDOR_SPECIFIC:
1228 case ITT_CAMERA:
1229 case ITT_MEDIA_TRANSPORT_INPUT:
1230 if (uvc_trace_param & UVC_TRACE_PROBE)
1231 printk(" <- IT %d\n", entity->id);
1232
1233 list_add_tail(&entity->chain, &video->iterms);
1234 break;
1235
1236 default:
1237 uvc_trace(UVC_TRACE_DESCR, "Unsupported entity type "
1238 "0x%04x found in chain.\n", UVC_ENTITY_TYPE(entity));
1239 return -1;
1240 }
1241
1242 return 0;
1243}
1244
1245static int uvc_scan_chain_forward(struct uvc_video_device *video,
1246 struct uvc_entity *entity, struct uvc_entity *prev)
1247{
1248 struct uvc_entity *forward;
1249 int found;
1250
1251 /* Forward scan */
1252 forward = NULL;
1253 found = 0;
1254
1255 while (1) {
1256 forward = uvc_entity_by_reference(video->dev, entity->id,
1257 forward);
1258 if (forward == NULL)
1259 break;
1260
1261 if (UVC_ENTITY_TYPE(forward) != VC_EXTENSION_UNIT ||
1262 forward == prev)
1263 continue;
1264
1265 if (forward->extension.bNrInPins != 1) {
1266 uvc_trace(UVC_TRACE_DESCR, "Extension unit %d has"
1267 "more than 1 input pin.\n", entity->id);
1268 return -1;
1269 }
1270
1271 list_add_tail(&forward->chain, &video->extensions);
1272 if (uvc_trace_param & UVC_TRACE_PROBE) {
1273 if (!found)
1274 printk(" (-> XU");
1275
1276 printk(" %d", forward->id);
1277 found = 1;
1278 }
1279 }
1280 if (found)
1281 printk(")");
1282
1283 return 0;
1284}
1285
1286static int uvc_scan_chain_backward(struct uvc_video_device *video,
1287 struct uvc_entity *entity)
1288{
1289 struct uvc_entity *term;
1290 int id = -1, i;
1291
1292 switch (UVC_ENTITY_TYPE(entity)) {
1293 case VC_EXTENSION_UNIT:
1294 id = entity->extension.baSourceID[0];
1295 break;
1296
1297 case VC_PROCESSING_UNIT:
1298 id = entity->processing.bSourceID;
1299 break;
1300
1301 case VC_SELECTOR_UNIT:
1302 /* Single-input selector units are ignored. */
1303 if (entity->selector.bNrInPins == 1) {
1304 id = entity->selector.baSourceID[0];
1305 break;
1306 }
1307
1308 if (uvc_trace_param & UVC_TRACE_PROBE)
1309 printk(" <- IT");
1310
1311 video->selector = entity;
1312 for (i = 0; i < entity->selector.bNrInPins; ++i) {
1313 id = entity->selector.baSourceID[i];
1314 term = uvc_entity_by_id(video->dev, id);
1315 if (term == NULL || !UVC_ENTITY_IS_ITERM(term)) {
1316 uvc_trace(UVC_TRACE_DESCR, "Selector unit %d "
1317 "input %d isn't connected to an "
1318 "input terminal\n", entity->id, i);
1319 return -1;
1320 }
1321
1322 if (uvc_trace_param & UVC_TRACE_PROBE)
1323 printk(" %d", term->id);
1324
1325 list_add_tail(&term->chain, &video->iterms);
1326 uvc_scan_chain_forward(video, term, entity);
1327 }
1328
1329 if (uvc_trace_param & UVC_TRACE_PROBE)
1330 printk("\n");
1331
1332 id = 0;
1333 break;
1334 }
1335
1336 return id;
1337}
1338
1339static int uvc_scan_chain(struct uvc_video_device *video)
1340{
1341 struct uvc_entity *entity, *prev;
1342 int id;
1343
1344 entity = video->oterm;
1345 uvc_trace(UVC_TRACE_PROBE, "Scanning UVC chain: OT %d", entity->id);
1346 id = entity->output.bSourceID;
1347 while (id != 0) {
1348 prev = entity;
1349 entity = uvc_entity_by_id(video->dev, id);
1350 if (entity == NULL) {
1351 uvc_trace(UVC_TRACE_DESCR, "Found reference to "
1352 "unknown entity %d.\n", id);
1353 return -1;
1354 }
1355
1356 /* Process entity */
1357 if (uvc_scan_chain_entity(video, entity) < 0)
1358 return -1;
1359
1360 /* Forward scan */
1361 if (uvc_scan_chain_forward(video, entity, prev) < 0)
1362 return -1;
1363
1364 /* Stop when a terminal is found. */
1365 if (!UVC_ENTITY_IS_UNIT(entity))
1366 break;
1367
1368 /* Backward scan */
1369 id = uvc_scan_chain_backward(video, entity);
1370 if (id < 0)
1371 return id;
1372 }
1373
1374 /* Initialize the video buffers queue. */
1375 uvc_queue_init(&video->queue);
1376
1377 return 0;
1378}
1379
1380/*
1381 * Register the video devices.
1382 *
1383 * The driver currently supports a single video device per control interface
1384 * only. The terminal and units must match the following structure:
1385 *
1386 * ITT_CAMERA -> VC_PROCESSING_UNIT -> VC_EXTENSION_UNIT{0,n} -> TT_STREAMING
1387 *
1388 * The Extension Units, if present, must have a single input pin. The
1389 * Processing Unit and Extension Units can be in any order. Additional
1390 * Extension Units connected to the main chain as single-unit branches are
1391 * also supported.
1392 */
1393static int uvc_register_video(struct uvc_device *dev)
1394{
1395 struct video_device *vdev;
1396 struct uvc_entity *term;
1397 int found = 0, ret;
1398
1399 /* Check if the control interface matches the structure we expect. */
1400 list_for_each_entry(term, &dev->entities, list) {
1401 struct uvc_streaming *streaming;
1402
1403 if (UVC_ENTITY_TYPE(term) != TT_STREAMING)
1404 continue;
1405
1406 memset(&dev->video, 0, sizeof dev->video);
1407 mutex_init(&dev->video.ctrl_mutex);
1408 INIT_LIST_HEAD(&dev->video.iterms);
1409 INIT_LIST_HEAD(&dev->video.extensions);
1410 dev->video.oterm = term;
1411 dev->video.dev = dev;
1412 if (uvc_scan_chain(&dev->video) < 0)
1413 continue;
1414
1415 list_for_each_entry(streaming, &dev->streaming, list) {
1416 if (streaming->header.bTerminalLink == term->id) {
1417 dev->video.streaming = streaming;
1418 found = 1;
1419 break;
1420 }
1421 }
1422
1423 if (found)
1424 break;
1425 }
1426
1427 if (!found) {
1428 uvc_printk(KERN_INFO, "No valid video chain found.\n");
1429 return -1;
1430 }
1431
1432 if (uvc_trace_param & UVC_TRACE_PROBE) {
1433 uvc_printk(KERN_INFO, "Found a valid video chain (");
1434 list_for_each_entry(term, &dev->video.iterms, chain) {
1435 printk("%d", term->id);
1436 if (term->chain.next != &dev->video.iterms)
1437 printk(",");
1438 }
1439 printk(" -> %d).\n", dev->video.oterm->id);
1440 }
1441
1442 /* Initialize the streaming interface with default streaming
1443 * parameters.
1444 */
1445 if ((ret = uvc_video_init(&dev->video)) < 0) {
1446 uvc_printk(KERN_ERR, "Failed to initialize the device "
1447 "(%d).\n", ret);
1448 return ret;
1449 }
1450
1451 /* Register the device with V4L. */
1452 vdev = video_device_alloc();
1453 if (vdev == NULL)
1454 return -1;
1455
1456 /* We already hold a reference to dev->udev. The video device will be
1457 * unregistered before the reference is released, so we don't need to
1458 * get another one.
1459 */
1460 vdev->dev = &dev->intf->dev;
1461 vdev->type = 0;
1462 vdev->type2 = 0;
1463 vdev->minor = -1;
1464 vdev->fops = &uvc_fops;
1465 vdev->release = video_device_release;
1466 strncpy(vdev->name, dev->name, sizeof vdev->name);
1467
1468 /* Set the driver data before calling video_register_device, otherwise
1469 * uvc_v4l2_open might race us.
1470 *
1471 * FIXME: usb_set_intfdata hasn't been called so far. Is that a
1472 * problem ? Does any function which could be called here get
1473 * a pointer to the usb_interface ?
1474 */
1475 dev->video.vdev = vdev;
1476 video_set_drvdata(vdev, &dev->video);
1477
1478 if (video_register_device(vdev, VFL_TYPE_GRABBER, -1) < 0) {
1479 dev->video.vdev = NULL;
1480 video_device_release(vdev);
1481 return -1;
1482 }
1483
1484 return 0;
1485}
1486
1487/*
1488 * Delete the UVC device.
1489 *
1490 * Called by the kernel when the last reference to the uvc_device structure
1491 * is released.
1492 *
1493 * Unregistering the video devices is done here because every opened instance
1494 * must be closed before the device can be unregistered. An alternative would
1495 * have been to use another reference count for uvc_v4l2_open/uvc_release, and
1496 * unregister the video devices on disconnect when that reference count drops
1497 * to zero.
1498 *
1499 * As this function is called after or during disconnect(), all URBs have
1500 * already been canceled by the USB core. There is no need to kill the
1501 * interrupt URB manually.
1502 */
1503void uvc_delete(struct kref *kref)
1504{
1505 struct uvc_device *dev = container_of(kref, struct uvc_device, kref);
1506 struct list_head *p, *n;
1507
1508 /* Unregister the video device */
1509 uvc_unregister_video(dev);
1510 usb_put_intf(dev->intf);
1511 usb_put_dev(dev->udev);
1512
1513 uvc_status_cleanup(dev);
1514 uvc_ctrl_cleanup_device(dev);
1515
1516 list_for_each_safe(p, n, &dev->entities) {
1517 struct uvc_entity *entity;
1518 entity = list_entry(p, struct uvc_entity, list);
1519 kfree(entity);
1520 }
1521
1522 list_for_each_safe(p, n, &dev->streaming) {
1523 struct uvc_streaming *streaming;
1524 streaming = list_entry(p, struct uvc_streaming, list);
1525 usb_driver_release_interface(&uvc_driver.driver,
1526 streaming->intf);
1527 usb_put_intf(streaming->intf);
1528 kfree(streaming->format);
1529 kfree(streaming->header.bmaControls);
1530 kfree(streaming);
1531 }
1532
1533 kfree(dev);
1534}
1535
1536static int uvc_probe(struct usb_interface *intf,
1537 const struct usb_device_id *id)
1538{
1539 struct usb_device *udev = interface_to_usbdev(intf);
1540 struct uvc_device *dev;
1541 int ret;
1542
1543 if (id->idVendor && id->idProduct)
1544 uvc_trace(UVC_TRACE_PROBE, "Probing known UVC device %s "
1545 "(%04x:%04x)\n", udev->devpath, id->idVendor,
1546 id->idProduct);
1547 else
1548 uvc_trace(UVC_TRACE_PROBE, "Probing generic UVC device %s\n",
1549 udev->devpath);
1550
1551 /* Allocate memory for the device and initialize it */
1552 if ((dev = kzalloc(sizeof *dev, GFP_KERNEL)) == NULL)
1553 return -ENOMEM;
1554
1555 INIT_LIST_HEAD(&dev->entities);
1556 INIT_LIST_HEAD(&dev->streaming);
1557 kref_init(&dev->kref);
1558
1559 dev->udev = usb_get_dev(udev);
1560 dev->intf = usb_get_intf(intf);
1561 dev->intfnum = intf->cur_altsetting->desc.bInterfaceNumber;
1562 dev->quirks = id->driver_info | uvc_quirks_param;
1563
1564 if (udev->product != NULL)
1565 strncpy(dev->name, udev->product, sizeof dev->name);
1566 else
1567 snprintf(dev->name, sizeof dev->name,
1568 "UVC Camera (%04x:%04x)",
1569 le16_to_cpu(udev->descriptor.idVendor),
1570 le16_to_cpu(udev->descriptor.idProduct));
1571
1572 /* Parse the Video Class control descriptor */
1573 if (uvc_parse_control(dev) < 0) {
1574 uvc_trace(UVC_TRACE_PROBE, "Unable to parse UVC "
1575 "descriptors.\n");
1576 goto error;
1577 }
1578
1579 uvc_printk(KERN_INFO, "Found UVC %u.%02u device %s (%04x:%04x)\n",
1580 dev->uvc_version >> 8, dev->uvc_version & 0xff,
1581 udev->product ? udev->product : "<unnamed>",
1582 le16_to_cpu(udev->descriptor.idVendor),
1583 le16_to_cpu(udev->descriptor.idProduct));
1584
1585 if (uvc_quirks_param != 0) {
1586 uvc_printk(KERN_INFO, "Forcing device quirks 0x%x by module "
1587 "parameter for testing purpose.\n", uvc_quirks_param);
1588 uvc_printk(KERN_INFO, "Please report required quirks to the "
1589 "linux-uvc-devel mailing list.\n");
1590 }
1591
1592 /* Initialize controls */
1593 if (uvc_ctrl_init_device(dev) < 0)
1594 goto error;
1595
1596 /* Register the video devices */
1597 if (uvc_register_video(dev) < 0)
1598 goto error;
1599
1600 /* Save our data pointer in the interface data */
1601 usb_set_intfdata(intf, dev);
1602
1603 /* Initialize the interrupt URB */
1604 if ((ret = uvc_status_init(dev)) < 0) {
1605 uvc_printk(KERN_INFO, "Unable to initialize the status "
1606 "endpoint (%d), status interrupt will not be "
1607 "supported.\n", ret);
1608 }
1609
1610 uvc_trace(UVC_TRACE_PROBE, "UVC device initialized.\n");
1611 return 0;
1612
1613error:
1614 kref_put(&dev->kref, uvc_delete);
1615 return -ENODEV;
1616}
1617
1618static void uvc_disconnect(struct usb_interface *intf)
1619{
1620 struct uvc_device *dev = usb_get_intfdata(intf);
1621
1622 /* Set the USB interface data to NULL. This can be done outside the
1623 * lock, as there's no other reader.
1624 */
1625 usb_set_intfdata(intf, NULL);
1626
1627 if (intf->cur_altsetting->desc.bInterfaceSubClass == SC_VIDEOSTREAMING)
1628 return;
1629
1630 /* uvc_v4l2_open() might race uvc_disconnect(). A static driver-wide
1631 * lock is needed to prevent uvc_disconnect from releasing its
1632 * reference to the uvc_device instance after uvc_v4l2_open() received
1633 * the pointer to the device (video_devdata) but before it got the
1634 * chance to increase the reference count (kref_get).
1635 */
1636 mutex_lock(&uvc_driver.open_mutex);
1637
1638 dev->state |= UVC_DEV_DISCONNECTED;
1639 kref_put(&dev->kref, uvc_delete);
1640
1641 mutex_unlock(&uvc_driver.open_mutex);
1642}
1643
1644static int uvc_suspend(struct usb_interface *intf, pm_message_t message)
1645{
1646 struct uvc_device *dev = usb_get_intfdata(intf);
1647
1648 uvc_trace(UVC_TRACE_SUSPEND, "Suspending interface %u\n",
1649 intf->cur_altsetting->desc.bInterfaceNumber);
1650
1651 /* Controls are cached on the fly so they don't need to be saved. */
1652 if (intf->cur_altsetting->desc.bInterfaceSubClass == SC_VIDEOCONTROL)
1653 return uvc_status_suspend(dev);
1654
1655 if (dev->video.streaming->intf != intf) {
1656 uvc_trace(UVC_TRACE_SUSPEND, "Suspend: video streaming USB "
1657 "interface mismatch.\n");
1658 return -EINVAL;
1659 }
1660
1661 return uvc_video_suspend(&dev->video);
1662}
1663
1664static int uvc_resume(struct usb_interface *intf)
1665{
1666 struct uvc_device *dev = usb_get_intfdata(intf);
1667 int ret;
1668
1669 uvc_trace(UVC_TRACE_SUSPEND, "Resuming interface %u\n",
1670 intf->cur_altsetting->desc.bInterfaceNumber);
1671
1672 if (intf->cur_altsetting->desc.bInterfaceSubClass == SC_VIDEOCONTROL) {
1673 if ((ret = uvc_ctrl_resume_device(dev)) < 0)
1674 return ret;
1675
1676 return uvc_status_resume(dev);
1677 }
1678
1679 if (dev->video.streaming->intf != intf) {
1680 uvc_trace(UVC_TRACE_SUSPEND, "Resume: video streaming USB "
1681 "interface mismatch.\n");
1682 return -EINVAL;
1683 }
1684
1685 return uvc_video_resume(&dev->video);
1686}
1687
1688/* ------------------------------------------------------------------------
1689 * Driver initialization and cleanup
1690 */
1691
1692/*
1693 * The Logitech cameras listed below have their interface class set to
1694 * VENDOR_SPEC because they don't announce themselves as UVC devices, even
1695 * though they are compliant.
1696 */
1697static struct usb_device_id uvc_ids[] = {
1698 /* ALi M5606 (Clevo M540SR) */
1699 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1700 | USB_DEVICE_ID_MATCH_INT_INFO,
1701 .idVendor = 0x0402,
1702 .idProduct = 0x5606,
1703 .bInterfaceClass = USB_CLASS_VIDEO,
1704 .bInterfaceSubClass = 1,
1705 .bInterfaceProtocol = 0,
1706 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1707 /* Creative Live! Optia */
1708 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1709 | USB_DEVICE_ID_MATCH_INT_INFO,
1710 .idVendor = 0x041e,
1711 .idProduct = 0x4057,
1712 .bInterfaceClass = USB_CLASS_VIDEO,
1713 .bInterfaceSubClass = 1,
1714 .bInterfaceProtocol = 0,
1715 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1716 /* Microsoft Lifecam NX-6000 */
1717 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1718 | USB_DEVICE_ID_MATCH_INT_INFO,
1719 .idVendor = 0x045e,
1720 .idProduct = 0x00f8,
1721 .bInterfaceClass = USB_CLASS_VIDEO,
1722 .bInterfaceSubClass = 1,
1723 .bInterfaceProtocol = 0,
1724 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1725 /* Microsoft Lifecam VX-7000 */
1726 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1727 | USB_DEVICE_ID_MATCH_INT_INFO,
1728 .idVendor = 0x045e,
1729 .idProduct = 0x0723,
1730 .bInterfaceClass = USB_CLASS_VIDEO,
1731 .bInterfaceSubClass = 1,
1732 .bInterfaceProtocol = 0,
1733 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1734 /* Logitech Quickcam Fusion */
1735 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1736 | USB_DEVICE_ID_MATCH_INT_INFO,
1737 .idVendor = 0x046d,
1738 .idProduct = 0x08c1,
1739 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1740 .bInterfaceSubClass = 1,
1741 .bInterfaceProtocol = 0 },
1742 /* Logitech Quickcam Orbit MP */
1743 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1744 | USB_DEVICE_ID_MATCH_INT_INFO,
1745 .idVendor = 0x046d,
1746 .idProduct = 0x08c2,
1747 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1748 .bInterfaceSubClass = 1,
1749 .bInterfaceProtocol = 0 },
1750 /* Logitech Quickcam Pro for Notebook */
1751 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1752 | USB_DEVICE_ID_MATCH_INT_INFO,
1753 .idVendor = 0x046d,
1754 .idProduct = 0x08c3,
1755 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1756 .bInterfaceSubClass = 1,
1757 .bInterfaceProtocol = 0 },
1758 /* Logitech Quickcam Pro 5000 */
1759 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1760 | USB_DEVICE_ID_MATCH_INT_INFO,
1761 .idVendor = 0x046d,
1762 .idProduct = 0x08c5,
1763 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1764 .bInterfaceSubClass = 1,
1765 .bInterfaceProtocol = 0 },
1766 /* Logitech Quickcam OEM Dell Notebook */
1767 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1768 | USB_DEVICE_ID_MATCH_INT_INFO,
1769 .idVendor = 0x046d,
1770 .idProduct = 0x08c6,
1771 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1772 .bInterfaceSubClass = 1,
1773 .bInterfaceProtocol = 0 },
1774 /* Logitech Quickcam OEM Cisco VT Camera II */
1775 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1776 | USB_DEVICE_ID_MATCH_INT_INFO,
1777 .idVendor = 0x046d,
1778 .idProduct = 0x08c7,
1779 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1780 .bInterfaceSubClass = 1,
1781 .bInterfaceProtocol = 0 },
1782 /* Apple Built-In iSight */
1783 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1784 | USB_DEVICE_ID_MATCH_INT_INFO,
1785 .idVendor = 0x05ac,
1786 .idProduct = 0x8501,
1787 .bInterfaceClass = USB_CLASS_VIDEO,
1788 .bInterfaceSubClass = 1,
1789 .bInterfaceProtocol = 0,
1790 .driver_info = UVC_QUIRK_PROBE_MINMAX
1791 | UVC_QUIRK_BUILTIN_ISIGHT },
1792 /* Genesys Logic USB 2.0 PC Camera */
1793 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1794 | USB_DEVICE_ID_MATCH_INT_INFO,
1795 .idVendor = 0x05e3,
1796 .idProduct = 0x0505,
1797 .bInterfaceClass = USB_CLASS_VIDEO,
1798 .bInterfaceSubClass = 1,
1799 .bInterfaceProtocol = 0,
1800 .driver_info = UVC_QUIRK_STREAM_NO_FID },
1801 /* Silicon Motion SM371 */
1802 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1803 | USB_DEVICE_ID_MATCH_INT_INFO,
1804 .idVendor = 0x090c,
1805 .idProduct = 0xb371,
1806 .bInterfaceClass = USB_CLASS_VIDEO,
1807 .bInterfaceSubClass = 1,
1808 .bInterfaceProtocol = 0,
1809 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1810 /* MT6227 */
1811 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1812 | USB_DEVICE_ID_MATCH_INT_INFO,
1813 .idVendor = 0x0e8d,
1814 .idProduct = 0x0004,
1815 .bInterfaceClass = USB_CLASS_VIDEO,
1816 .bInterfaceSubClass = 1,
1817 .bInterfaceProtocol = 0,
1818 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1819 /* Syntek (HP Spartan) */
1820 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1821 | USB_DEVICE_ID_MATCH_INT_INFO,
1822 .idVendor = 0x174f,
1823 .idProduct = 0x5212,
1824 .bInterfaceClass = USB_CLASS_VIDEO,
1825 .bInterfaceSubClass = 1,
1826 .bInterfaceProtocol = 0,
1827 .driver_info = UVC_QUIRK_STREAM_NO_FID },
1828 /* Syntek (Asus U3S) */
1829 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1830 | USB_DEVICE_ID_MATCH_INT_INFO,
1831 .idVendor = 0x174f,
1832 .idProduct = 0x8a33,
1833 .bInterfaceClass = USB_CLASS_VIDEO,
1834 .bInterfaceSubClass = 1,
1835 .bInterfaceProtocol = 0,
1836 .driver_info = UVC_QUIRK_STREAM_NO_FID },
1837 /* Ecamm Pico iMage */
1838 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1839 | USB_DEVICE_ID_MATCH_INT_INFO,
1840 .idVendor = 0x18cd,
1841 .idProduct = 0xcafe,
1842 .bInterfaceClass = USB_CLASS_VIDEO,
1843 .bInterfaceSubClass = 1,
1844 .bInterfaceProtocol = 0,
1845 .driver_info = UVC_QUIRK_PROBE_EXTRAFIELDS },
1846 /* Bodelin ProScopeHR */
1847 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1848 | USB_DEVICE_ID_MATCH_DEV_HI
1849 | USB_DEVICE_ID_MATCH_INT_INFO,
1850 .idVendor = 0x19ab,
1851 .idProduct = 0x1000,
1852 .bcdDevice_hi = 0x0126,
1853 .bInterfaceClass = USB_CLASS_VIDEO,
1854 .bInterfaceSubClass = 1,
1855 .bInterfaceProtocol = 0,
1856 .driver_info = UVC_QUIRK_STATUS_INTERVAL },
1857 /* SiGma Micro USB Web Camera */
1858 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1859 | USB_DEVICE_ID_MATCH_INT_INFO,
1860 .idVendor = 0x1c4f,
1861 .idProduct = 0x3000,
1862 .bInterfaceClass = USB_CLASS_VIDEO,
1863 .bInterfaceSubClass = 1,
1864 .bInterfaceProtocol = 0,
1865 .driver_info = UVC_QUIRK_PROBE_MINMAX
1866 | UVC_QUIRK_IGNORE_SELECTOR_UNIT},
1867 /* Acer OEM Webcam - Unknown vendor */
1868 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1869 | USB_DEVICE_ID_MATCH_INT_INFO,
1870 .idVendor = 0x5986,
1871 .idProduct = 0x0100,
1872 .bInterfaceClass = USB_CLASS_VIDEO,
1873 .bInterfaceSubClass = 1,
1874 .bInterfaceProtocol = 0,
1875 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1876 /* Packard Bell OEM Webcam */
1877 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1878 | USB_DEVICE_ID_MATCH_INT_INFO,
1879 .idVendor = 0x5986,
1880 .idProduct = 0x0101,
1881 .bInterfaceClass = USB_CLASS_VIDEO,
1882 .bInterfaceSubClass = 1,
1883 .bInterfaceProtocol = 0,
1884 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1885 /* Acer Crystal Eye webcam */
1886 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1887 | USB_DEVICE_ID_MATCH_INT_INFO,
1888 .idVendor = 0x5986,
1889 .idProduct = 0x0102,
1890 .bInterfaceClass = USB_CLASS_VIDEO,
1891 .bInterfaceSubClass = 1,
1892 .bInterfaceProtocol = 0,
1893 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1894 /* Acer OrbiCam - Unknown vendor */
1895 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
1896 | USB_DEVICE_ID_MATCH_INT_INFO,
1897 .idVendor = 0x5986,
1898 .idProduct = 0x0200,
1899 .bInterfaceClass = USB_CLASS_VIDEO,
1900 .bInterfaceSubClass = 1,
1901 .bInterfaceProtocol = 0,
1902 .driver_info = UVC_QUIRK_PROBE_MINMAX },
1903 /* Generic USB Video Class */
1904 { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, 0) },
1905 {}
1906};
1907
1908MODULE_DEVICE_TABLE(usb, uvc_ids);
1909
1910struct uvc_driver uvc_driver = {
1911 .driver = {
1912 .name = "uvcvideo",
1913 .probe = uvc_probe,
1914 .disconnect = uvc_disconnect,
1915 .suspend = uvc_suspend,
1916 .resume = uvc_resume,
1917 .id_table = uvc_ids,
1918 .supports_autosuspend = 1,
1919 },
1920};
1921
1922static int __init uvc_init(void)
1923{
1924 int result;
1925
1926 INIT_LIST_HEAD(&uvc_driver.devices);
1927 INIT_LIST_HEAD(&uvc_driver.controls);
1928 mutex_init(&uvc_driver.open_mutex);
1929 mutex_init(&uvc_driver.ctrl_mutex);
1930
1931 uvc_ctrl_init();
1932
1933 result = usb_register(&uvc_driver.driver);
1934 if (result == 0)
1935 printk(KERN_INFO DRIVER_DESC " (" DRIVER_VERSION ")\n");
1936 return result;
1937}
1938
1939static void __exit uvc_cleanup(void)
1940{
1941 usb_deregister(&uvc_driver.driver);
1942}
1943
1944module_init(uvc_init);
1945module_exit(uvc_cleanup);
1946
1947module_param_named(quirks, uvc_quirks_param, uint, S_IRUGO|S_IWUSR);
1948MODULE_PARM_DESC(quirks, "Forced device quirks");
1949module_param_named(trace, uvc_trace_param, uint, S_IRUGO|S_IWUSR);
1950MODULE_PARM_DESC(trace, "Trace level bitmask");
1951
1952MODULE_AUTHOR(DRIVER_AUTHOR);
1953MODULE_DESCRIPTION(DRIVER_DESC);
1954MODULE_LICENSE("GPL");
1955MODULE_VERSION(DRIVER_VERSION);
diff --git a/drivers/media/video/uvc/uvc_isight.c b/drivers/media/video/uvc/uvc_isight.c
new file mode 100644
index 000000000000..37bdefdbead5
--- /dev/null
+++ b/drivers/media/video/uvc/uvc_isight.c
@@ -0,0 +1,134 @@
1/*
2 * uvc_isight.c -- USB Video Class driver - iSight support
3 *
4 * Copyright (C) 2006-2007
5 * Ivan N. Zlatev <contact@i-nz.net>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 */
13
14#include <linux/usb.h>
15#include <linux/kernel.h>
16#include <linux/mm.h>
17
18#include "uvcvideo.h"
19
20/* Built-in iSight webcams implements most of UVC 1.0 except a
21 * different packet format. Instead of sending a header at the
22 * beginning of each isochronous transfer payload, the webcam sends a
23 * single header per image (on its own in a packet), followed by
24 * packets containing data only.
25 *
26 * Offset Size (bytes) Description
27 * ------------------------------------------------------------------
28 * 0x00 1 Header length
29 * 0x01 1 Flags (UVC-compliant)
30 * 0x02 4 Always equal to '11223344'
31 * 0x06 8 Always equal to 'deadbeefdeadface'
32 * 0x0e 16 Unknown
33 *
34 * The header can be prefixed by an optional, unknown-purpose byte.
35 */
36
37static int isight_decode(struct uvc_video_queue *queue, struct uvc_buffer *buf,
38 const __u8 *data, unsigned int len)
39{
40 static const __u8 hdr[] = {
41 0x11, 0x22, 0x33, 0x44,
42 0xde, 0xad, 0xbe, 0xef,
43 0xde, 0xad, 0xfa, 0xce
44 };
45
46 unsigned int maxlen, nbytes;
47 __u8 *mem;
48 int is_header = 0;
49
50 if (buf == NULL)
51 return 0;
52
53 if ((len >= 14 && memcmp(&data[2], hdr, 12) == 0) ||
54 (len >= 15 && memcmp(&data[3], hdr, 12) == 0)) {
55 uvc_trace(UVC_TRACE_FRAME, "iSight header found\n");
56 is_header = 1;
57 }
58
59 /* Synchronize to the input stream by waiting for a header packet. */
60 if (buf->state != UVC_BUF_STATE_ACTIVE) {
61 if (!is_header) {
62 uvc_trace(UVC_TRACE_FRAME, "Dropping packet (out of "
63 "sync).\n");
64 return 0;
65 }
66
67 buf->state = UVC_BUF_STATE_ACTIVE;
68 }
69
70 /* Mark the buffer as done if we're at the beginning of a new frame.
71 *
72 * Empty buffers (bytesused == 0) don't trigger end of frame detection
73 * as it doesn't make sense to return an empty buffer.
74 */
75 if (is_header && buf->buf.bytesused != 0) {
76 buf->state = UVC_BUF_STATE_DONE;
77 return -EAGAIN;
78 }
79
80 /* Copy the video data to the buffer. Skip header packets, as they
81 * contain no data.
82 */
83 if (!is_header) {
84 maxlen = buf->buf.length - buf->buf.bytesused;
85 mem = queue->mem + buf->buf.m.offset + buf->buf.bytesused;
86 nbytes = min(len, maxlen);
87 memcpy(mem, data, nbytes);
88 buf->buf.bytesused += nbytes;
89
90 if (len > maxlen || buf->buf.bytesused == buf->buf.length) {
91 uvc_trace(UVC_TRACE_FRAME, "Frame complete "
92 "(overflow).\n");
93 buf->state = UVC_BUF_STATE_DONE;
94 }
95 }
96
97 return 0;
98}
99
100void uvc_video_decode_isight(struct urb *urb, struct uvc_video_device *video,
101 struct uvc_buffer *buf)
102{
103 int ret, i;
104
105 for (i = 0; i < urb->number_of_packets; ++i) {
106 if (urb->iso_frame_desc[i].status < 0) {
107 uvc_trace(UVC_TRACE_FRAME, "USB isochronous frame "
108 "lost (%d).\n",
109 urb->iso_frame_desc[i].status);
110 }
111
112 /* Decode the payload packet.
113 * uvc_video_decode is entered twice when a frame transition
114 * has been detected because the end of frame can only be
115 * reliably detected when the first packet of the new frame
116 * is processed. The first pass detects the transition and
117 * closes the previous frame's buffer, the second pass
118 * processes the data of the first payload of the new frame.
119 */
120 do {
121 ret = isight_decode(&video->queue, buf,
122 urb->transfer_buffer +
123 urb->iso_frame_desc[i].offset,
124 urb->iso_frame_desc[i].actual_length);
125
126 if (buf == NULL)
127 break;
128
129 if (buf->state == UVC_BUF_STATE_DONE ||
130 buf->state == UVC_BUF_STATE_ERROR)
131 buf = uvc_queue_next_buffer(&video->queue, buf);
132 } while (ret == -EAGAIN);
133 }
134}
diff --git a/drivers/media/video/uvc/uvc_queue.c b/drivers/media/video/uvc/uvc_queue.c
new file mode 100644
index 000000000000..0923f0e3b3d4
--- /dev/null
+++ b/drivers/media/video/uvc/uvc_queue.c
@@ -0,0 +1,477 @@
1/*
2 * uvc_queue.c -- USB Video Class driver - Buffers management
3 *
4 * Copyright (C) 2005-2008
5 * Laurent Pinchart (laurent.pinchart@skynet.be)
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/version.h>
16#include <linux/list.h>
17#include <linux/module.h>
18#include <linux/usb.h>
19#include <linux/videodev2.h>
20#include <linux/vmalloc.h>
21#include <linux/wait.h>
22#include <asm/atomic.h>
23
24#include "uvcvideo.h"
25
26/* ------------------------------------------------------------------------
27 * Video buffers queue management.
28 *
29 * Video queues is initialized by uvc_queue_init(). The function performs
30 * basic initialization of the uvc_video_queue struct and never fails.
31 *
32 * Video buffer allocation and freeing are performed by uvc_alloc_buffers and
33 * uvc_free_buffers respectively. The former acquires the video queue lock,
34 * while the later must be called with the lock held (so that allocation can
35 * free previously allocated buffers). Trying to free buffers that are mapped
36 * to user space will return -EBUSY.
37 *
38 * Video buffers are managed using two queues. However, unlike most USB video
39 * drivers which use an in queue and an out queue, we use a main queue which
40 * holds all queued buffers (both 'empty' and 'done' buffers), and an irq
41 * queue which holds empty buffers. This design (copied from video-buf)
42 * minimizes locking in interrupt, as only one queue is shared between
43 * interrupt and user contexts.
44 *
45 * Use cases
46 * ---------
47 *
48 * Unless stated otherwise, all operations which modify the irq buffers queue
49 * are protected by the irq spinlock.
50 *
51 * 1. The user queues the buffers, starts streaming and dequeues a buffer.
52 *
53 * The buffers are added to the main and irq queues. Both operations are
54 * protected by the queue lock, and the latert is protected by the irq
55 * spinlock as well.
56 *
57 * The completion handler fetches a buffer from the irq queue and fills it
58 * with video data. If no buffer is available (irq queue empty), the handler
59 * returns immediately.
60 *
61 * When the buffer is full, the completion handler removes it from the irq
62 * queue, marks it as ready (UVC_BUF_STATE_DONE) and wake its wait queue.
63 * At that point, any process waiting on the buffer will be woken up. If a
64 * process tries to dequeue a buffer after it has been marked ready, the
65 * dequeing will succeed immediately.
66 *
67 * 2. Buffers are queued, user is waiting on a buffer and the device gets
68 * disconnected.
69 *
70 * When the device is disconnected, the kernel calls the completion handler
71 * with an appropriate status code. The handler marks all buffers in the
72 * irq queue as being erroneous (UVC_BUF_STATE_ERROR) and wakes them up so
73 * that any process waiting on a buffer gets woken up.
74 *
75 * Waking up up the first buffer on the irq list is not enough, as the
76 * process waiting on the buffer might restart the dequeue operation
77 * immediately.
78 *
79 */
80
81void uvc_queue_init(struct uvc_video_queue *queue)
82{
83 mutex_init(&queue->mutex);
84 spin_lock_init(&queue->irqlock);
85 INIT_LIST_HEAD(&queue->mainqueue);
86 INIT_LIST_HEAD(&queue->irqqueue);
87}
88
89/*
90 * Allocate the video buffers.
91 *
92 * Pages are reserved to make sure they will not be swaped, as they will be
93 * filled in URB completion handler.
94 *
95 * Buffers will be individually mapped, so they must all be page aligned.
96 */
97int uvc_alloc_buffers(struct uvc_video_queue *queue, unsigned int nbuffers,
98 unsigned int buflength)
99{
100 unsigned int bufsize = PAGE_ALIGN(buflength);
101 unsigned int i;
102 void *mem = NULL;
103 int ret;
104
105 if (nbuffers > UVC_MAX_VIDEO_BUFFERS)
106 nbuffers = UVC_MAX_VIDEO_BUFFERS;
107
108 mutex_lock(&queue->mutex);
109
110 if ((ret = uvc_free_buffers(queue)) < 0)
111 goto done;
112
113 /* Bail out if no buffers should be allocated. */
114 if (nbuffers == 0)
115 goto done;
116
117 /* Decrement the number of buffers until allocation succeeds. */
118 for (; nbuffers > 0; --nbuffers) {
119 mem = vmalloc_32(nbuffers * bufsize);
120 if (mem != NULL)
121 break;
122 }
123
124 if (mem == NULL) {
125 ret = -ENOMEM;
126 goto done;
127 }
128
129 for (i = 0; i < nbuffers; ++i) {
130 memset(&queue->buffer[i], 0, sizeof queue->buffer[i]);
131 queue->buffer[i].buf.index = i;
132 queue->buffer[i].buf.m.offset = i * bufsize;
133 queue->buffer[i].buf.length = buflength;
134 queue->buffer[i].buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
135 queue->buffer[i].buf.sequence = 0;
136 queue->buffer[i].buf.field = V4L2_FIELD_NONE;
137 queue->buffer[i].buf.memory = V4L2_MEMORY_MMAP;
138 queue->buffer[i].buf.flags = 0;
139 init_waitqueue_head(&queue->buffer[i].wait);
140 }
141
142 queue->mem = mem;
143 queue->count = nbuffers;
144 queue->buf_size = bufsize;
145 ret = nbuffers;
146
147done:
148 mutex_unlock(&queue->mutex);
149 return ret;
150}
151
152/*
153 * Free the video buffers.
154 *
155 * This function must be called with the queue lock held.
156 */
157int uvc_free_buffers(struct uvc_video_queue *queue)
158{
159 unsigned int i;
160
161 for (i = 0; i < queue->count; ++i) {
162 if (queue->buffer[i].vma_use_count != 0)
163 return -EBUSY;
164 }
165
166 if (queue->count) {
167 vfree(queue->mem);
168 queue->count = 0;
169 }
170
171 return 0;
172}
173
174static void __uvc_query_buffer(struct uvc_buffer *buf,
175 struct v4l2_buffer *v4l2_buf)
176{
177 memcpy(v4l2_buf, &buf->buf, sizeof *v4l2_buf);
178
179 if (buf->vma_use_count)
180 v4l2_buf->flags |= V4L2_BUF_FLAG_MAPPED;
181
182 switch (buf->state) {
183 case UVC_BUF_STATE_ERROR:
184 case UVC_BUF_STATE_DONE:
185 v4l2_buf->flags |= V4L2_BUF_FLAG_DONE;
186 break;
187 case UVC_BUF_STATE_QUEUED:
188 case UVC_BUF_STATE_ACTIVE:
189 v4l2_buf->flags |= V4L2_BUF_FLAG_QUEUED;
190 break;
191 case UVC_BUF_STATE_IDLE:
192 default:
193 break;
194 }
195}
196
197int uvc_query_buffer(struct uvc_video_queue *queue,
198 struct v4l2_buffer *v4l2_buf)
199{
200 int ret = 0;
201
202 mutex_lock(&queue->mutex);
203 if (v4l2_buf->index >= queue->count) {
204 ret = -EINVAL;
205 goto done;
206 }
207
208 __uvc_query_buffer(&queue->buffer[v4l2_buf->index], v4l2_buf);
209
210done:
211 mutex_unlock(&queue->mutex);
212 return ret;
213}
214
215/*
216 * Queue a video buffer. Attempting to queue a buffer that has already been
217 * queued will return -EINVAL.
218 */
219int uvc_queue_buffer(struct uvc_video_queue *queue,
220 struct v4l2_buffer *v4l2_buf)
221{
222 struct uvc_buffer *buf;
223 unsigned long flags;
224 int ret = 0;
225
226 uvc_trace(UVC_TRACE_CAPTURE, "Queuing buffer %u.\n", v4l2_buf->index);
227
228 if (v4l2_buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
229 v4l2_buf->memory != V4L2_MEMORY_MMAP) {
230 uvc_trace(UVC_TRACE_CAPTURE, "[E] Invalid buffer type (%u) "
231 "and/or memory (%u).\n", v4l2_buf->type,
232 v4l2_buf->memory);
233 return -EINVAL;
234 }
235
236 mutex_lock(&queue->mutex);
237 if (v4l2_buf->index >= queue->count) {
238 uvc_trace(UVC_TRACE_CAPTURE, "[E] Out of range index.\n");
239 ret = -EINVAL;
240 goto done;
241 }
242
243 buf = &queue->buffer[v4l2_buf->index];
244 if (buf->state != UVC_BUF_STATE_IDLE) {
245 uvc_trace(UVC_TRACE_CAPTURE, "[E] Invalid buffer state "
246 "(%u).\n", buf->state);
247 ret = -EINVAL;
248 goto done;
249 }
250
251 spin_lock_irqsave(&queue->irqlock, flags);
252 if (queue->flags & UVC_QUEUE_DISCONNECTED) {
253 spin_unlock_irqrestore(&queue->irqlock, flags);
254 ret = -ENODEV;
255 goto done;
256 }
257 buf->state = UVC_BUF_STATE_QUEUED;
258 buf->buf.bytesused = 0;
259 list_add_tail(&buf->stream, &queue->mainqueue);
260 list_add_tail(&buf->queue, &queue->irqqueue);
261 spin_unlock_irqrestore(&queue->irqlock, flags);
262
263done:
264 mutex_unlock(&queue->mutex);
265 return ret;
266}
267
268static int uvc_queue_waiton(struct uvc_buffer *buf, int nonblocking)
269{
270 if (nonblocking) {
271 return (buf->state != UVC_BUF_STATE_QUEUED &&
272 buf->state != UVC_BUF_STATE_ACTIVE)
273 ? 0 : -EAGAIN;
274 }
275
276 return wait_event_interruptible(buf->wait,
277 buf->state != UVC_BUF_STATE_QUEUED &&
278 buf->state != UVC_BUF_STATE_ACTIVE);
279}
280
281/*
282 * Dequeue a video buffer. If nonblocking is false, block until a buffer is
283 * available.
284 */
285int uvc_dequeue_buffer(struct uvc_video_queue *queue,
286 struct v4l2_buffer *v4l2_buf, int nonblocking)
287{
288 struct uvc_buffer *buf;
289 int ret = 0;
290
291 if (v4l2_buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
292 v4l2_buf->memory != V4L2_MEMORY_MMAP) {
293 uvc_trace(UVC_TRACE_CAPTURE, "[E] Invalid buffer type (%u) "
294 "and/or memory (%u).\n", v4l2_buf->type,
295 v4l2_buf->memory);
296 return -EINVAL;
297 }
298
299 mutex_lock(&queue->mutex);
300 if (list_empty(&queue->mainqueue)) {
301 uvc_trace(UVC_TRACE_CAPTURE, "[E] Empty buffer queue.\n");
302 ret = -EINVAL;
303 goto done;
304 }
305
306 buf = list_first_entry(&queue->mainqueue, struct uvc_buffer, stream);
307 if ((ret = uvc_queue_waiton(buf, nonblocking)) < 0)
308 goto done;
309
310 uvc_trace(UVC_TRACE_CAPTURE, "Dequeuing buffer %u (%u, %u bytes).\n",
311 buf->buf.index, buf->state, buf->buf.bytesused);
312
313 switch (buf->state) {
314 case UVC_BUF_STATE_ERROR:
315 uvc_trace(UVC_TRACE_CAPTURE, "[W] Corrupted data "
316 "(transmission error).\n");
317 ret = -EIO;
318 case UVC_BUF_STATE_DONE:
319 buf->state = UVC_BUF_STATE_IDLE;
320 break;
321
322 case UVC_BUF_STATE_IDLE:
323 case UVC_BUF_STATE_QUEUED:
324 case UVC_BUF_STATE_ACTIVE:
325 default:
326 uvc_trace(UVC_TRACE_CAPTURE, "[E] Invalid buffer state %u "
327 "(driver bug?).\n", buf->state);
328 ret = -EINVAL;
329 goto done;
330 }
331
332 list_del(&buf->stream);
333 __uvc_query_buffer(buf, v4l2_buf);
334
335done:
336 mutex_unlock(&queue->mutex);
337 return ret;
338}
339
340/*
341 * Poll the video queue.
342 *
343 * This function implements video queue polling and is intended to be used by
344 * the device poll handler.
345 */
346unsigned int uvc_queue_poll(struct uvc_video_queue *queue, struct file *file,
347 poll_table *wait)
348{
349 struct uvc_buffer *buf;
350 unsigned int mask = 0;
351
352 mutex_lock(&queue->mutex);
353 if (list_empty(&queue->mainqueue)) {
354 mask |= POLLERR;
355 goto done;
356 }
357 buf = list_first_entry(&queue->mainqueue, struct uvc_buffer, stream);
358
359 poll_wait(file, &buf->wait, wait);
360 if (buf->state == UVC_BUF_STATE_DONE ||
361 buf->state == UVC_BUF_STATE_ERROR)
362 mask |= POLLIN | POLLRDNORM;
363
364done:
365 mutex_unlock(&queue->mutex);
366 return mask;
367}
368
369/*
370 * Enable or disable the video buffers queue.
371 *
372 * The queue must be enabled before starting video acquisition and must be
373 * disabled after stopping it. This ensures that the video buffers queue
374 * state can be properly initialized before buffers are accessed from the
375 * interrupt handler.
376 *
377 * Enabling the video queue initializes parameters (such as sequence number,
378 * sync pattern, ...). If the queue is already enabled, return -EBUSY.
379 *
380 * Disabling the video queue cancels the queue and removes all buffers from
381 * the main queue.
382 *
383 * This function can't be called from interrupt context. Use
384 * uvc_queue_cancel() instead.
385 */
386int uvc_queue_enable(struct uvc_video_queue *queue, int enable)
387{
388 unsigned int i;
389 int ret = 0;
390
391 mutex_lock(&queue->mutex);
392 if (enable) {
393 if (uvc_queue_streaming(queue)) {
394 ret = -EBUSY;
395 goto done;
396 }
397 queue->sequence = 0;
398 queue->flags |= UVC_QUEUE_STREAMING;
399 } else {
400 uvc_queue_cancel(queue, 0);
401 INIT_LIST_HEAD(&queue->mainqueue);
402
403 for (i = 0; i < queue->count; ++i)
404 queue->buffer[i].state = UVC_BUF_STATE_IDLE;
405
406 queue->flags &= ~UVC_QUEUE_STREAMING;
407 }
408
409done:
410 mutex_unlock(&queue->mutex);
411 return ret;
412}
413
414/*
415 * Cancel the video buffers queue.
416 *
417 * Cancelling the queue marks all buffers on the irq queue as erroneous,
418 * wakes them up and remove them from the queue.
419 *
420 * If the disconnect parameter is set, further calls to uvc_queue_buffer will
421 * fail with -ENODEV.
422 *
423 * This function acquires the irq spinlock and can be called from interrupt
424 * context.
425 */
426void uvc_queue_cancel(struct uvc_video_queue *queue, int disconnect)
427{
428 struct uvc_buffer *buf;
429 unsigned long flags;
430
431 spin_lock_irqsave(&queue->irqlock, flags);
432 while (!list_empty(&queue->irqqueue)) {
433 buf = list_first_entry(&queue->irqqueue, struct uvc_buffer,
434 queue);
435 list_del(&buf->queue);
436 buf->state = UVC_BUF_STATE_ERROR;
437 wake_up(&buf->wait);
438 }
439 /* This must be protected by the irqlock spinlock to avoid race
440 * conditions between uvc_queue_buffer and the disconnection event that
441 * could result in an interruptible wait in uvc_dequeue_buffer. Do not
442 * blindly replace this logic by checking for the UVC_DEV_DISCONNECTED
443 * state outside the queue code.
444 */
445 if (disconnect)
446 queue->flags |= UVC_QUEUE_DISCONNECTED;
447 spin_unlock_irqrestore(&queue->irqlock, flags);
448}
449
450struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue,
451 struct uvc_buffer *buf)
452{
453 struct uvc_buffer *nextbuf;
454 unsigned long flags;
455
456 if ((queue->flags & UVC_QUEUE_DROP_INCOMPLETE) &&
457 buf->buf.length != buf->buf.bytesused) {
458 buf->state = UVC_BUF_STATE_QUEUED;
459 buf->buf.bytesused = 0;
460 return buf;
461 }
462
463 spin_lock_irqsave(&queue->irqlock, flags);
464 list_del(&buf->queue);
465 if (!list_empty(&queue->irqqueue))
466 nextbuf = list_first_entry(&queue->irqqueue, struct uvc_buffer,
467 queue);
468 else
469 nextbuf = NULL;
470 spin_unlock_irqrestore(&queue->irqlock, flags);
471
472 buf->buf.sequence = queue->sequence++;
473 do_gettimeofday(&buf->buf.timestamp);
474
475 wake_up(&buf->wait);
476 return nextbuf;
477}
diff --git a/drivers/media/video/uvc/uvc_status.c b/drivers/media/video/uvc/uvc_status.c
new file mode 100644
index 000000000000..be9084e5eace
--- /dev/null
+++ b/drivers/media/video/uvc/uvc_status.c
@@ -0,0 +1,207 @@
1/*
2 * uvc_status.c -- USB Video Class driver - Status endpoint
3 *
4 * Copyright (C) 2007-2008
5 * Laurent Pinchart (laurent.pinchart@skynet.be)
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/version.h>
16#include <linux/input.h>
17#include <linux/usb.h>
18#include <linux/usb/input.h>
19
20#include "uvcvideo.h"
21
22/* --------------------------------------------------------------------------
23 * Input device
24 */
25static int uvc_input_init(struct uvc_device *dev)
26{
27 struct usb_device *udev = dev->udev;
28 struct input_dev *input;
29 char *phys = NULL;
30 int ret;
31
32 input = input_allocate_device();
33 if (input == NULL)
34 return -ENOMEM;
35
36 phys = kmalloc(6 + strlen(udev->bus->bus_name) + strlen(udev->devpath),
37 GFP_KERNEL);
38 if (phys == NULL) {
39 ret = -ENOMEM;
40 goto error;
41 }
42 sprintf(phys, "usb-%s-%s", udev->bus->bus_name, udev->devpath);
43
44 input->name = dev->name;
45 input->phys = phys;
46 usb_to_input_id(udev, &input->id);
47 input->dev.parent = &dev->intf->dev;
48
49 set_bit(EV_KEY, input->evbit);
50 set_bit(BTN_0, input->keybit);
51
52 if ((ret = input_register_device(input)) < 0)
53 goto error;
54
55 dev->input = input;
56 return 0;
57
58error:
59 input_free_device(input);
60 kfree(phys);
61 return ret;
62}
63
64static void uvc_input_cleanup(struct uvc_device *dev)
65{
66 if (dev->input)
67 input_unregister_device(dev->input);
68}
69
70/* --------------------------------------------------------------------------
71 * Status interrupt endpoint
72 */
73static void uvc_event_streaming(struct uvc_device *dev, __u8 *data, int len)
74{
75 if (len < 3) {
76 uvc_trace(UVC_TRACE_STATUS, "Invalid streaming status event "
77 "received.\n");
78 return;
79 }
80
81 if (data[2] == 0) {
82 if (len < 4)
83 return;
84 uvc_trace(UVC_TRACE_STATUS, "Button (intf %u) %s len %d\n",
85 data[1], data[3] ? "pressed" : "released", len);
86 if (dev->input)
87 input_report_key(dev->input, BTN_0, data[3]);
88 } else {
89 uvc_trace(UVC_TRACE_STATUS, "Stream %u error event %02x %02x "
90 "len %d.\n", data[1], data[2], data[3], len);
91 }
92}
93
94static void uvc_event_control(struct uvc_device *dev, __u8 *data, int len)
95{
96 char *attrs[3] = { "value", "info", "failure" };
97
98 if (len < 6 || data[2] != 0 || data[4] > 2) {
99 uvc_trace(UVC_TRACE_STATUS, "Invalid control status event "
100 "received.\n");
101 return;
102 }
103
104 uvc_trace(UVC_TRACE_STATUS, "Control %u/%u %s change len %d.\n",
105 data[1], data[3], attrs[data[4]], len);
106}
107
108static void uvc_status_complete(struct urb *urb)
109{
110 struct uvc_device *dev = urb->context;
111 int len, ret;
112
113 switch (urb->status) {
114 case 0:
115 break;
116
117 case -ENOENT: /* usb_kill_urb() called. */
118 case -ECONNRESET: /* usb_unlink_urb() called. */
119 case -ESHUTDOWN: /* The endpoint is being disabled. */
120 case -EPROTO: /* Device is disconnected (reported by some
121 * host controller). */
122 return;
123
124 default:
125 uvc_printk(KERN_WARNING, "Non-zero status (%d) in status "
126 "completion handler.\n", urb->status);
127 return;
128 }
129
130 len = urb->actual_length;
131 if (len > 0) {
132 switch (dev->status[0] & 0x0f) {
133 case UVC_STATUS_TYPE_CONTROL:
134 uvc_event_control(dev, dev->status, len);
135 break;
136
137 case UVC_STATUS_TYPE_STREAMING:
138 uvc_event_streaming(dev, dev->status, len);
139 break;
140
141 default:
142 uvc_printk(KERN_INFO, "unknown event type %u.\n",
143 dev->status[0]);
144 break;
145 }
146 }
147
148 /* Resubmit the URB. */
149 urb->interval = dev->int_ep->desc.bInterval;
150 if ((ret = usb_submit_urb(urb, GFP_ATOMIC)) < 0) {
151 uvc_printk(KERN_ERR, "Failed to resubmit status URB (%d).\n",
152 ret);
153 }
154}
155
156int uvc_status_init(struct uvc_device *dev)
157{
158 struct usb_host_endpoint *ep = dev->int_ep;
159 unsigned int pipe;
160 int interval;
161
162 if (ep == NULL)
163 return 0;
164
165 uvc_input_init(dev);
166
167 dev->int_urb = usb_alloc_urb(0, GFP_KERNEL);
168 if (dev->int_urb == NULL)
169 return -ENOMEM;
170
171 pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress);
172
173 /* For high-speed interrupt endpoints, the bInterval value is used as
174 * an exponent of two. Some developers forgot about it.
175 */
176 interval = ep->desc.bInterval;
177 if (interval > 16 && dev->udev->speed == USB_SPEED_HIGH &&
178 (dev->quirks & UVC_QUIRK_STATUS_INTERVAL))
179 interval = fls(interval) - 1;
180
181 usb_fill_int_urb(dev->int_urb, dev->udev, pipe,
182 dev->status, sizeof dev->status, uvc_status_complete,
183 dev, interval);
184
185 return usb_submit_urb(dev->int_urb, GFP_KERNEL);
186}
187
188void uvc_status_cleanup(struct uvc_device *dev)
189{
190 usb_kill_urb(dev->int_urb);
191 usb_free_urb(dev->int_urb);
192 uvc_input_cleanup(dev);
193}
194
195int uvc_status_suspend(struct uvc_device *dev)
196{
197 usb_kill_urb(dev->int_urb);
198 return 0;
199}
200
201int uvc_status_resume(struct uvc_device *dev)
202{
203 if (dev->int_urb == NULL)
204 return 0;
205
206 return usb_submit_urb(dev->int_urb, GFP_KERNEL);
207}
diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c
new file mode 100644
index 000000000000..2e0a66575bb4
--- /dev/null
+++ b/drivers/media/video/uvc/uvc_v4l2.c
@@ -0,0 +1,1105 @@
1/*
2 * uvc_v4l2.c -- USB Video Class driver - V4L2 API
3 *
4 * Copyright (C) 2005-2008
5 * Laurent Pinchart (laurent.pinchart@skynet.be)
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/version.h>
16#include <linux/list.h>
17#include <linux/module.h>
18#include <linux/usb.h>
19#include <linux/videodev2.h>
20#include <linux/vmalloc.h>
21#include <linux/mm.h>
22#include <linux/wait.h>
23#include <asm/atomic.h>
24
25#include <media/v4l2-common.h>
26
27#include "uvcvideo.h"
28
29/* ------------------------------------------------------------------------
30 * V4L2 interface
31 */
32
33/*
34 * Mapping V4L2 controls to UVC controls can be straighforward if done well.
35 * Most of the UVC controls exist in V4L2, and can be mapped directly. Some
36 * must be grouped (for instance the Red Balance, Blue Balance and Do White
37 * Balance V4L2 controls use the White Balance Component UVC control) or
38 * otherwise translated. The approach we take here is to use a translation
39 * table for the controls which can be mapped directly, and handle the others
40 * manually.
41 */
42static int uvc_v4l2_query_menu(struct uvc_video_device *video,
43 struct v4l2_querymenu *query_menu)
44{
45 struct uvc_menu_info *menu_info;
46 struct uvc_control_mapping *mapping;
47 struct uvc_control *ctrl;
48
49 ctrl = uvc_find_control(video, query_menu->id, &mapping);
50 if (ctrl == NULL || mapping->v4l2_type != V4L2_CTRL_TYPE_MENU)
51 return -EINVAL;
52
53 if (query_menu->index >= mapping->menu_count)
54 return -EINVAL;
55
56 menu_info = &mapping->menu_info[query_menu->index];
57 strncpy(query_menu->name, menu_info->name, 32);
58 return 0;
59}
60
61/*
62 * Find the frame interval closest to the requested frame interval for the
63 * given frame format and size. This should be done by the device as part of
64 * the Video Probe and Commit negotiation, but some hardware don't implement
65 * that feature.
66 */
67static __u32 uvc_try_frame_interval(struct uvc_frame *frame, __u32 interval)
68{
69 unsigned int i;
70
71 if (frame->bFrameIntervalType) {
72 __u32 best = -1, dist;
73
74 for (i = 0; i < frame->bFrameIntervalType; ++i) {
75 dist = interval > frame->dwFrameInterval[i]
76 ? interval - frame->dwFrameInterval[i]
77 : frame->dwFrameInterval[i] - interval;
78
79 if (dist > best)
80 break;
81
82 best = dist;
83 }
84
85 interval = frame->dwFrameInterval[i-1];
86 } else {
87 const __u32 min = frame->dwFrameInterval[0];
88 const __u32 max = frame->dwFrameInterval[1];
89 const __u32 step = frame->dwFrameInterval[2];
90
91 interval = min + (interval - min + step/2) / step * step;
92 if (interval > max)
93 interval = max;
94 }
95
96 return interval;
97}
98
99static int uvc_v4l2_try_format(struct uvc_video_device *video,
100 struct v4l2_format *fmt, struct uvc_streaming_control *probe,
101 struct uvc_format **uvc_format, struct uvc_frame **uvc_frame)
102{
103 struct uvc_format *format = NULL;
104 struct uvc_frame *frame = NULL;
105 __u16 rw, rh;
106 unsigned int d, maxd;
107 unsigned int i;
108 __u32 interval;
109 int ret = 0;
110 __u8 *fcc;
111
112 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
113 return -EINVAL;
114
115 fcc = (__u8 *)&fmt->fmt.pix.pixelformat;
116 uvc_trace(UVC_TRACE_FORMAT, "Trying format 0x%08x (%c%c%c%c): %ux%u.\n",
117 fmt->fmt.pix.pixelformat,
118 fcc[0], fcc[1], fcc[2], fcc[3],
119 fmt->fmt.pix.width, fmt->fmt.pix.height);
120
121 /* Check if the hardware supports the requested format. */
122 for (i = 0; i < video->streaming->nformats; ++i) {
123 format = &video->streaming->format[i];
124 if (format->fcc == fmt->fmt.pix.pixelformat)
125 break;
126 }
127
128 if (format == NULL || format->fcc != fmt->fmt.pix.pixelformat) {
129 uvc_trace(UVC_TRACE_FORMAT, "Unsupported format 0x%08x.\n",
130 fmt->fmt.pix.pixelformat);
131 return -EINVAL;
132 }
133
134 /* Find the closest image size. The distance between image sizes is
135 * the size in pixels of the non-overlapping regions between the
136 * requested size and the frame-specified size.
137 */
138 rw = fmt->fmt.pix.width;
139 rh = fmt->fmt.pix.height;
140 maxd = (unsigned int)-1;
141
142 for (i = 0; i < format->nframes; ++i) {
143 __u16 w = format->frame[i].wWidth;
144 __u16 h = format->frame[i].wHeight;
145
146 d = min(w, rw) * min(h, rh);
147 d = w*h + rw*rh - 2*d;
148 if (d < maxd) {
149 maxd = d;
150 frame = &format->frame[i];
151 }
152
153 if (maxd == 0)
154 break;
155 }
156
157 if (frame == NULL) {
158 uvc_trace(UVC_TRACE_FORMAT, "Unsupported size %ux%u.\n",
159 fmt->fmt.pix.width, fmt->fmt.pix.height);
160 return -EINVAL;
161 }
162
163 /* Use the default frame interval. */
164 interval = frame->dwDefaultFrameInterval;
165 uvc_trace(UVC_TRACE_FORMAT, "Using default frame interval %u.%u us "
166 "(%u.%u fps).\n", interval/10, interval%10, 10000000/interval,
167 (100000000/interval)%10);
168
169 /* Set the format index, frame index and frame interval. */
170 memset(probe, 0, sizeof *probe);
171 probe->bmHint = 1; /* dwFrameInterval */
172 probe->bFormatIndex = format->index;
173 probe->bFrameIndex = frame->bFrameIndex;
174 probe->dwFrameInterval = uvc_try_frame_interval(frame, interval);
175 /* Some webcams stall the probe control set request when the
176 * dwMaxVideoFrameSize field is set to zero. The UVC specification
177 * clearly states that the field is read-only from the host, so this
178 * is a webcam bug. Set dwMaxVideoFrameSize to the value reported by
179 * the webcam to work around the problem.
180 *
181 * The workaround could probably be enabled for all webcams, so the
182 * quirk can be removed if needed. It's currently useful to detect
183 * webcam bugs and fix them before they hit the market (providing
184 * developers test their webcams with the Linux driver as well as with
185 * the Windows driver).
186 */
187 if (video->dev->quirks & UVC_QUIRK_PROBE_EXTRAFIELDS)
188 probe->dwMaxVideoFrameSize =
189 video->streaming->ctrl.dwMaxVideoFrameSize;
190
191 /* Probe the device */
192 if ((ret = uvc_probe_video(video, probe)) < 0)
193 goto done;
194
195 fmt->fmt.pix.width = frame->wWidth;
196 fmt->fmt.pix.height = frame->wHeight;
197 fmt->fmt.pix.field = V4L2_FIELD_NONE;
198 fmt->fmt.pix.bytesperline = format->bpp * frame->wWidth / 8;
199 fmt->fmt.pix.sizeimage = probe->dwMaxVideoFrameSize;
200 fmt->fmt.pix.colorspace = format->colorspace;
201 fmt->fmt.pix.priv = 0;
202
203 if (uvc_format != NULL)
204 *uvc_format = format;
205 if (uvc_frame != NULL)
206 *uvc_frame = frame;
207
208done:
209 return ret;
210}
211
212static int uvc_v4l2_get_format(struct uvc_video_device *video,
213 struct v4l2_format *fmt)
214{
215 struct uvc_format *format = video->streaming->cur_format;
216 struct uvc_frame *frame = video->streaming->cur_frame;
217
218 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
219 return -EINVAL;
220
221 if (format == NULL || frame == NULL)
222 return -EINVAL;
223
224 fmt->fmt.pix.pixelformat = format->fcc;
225 fmt->fmt.pix.width = frame->wWidth;
226 fmt->fmt.pix.height = frame->wHeight;
227 fmt->fmt.pix.field = V4L2_FIELD_NONE;
228 fmt->fmt.pix.bytesperline = format->bpp * frame->wWidth / 8;
229 fmt->fmt.pix.sizeimage = video->streaming->ctrl.dwMaxVideoFrameSize;
230 fmt->fmt.pix.colorspace = format->colorspace;
231 fmt->fmt.pix.priv = 0;
232
233 return 0;
234}
235
236static int uvc_v4l2_set_format(struct uvc_video_device *video,
237 struct v4l2_format *fmt)
238{
239 struct uvc_streaming_control probe;
240 struct uvc_format *format;
241 struct uvc_frame *frame;
242 int ret;
243
244 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
245 return -EINVAL;
246
247 if (uvc_queue_streaming(&video->queue))
248 return -EBUSY;
249
250 ret = uvc_v4l2_try_format(video, fmt, &probe, &format, &frame);
251 if (ret < 0)
252 return ret;
253
254 if ((ret = uvc_set_video_ctrl(video, &probe, 0)) < 0)
255 return ret;
256
257 memcpy(&video->streaming->ctrl, &probe, sizeof probe);
258 video->streaming->cur_format = format;
259 video->streaming->cur_frame = frame;
260
261 return 0;
262}
263
264static int uvc_v4l2_get_streamparm(struct uvc_video_device *video,
265 struct v4l2_streamparm *parm)
266{
267 uint32_t numerator, denominator;
268
269 if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
270 return -EINVAL;
271
272 numerator = video->streaming->ctrl.dwFrameInterval;
273 denominator = 10000000;
274 uvc_simplify_fraction(&numerator, &denominator, 8, 333);
275
276 memset(parm, 0, sizeof *parm);
277 parm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
278 parm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
279 parm->parm.capture.capturemode = 0;
280 parm->parm.capture.timeperframe.numerator = numerator;
281 parm->parm.capture.timeperframe.denominator = denominator;
282 parm->parm.capture.extendedmode = 0;
283 parm->parm.capture.readbuffers = 0;
284
285 return 0;
286}
287
288static int uvc_v4l2_set_streamparm(struct uvc_video_device *video,
289 struct v4l2_streamparm *parm)
290{
291 struct uvc_frame *frame = video->streaming->cur_frame;
292 struct uvc_streaming_control probe;
293 uint32_t interval;
294 int ret;
295
296 if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
297 return -EINVAL;
298
299 if (uvc_queue_streaming(&video->queue))
300 return -EBUSY;
301
302 memcpy(&probe, &video->streaming->ctrl, sizeof probe);
303 interval = uvc_fraction_to_interval(
304 parm->parm.capture.timeperframe.numerator,
305 parm->parm.capture.timeperframe.denominator);
306
307 uvc_trace(UVC_TRACE_FORMAT, "Setting frame interval to %u/%u (%u).\n",
308 parm->parm.capture.timeperframe.numerator,
309 parm->parm.capture.timeperframe.denominator,
310 interval);
311 probe.dwFrameInterval = uvc_try_frame_interval(frame, interval);
312
313 /* Probe the device with the new settings. */
314 if ((ret = uvc_probe_video(video, &probe)) < 0)
315 return ret;
316
317 /* Commit the new settings. */
318 if ((ret = uvc_set_video_ctrl(video, &probe, 0)) < 0)
319 return ret;
320
321 memcpy(&video->streaming->ctrl, &probe, sizeof probe);
322
323 /* Return the actual frame period. */
324 parm->parm.capture.timeperframe.numerator = probe.dwFrameInterval;
325 parm->parm.capture.timeperframe.denominator = 10000000;
326 uvc_simplify_fraction(&parm->parm.capture.timeperframe.numerator,
327 &parm->parm.capture.timeperframe.denominator,
328 8, 333);
329
330 return 0;
331}
332
333/* ------------------------------------------------------------------------
334 * Privilege management
335 */
336
337/*
338 * Privilege management is the multiple-open implementation basis. The current
339 * implementation is completely transparent for the end-user and doesn't
340 * require explicit use of the VIDIOC_G_PRIORITY and VIDIOC_S_PRIORITY ioctls.
341 * Those ioctls enable finer control on the device (by making possible for a
342 * user to request exclusive access to a device), but are not mature yet.
343 * Switching to the V4L2 priority mechanism might be considered in the future
344 * if this situation changes.
345 *
346 * Each open instance of a UVC device can either be in a privileged or
347 * unprivileged state. Only a single instance can be in a privileged state at
348 * a given time. Trying to perform an operation which requires privileges will
349 * automatically acquire the required privileges if possible, or return -EBUSY
350 * otherwise. Privileges are dismissed when closing the instance.
351 *
352 * Operations which require privileges are:
353 *
354 * - VIDIOC_S_INPUT
355 * - VIDIOC_S_PARM
356 * - VIDIOC_S_FMT
357 * - VIDIOC_TRY_FMT
358 * - VIDIOC_REQBUFS
359 */
360static int uvc_acquire_privileges(struct uvc_fh *handle)
361{
362 int ret = 0;
363
364 /* Always succeed if the handle is already privileged. */
365 if (handle->state == UVC_HANDLE_ACTIVE)
366 return 0;
367
368 /* Check if the device already has a privileged handle. */
369 mutex_lock(&uvc_driver.open_mutex);
370 if (atomic_inc_return(&handle->device->active) != 1) {
371 atomic_dec(&handle->device->active);
372 ret = -EBUSY;
373 goto done;
374 }
375
376 handle->state = UVC_HANDLE_ACTIVE;
377
378done:
379 mutex_unlock(&uvc_driver.open_mutex);
380 return ret;
381}
382
383static void uvc_dismiss_privileges(struct uvc_fh *handle)
384{
385 if (handle->state == UVC_HANDLE_ACTIVE)
386 atomic_dec(&handle->device->active);
387
388 handle->state = UVC_HANDLE_PASSIVE;
389}
390
391static int uvc_has_privileges(struct uvc_fh *handle)
392{
393 return handle->state == UVC_HANDLE_ACTIVE;
394}
395
396/* ------------------------------------------------------------------------
397 * V4L2 file operations
398 */
399
400static int uvc_v4l2_open(struct inode *inode, struct file *file)
401{
402 struct video_device *vdev;
403 struct uvc_video_device *video;
404 struct uvc_fh *handle;
405 int ret = 0;
406
407 uvc_trace(UVC_TRACE_CALLS, "uvc_v4l2_open\n");
408 mutex_lock(&uvc_driver.open_mutex);
409 vdev = video_devdata(file);
410 video = video_get_drvdata(vdev);
411
412 if (video->dev->state & UVC_DEV_DISCONNECTED) {
413 ret = -ENODEV;
414 goto done;
415 }
416
417 ret = usb_autopm_get_interface(video->dev->intf);
418 if (ret < 0)
419 goto done;
420
421 /* Create the device handle. */
422 handle = kzalloc(sizeof *handle, GFP_KERNEL);
423 if (handle == NULL) {
424 usb_autopm_put_interface(video->dev->intf);
425 ret = -ENOMEM;
426 goto done;
427 }
428
429 handle->device = video;
430 handle->state = UVC_HANDLE_PASSIVE;
431 file->private_data = handle;
432
433 kref_get(&video->dev->kref);
434
435done:
436 mutex_unlock(&uvc_driver.open_mutex);
437 return ret;
438}
439
440static int uvc_v4l2_release(struct inode *inode, struct file *file)
441{
442 struct video_device *vdev = video_devdata(file);
443 struct uvc_video_device *video = video_get_drvdata(vdev);
444 struct uvc_fh *handle = (struct uvc_fh *)file->private_data;
445
446 uvc_trace(UVC_TRACE_CALLS, "uvc_v4l2_release\n");
447
448 /* Only free resources if this is a privileged handle. */
449 if (uvc_has_privileges(handle)) {
450 uvc_video_enable(video, 0);
451
452 mutex_lock(&video->queue.mutex);
453 if (uvc_free_buffers(&video->queue) < 0)
454 uvc_printk(KERN_ERR, "uvc_v4l2_release: Unable to "
455 "free buffers.\n");
456 mutex_unlock(&video->queue.mutex);
457 }
458
459 /* Release the file handle. */
460 uvc_dismiss_privileges(handle);
461 kfree(handle);
462 file->private_data = NULL;
463
464 usb_autopm_put_interface(video->dev->intf);
465 kref_put(&video->dev->kref, uvc_delete);
466 return 0;
467}
468
469static int uvc_v4l2_do_ioctl(struct inode *inode, struct file *file,
470 unsigned int cmd, void *arg)
471{
472 struct video_device *vdev = video_devdata(file);
473 struct uvc_video_device *video = video_get_drvdata(vdev);
474 struct uvc_fh *handle = (struct uvc_fh *)file->private_data;
475 int ret = 0;
476
477 if (uvc_trace_param & UVC_TRACE_IOCTL)
478 v4l_printk_ioctl(cmd);
479
480 switch (cmd) {
481 /* Query capabilities */
482 case VIDIOC_QUERYCAP:
483 {
484 struct v4l2_capability *cap = arg;
485
486 memset(cap, 0, sizeof *cap);
487 strncpy(cap->driver, "uvcvideo", sizeof cap->driver);
488 strncpy(cap->card, vdev->name, 32);
489 strncpy(cap->bus_info, video->dev->udev->bus->bus_name,
490 sizeof cap->bus_info);
491 cap->version = DRIVER_VERSION_NUMBER;
492 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE
493 | V4L2_CAP_STREAMING;
494 break;
495 }
496
497 /* Get, Set & Query control */
498 case VIDIOC_QUERYCTRL:
499 return uvc_query_v4l2_ctrl(video, arg);
500
501 case VIDIOC_G_CTRL:
502 {
503 struct v4l2_control *ctrl = arg;
504 struct v4l2_ext_control xctrl;
505
506 memset(&xctrl, 0, sizeof xctrl);
507 xctrl.id = ctrl->id;
508
509 uvc_ctrl_begin(video);
510 ret = uvc_ctrl_get(video, &xctrl);
511 uvc_ctrl_rollback(video);
512 if (ret >= 0)
513 ctrl->value = xctrl.value;
514 break;
515 }
516
517 case VIDIOC_S_CTRL:
518 {
519 struct v4l2_control *ctrl = arg;
520 struct v4l2_ext_control xctrl;
521
522 memset(&xctrl, 0, sizeof xctrl);
523 xctrl.id = ctrl->id;
524 xctrl.value = ctrl->value;
525
526 uvc_ctrl_begin(video);
527 ret = uvc_ctrl_set(video, &xctrl);
528 if (ret < 0) {
529 uvc_ctrl_rollback(video);
530 return ret;
531 }
532 ret = uvc_ctrl_commit(video);
533 break;
534 }
535
536 case VIDIOC_QUERYMENU:
537 return uvc_v4l2_query_menu(video, arg);
538
539 case VIDIOC_G_EXT_CTRLS:
540 {
541 struct v4l2_ext_controls *ctrls = arg;
542 struct v4l2_ext_control *ctrl = ctrls->controls;
543 unsigned int i;
544
545 uvc_ctrl_begin(video);
546 for (i = 0; i < ctrls->count; ++ctrl, ++i) {
547 ret = uvc_ctrl_get(video, ctrl);
548 if (ret < 0) {
549 uvc_ctrl_rollback(video);
550 ctrls->error_idx = i;
551 return ret;
552 }
553 }
554 ctrls->error_idx = 0;
555 ret = uvc_ctrl_rollback(video);
556 break;
557 }
558
559 case VIDIOC_S_EXT_CTRLS:
560 case VIDIOC_TRY_EXT_CTRLS:
561 {
562 struct v4l2_ext_controls *ctrls = arg;
563 struct v4l2_ext_control *ctrl = ctrls->controls;
564 unsigned int i;
565
566 ret = uvc_ctrl_begin(video);
567 if (ret < 0)
568 return ret;
569
570 for (i = 0; i < ctrls->count; ++ctrl, ++i) {
571 ret = uvc_ctrl_set(video, ctrl);
572 if (ret < 0) {
573 uvc_ctrl_rollback(video);
574 ctrls->error_idx = i;
575 return ret;
576 }
577 }
578
579 ctrls->error_idx = 0;
580
581 if (cmd == VIDIOC_S_EXT_CTRLS)
582 ret = uvc_ctrl_commit(video);
583 else
584 ret = uvc_ctrl_rollback(video);
585 break;
586 }
587
588 /* Get, Set & Enum input */
589 case VIDIOC_ENUMINPUT:
590 {
591 const struct uvc_entity *selector = video->selector;
592 struct v4l2_input *input = arg;
593 struct uvc_entity *iterm = NULL;
594 u32 index = input->index;
595 int pin = 0;
596
597 if (selector == NULL ||
598 (video->dev->quirks & UVC_QUIRK_IGNORE_SELECTOR_UNIT)) {
599 if (index != 0)
600 return -EINVAL;
601 iterm = list_first_entry(&video->iterms,
602 struct uvc_entity, chain);
603 pin = iterm->id;
604 } else if (pin < selector->selector.bNrInPins) {
605 pin = selector->selector.baSourceID[index];
606 list_for_each_entry(iterm, video->iterms.next, chain) {
607 if (iterm->id == pin)
608 break;
609 }
610 }
611
612 if (iterm == NULL || iterm->id != pin)
613 return -EINVAL;
614
615 memset(input, 0, sizeof *input);
616 input->index = index;
617 strncpy(input->name, iterm->name, sizeof input->name);
618 if (UVC_ENTITY_TYPE(iterm) == ITT_CAMERA)
619 input->type = V4L2_INPUT_TYPE_CAMERA;
620 break;
621 }
622
623 case VIDIOC_G_INPUT:
624 {
625 u8 input;
626
627 if (video->selector == NULL ||
628 (video->dev->quirks & UVC_QUIRK_IGNORE_SELECTOR_UNIT)) {
629 *(int *)arg = 0;
630 break;
631 }
632
633 ret = uvc_query_ctrl(video->dev, GET_CUR, video->selector->id,
634 video->dev->intfnum, SU_INPUT_SELECT_CONTROL,
635 &input, 1);
636 if (ret < 0)
637 return ret;
638
639 *(int *)arg = input - 1;
640 break;
641 }
642
643 case VIDIOC_S_INPUT:
644 {
645 u8 input = *(u32 *)arg + 1;
646
647 if ((ret = uvc_acquire_privileges(handle)) < 0)
648 return ret;
649
650 if (video->selector == NULL ||
651 (video->dev->quirks & UVC_QUIRK_IGNORE_SELECTOR_UNIT)) {
652 if (input != 1)
653 return -EINVAL;
654 break;
655 }
656
657 if (input > video->selector->selector.bNrInPins)
658 return -EINVAL;
659
660 return uvc_query_ctrl(video->dev, SET_CUR, video->selector->id,
661 video->dev->intfnum, SU_INPUT_SELECT_CONTROL,
662 &input, 1);
663 }
664
665 /* Try, Get, Set & Enum format */
666 case VIDIOC_ENUM_FMT:
667 {
668 struct v4l2_fmtdesc *fmt = arg;
669 struct uvc_format *format;
670
671 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
672 fmt->index >= video->streaming->nformats)
673 return -EINVAL;
674
675 format = &video->streaming->format[fmt->index];
676 fmt->flags = 0;
677 if (format->flags & UVC_FMT_FLAG_COMPRESSED)
678 fmt->flags |= V4L2_FMT_FLAG_COMPRESSED;
679 strncpy(fmt->description, format->name,
680 sizeof fmt->description);
681 fmt->description[sizeof fmt->description - 1] = 0;
682 fmt->pixelformat = format->fcc;
683 break;
684 }
685
686 case VIDIOC_TRY_FMT:
687 {
688 struct uvc_streaming_control probe;
689
690 if ((ret = uvc_acquire_privileges(handle)) < 0)
691 return ret;
692
693 return uvc_v4l2_try_format(video, arg, &probe, NULL, NULL);
694 }
695
696 case VIDIOC_S_FMT:
697 if ((ret = uvc_acquire_privileges(handle)) < 0)
698 return ret;
699
700 return uvc_v4l2_set_format(video, arg);
701
702 case VIDIOC_G_FMT:
703 return uvc_v4l2_get_format(video, arg);
704
705 /* Frame size enumeration */
706 case VIDIOC_ENUM_FRAMESIZES:
707 {
708 struct v4l2_frmsizeenum *fsize = arg;
709 struct uvc_format *format = NULL;
710 struct uvc_frame *frame;
711 int i;
712
713 /* Look for the given pixel format */
714 for (i = 0; i < video->streaming->nformats; i++) {
715 if (video->streaming->format[i].fcc ==
716 fsize->pixel_format) {
717 format = &video->streaming->format[i];
718 break;
719 }
720 }
721 if (format == NULL)
722 return -EINVAL;
723
724 if (fsize->index >= format->nframes)
725 return -EINVAL;
726
727 frame = &format->frame[fsize->index];
728 fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
729 fsize->discrete.width = frame->wWidth;
730 fsize->discrete.height = frame->wHeight;
731 break;
732 }
733
734 /* Frame interval enumeration */
735 case VIDIOC_ENUM_FRAMEINTERVALS:
736 {
737 struct v4l2_frmivalenum *fival = arg;
738 struct uvc_format *format = NULL;
739 struct uvc_frame *frame = NULL;
740 int i;
741
742 /* Look for the given pixel format and frame size */
743 for (i = 0; i < video->streaming->nformats; i++) {
744 if (video->streaming->format[i].fcc ==
745 fival->pixel_format) {
746 format = &video->streaming->format[i];
747 break;
748 }
749 }
750 if (format == NULL)
751 return -EINVAL;
752
753 for (i = 0; i < format->nframes; i++) {
754 if (format->frame[i].wWidth == fival->width &&
755 format->frame[i].wHeight == fival->height) {
756 frame = &format->frame[i];
757 break;
758 }
759 }
760 if (frame == NULL)
761 return -EINVAL;
762
763 if (frame->bFrameIntervalType) {
764 if (fival->index >= frame->bFrameIntervalType)
765 return -EINVAL;
766
767 fival->type = V4L2_FRMIVAL_TYPE_DISCRETE;
768 fival->discrete.numerator =
769 frame->dwFrameInterval[fival->index];
770 fival->discrete.denominator = 10000000;
771 uvc_simplify_fraction(&fival->discrete.numerator,
772 &fival->discrete.denominator, 8, 333);
773 } else {
774 fival->type = V4L2_FRMIVAL_TYPE_STEPWISE;
775 fival->stepwise.min.numerator =
776 frame->dwFrameInterval[0];
777 fival->stepwise.min.denominator = 10000000;
778 fival->stepwise.max.numerator =
779 frame->dwFrameInterval[1];
780 fival->stepwise.max.denominator = 10000000;
781 fival->stepwise.step.numerator =
782 frame->dwFrameInterval[2];
783 fival->stepwise.step.denominator = 10000000;
784 uvc_simplify_fraction(&fival->stepwise.min.numerator,
785 &fival->stepwise.min.denominator, 8, 333);
786 uvc_simplify_fraction(&fival->stepwise.max.numerator,
787 &fival->stepwise.max.denominator, 8, 333);
788 uvc_simplify_fraction(&fival->stepwise.step.numerator,
789 &fival->stepwise.step.denominator, 8, 333);
790 }
791 break;
792 }
793
794 /* Get & Set streaming parameters */
795 case VIDIOC_G_PARM:
796 return uvc_v4l2_get_streamparm(video, arg);
797
798 case VIDIOC_S_PARM:
799 if ((ret = uvc_acquire_privileges(handle)) < 0)
800 return ret;
801
802 return uvc_v4l2_set_streamparm(video, arg);
803
804 /* Cropping and scaling */
805 case VIDIOC_CROPCAP:
806 {
807 struct v4l2_cropcap *ccap = arg;
808 struct uvc_frame *frame = video->streaming->cur_frame;
809
810 if (ccap->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
811 return -EINVAL;
812
813 ccap->bounds.left = 0;
814 ccap->bounds.top = 0;
815 ccap->bounds.width = frame->wWidth;
816 ccap->bounds.height = frame->wHeight;
817
818 ccap->defrect = ccap->bounds;
819
820 ccap->pixelaspect.numerator = 1;
821 ccap->pixelaspect.denominator = 1;
822 break;
823 }
824
825 case VIDIOC_G_CROP:
826 case VIDIOC_S_CROP:
827 return -EINVAL;
828
829 /* Buffers & streaming */
830 case VIDIOC_REQBUFS:
831 {
832 struct v4l2_requestbuffers *rb = arg;
833 unsigned int bufsize =
834 video->streaming->ctrl.dwMaxVideoFrameSize;
835
836 if (rb->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
837 rb->memory != V4L2_MEMORY_MMAP)
838 return -EINVAL;
839
840 if ((ret = uvc_acquire_privileges(handle)) < 0)
841 return ret;
842
843 ret = uvc_alloc_buffers(&video->queue, rb->count, bufsize);
844 if (ret < 0)
845 return ret;
846
847 if (!(video->streaming->cur_format->flags &
848 UVC_FMT_FLAG_COMPRESSED))
849 video->queue.flags |= UVC_QUEUE_DROP_INCOMPLETE;
850
851 rb->count = ret;
852 ret = 0;
853 break;
854 }
855
856 case VIDIOC_QUERYBUF:
857 {
858 struct v4l2_buffer *buf = arg;
859
860 if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
861 return -EINVAL;
862
863 if (!uvc_has_privileges(handle))
864 return -EBUSY;
865
866 return uvc_query_buffer(&video->queue, buf);
867 }
868
869 case VIDIOC_QBUF:
870 if (!uvc_has_privileges(handle))
871 return -EBUSY;
872
873 return uvc_queue_buffer(&video->queue, arg);
874
875 case VIDIOC_DQBUF:
876 if (!uvc_has_privileges(handle))
877 return -EBUSY;
878
879 return uvc_dequeue_buffer(&video->queue, arg,
880 file->f_flags & O_NONBLOCK);
881
882 case VIDIOC_STREAMON:
883 {
884 int *type = arg;
885
886 if (*type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
887 return -EINVAL;
888
889 if (!uvc_has_privileges(handle))
890 return -EBUSY;
891
892 if ((ret = uvc_video_enable(video, 1)) < 0)
893 return ret;
894 break;
895 }
896
897 case VIDIOC_STREAMOFF:
898 {
899 int *type = arg;
900
901 if (*type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
902 return -EINVAL;
903
904 if (!uvc_has_privileges(handle))
905 return -EBUSY;
906
907 return uvc_video_enable(video, 0);
908 }
909
910 /* Analog video standards make no sense for digital cameras. */
911 case VIDIOC_ENUMSTD:
912 case VIDIOC_QUERYSTD:
913 case VIDIOC_G_STD:
914 case VIDIOC_S_STD:
915
916 case VIDIOC_OVERLAY:
917
918 case VIDIOC_ENUMAUDIO:
919 case VIDIOC_ENUMAUDOUT:
920
921 case VIDIOC_ENUMOUTPUT:
922 uvc_trace(UVC_TRACE_IOCTL, "Unsupported ioctl 0x%08x\n", cmd);
923 return -EINVAL;
924
925 /* Dynamic controls. */
926 case UVCIOC_CTRL_ADD:
927 {
928 struct uvc_xu_control_info *xinfo = arg;
929 struct uvc_control_info *info;
930
931 if (!capable(CAP_SYS_ADMIN))
932 return -EPERM;
933
934 info = kmalloc(sizeof *info, GFP_KERNEL);
935 if (info == NULL)
936 return -ENOMEM;
937
938 memcpy(info->entity, xinfo->entity, sizeof info->entity);
939 info->index = xinfo->index;
940 info->selector = xinfo->selector;
941 info->size = xinfo->size;
942 info->flags = xinfo->flags;
943
944 info->flags |= UVC_CONTROL_GET_MIN | UVC_CONTROL_GET_MAX |
945 UVC_CONTROL_GET_RES | UVC_CONTROL_GET_DEF;
946
947 ret = uvc_ctrl_add_info(info);
948 if (ret < 0)
949 kfree(info);
950 break;
951 }
952
953 case UVCIOC_CTRL_MAP:
954 {
955 struct uvc_xu_control_mapping *xmap = arg;
956 struct uvc_control_mapping *map;
957
958 if (!capable(CAP_SYS_ADMIN))
959 return -EPERM;
960
961 map = kmalloc(sizeof *map, GFP_KERNEL);
962 if (map == NULL)
963 return -ENOMEM;
964
965 map->id = xmap->id;
966 memcpy(map->name, xmap->name, sizeof map->name);
967 memcpy(map->entity, xmap->entity, sizeof map->entity);
968 map->selector = xmap->selector;
969 map->size = xmap->size;
970 map->offset = xmap->offset;
971 map->v4l2_type = xmap->v4l2_type;
972 map->data_type = xmap->data_type;
973
974 ret = uvc_ctrl_add_mapping(map);
975 if (ret < 0)
976 kfree(map);
977 break;
978 }
979
980 case UVCIOC_CTRL_GET:
981 return uvc_xu_ctrl_query(video, arg, 0);
982
983 case UVCIOC_CTRL_SET:
984 return uvc_xu_ctrl_query(video, arg, 1);
985
986 default:
987 if ((ret = v4l_compat_translate_ioctl(inode, file, cmd, arg,
988 uvc_v4l2_do_ioctl)) == -ENOIOCTLCMD)
989 uvc_trace(UVC_TRACE_IOCTL, "Unknown ioctl 0x%08x\n",
990 cmd);
991 return ret;
992 }
993
994 return ret;
995}
996
997static int uvc_v4l2_ioctl(struct inode *inode, struct file *file,
998 unsigned int cmd, unsigned long arg)
999{
1000 uvc_trace(UVC_TRACE_CALLS, "uvc_v4l2_ioctl\n");
1001 return video_usercopy(inode, file, cmd, arg, uvc_v4l2_do_ioctl);
1002}
1003
1004static ssize_t uvc_v4l2_read(struct file *file, char __user *data,
1005 size_t count, loff_t *ppos)
1006{
1007 uvc_trace(UVC_TRACE_CALLS, "uvc_v4l2_read: not implemented.\n");
1008 return -ENODEV;
1009}
1010
1011/*
1012 * VMA operations.
1013 */
1014static void uvc_vm_open(struct vm_area_struct *vma)
1015{
1016 struct uvc_buffer *buffer = vma->vm_private_data;
1017 buffer->vma_use_count++;
1018}
1019
1020static void uvc_vm_close(struct vm_area_struct *vma)
1021{
1022 struct uvc_buffer *buffer = vma->vm_private_data;
1023 buffer->vma_use_count--;
1024}
1025
1026static struct vm_operations_struct uvc_vm_ops = {
1027 .open = uvc_vm_open,
1028 .close = uvc_vm_close,
1029};
1030
1031static int uvc_v4l2_mmap(struct file *file, struct vm_area_struct *vma)
1032{
1033 struct video_device *vdev = video_devdata(file);
1034 struct uvc_video_device *video = video_get_drvdata(vdev);
1035 struct uvc_buffer *buffer;
1036 struct page *page;
1037 unsigned long addr, start, size;
1038 unsigned int i;
1039 int ret = 0;
1040
1041 uvc_trace(UVC_TRACE_CALLS, "uvc_v4l2_mmap\n");
1042
1043 start = vma->vm_start;
1044 size = vma->vm_end - vma->vm_start;
1045
1046 mutex_lock(&video->queue.mutex);
1047
1048 for (i = 0; i < video->queue.count; ++i) {
1049 buffer = &video->queue.buffer[i];
1050 if ((buffer->buf.m.offset >> PAGE_SHIFT) == vma->vm_pgoff)
1051 break;
1052 }
1053
1054 if (i == video->queue.count || size != video->queue.buf_size) {
1055 ret = -EINVAL;
1056 goto done;
1057 }
1058
1059 /*
1060 * VM_IO marks the area as being an mmaped region for I/O to a
1061 * device. It also prevents the region from being core dumped.
1062 */
1063 vma->vm_flags |= VM_IO;
1064
1065 addr = (unsigned long)video->queue.mem + buffer->buf.m.offset;
1066 while (size > 0) {
1067 page = vmalloc_to_page((void *)addr);
1068 if ((ret = vm_insert_page(vma, start, page)) < 0)
1069 goto done;
1070
1071 start += PAGE_SIZE;
1072 addr += PAGE_SIZE;
1073 size -= PAGE_SIZE;
1074 }
1075
1076 vma->vm_ops = &uvc_vm_ops;
1077 vma->vm_private_data = buffer;
1078 uvc_vm_open(vma);
1079
1080done:
1081 mutex_unlock(&video->queue.mutex);
1082 return ret;
1083}
1084
1085static unsigned int uvc_v4l2_poll(struct file *file, poll_table *wait)
1086{
1087 struct video_device *vdev = video_devdata(file);
1088 struct uvc_video_device *video = video_get_drvdata(vdev);
1089
1090 uvc_trace(UVC_TRACE_CALLS, "uvc_v4l2_poll\n");
1091
1092 return uvc_queue_poll(&video->queue, file, wait);
1093}
1094
1095struct file_operations uvc_fops = {
1096 .owner = THIS_MODULE,
1097 .open = uvc_v4l2_open,
1098 .release = uvc_v4l2_release,
1099 .ioctl = uvc_v4l2_ioctl,
1100 .compat_ioctl = v4l_compat_ioctl32,
1101 .llseek = no_llseek,
1102 .read = uvc_v4l2_read,
1103 .mmap = uvc_v4l2_mmap,
1104 .poll = uvc_v4l2_poll,
1105};
diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c
new file mode 100644
index 000000000000..6faf1fb21614
--- /dev/null
+++ b/drivers/media/video/uvc/uvc_video.c
@@ -0,0 +1,934 @@
1/*
2 * uvc_video.c -- USB Video Class driver - Video handling
3 *
4 * Copyright (C) 2005-2008
5 * Laurent Pinchart (laurent.pinchart@skynet.be)
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 */
13
14#include <linux/kernel.h>
15#include <linux/version.h>
16#include <linux/list.h>
17#include <linux/module.h>
18#include <linux/usb.h>
19#include <linux/videodev2.h>
20#include <linux/vmalloc.h>
21#include <linux/wait.h>
22#include <asm/atomic.h>
23#include <asm/unaligned.h>
24
25#include <media/v4l2-common.h>
26
27#include "uvcvideo.h"
28
29/* ------------------------------------------------------------------------
30 * UVC Controls
31 */
32
33static int __uvc_query_ctrl(struct uvc_device *dev, __u8 query, __u8 unit,
34 __u8 intfnum, __u8 cs, void *data, __u16 size,
35 int timeout)
36{
37 __u8 type = USB_TYPE_CLASS | USB_RECIP_INTERFACE;
38 unsigned int pipe;
39 int ret;
40
41 pipe = (query & 0x80) ? usb_rcvctrlpipe(dev->udev, 0)
42 : usb_sndctrlpipe(dev->udev, 0);
43 type |= (query & 0x80) ? USB_DIR_IN : USB_DIR_OUT;
44
45 ret = usb_control_msg(dev->udev, pipe, query, type, cs << 8,
46 unit << 8 | intfnum, data, size, timeout);
47
48 if (ret != size) {
49 uvc_printk(KERN_ERR, "Failed to query (%u) UVC control %u "
50 "(unit %u) : %d (exp. %u).\n", query, cs, unit, ret,
51 size);
52 return -EIO;
53 }
54
55 return 0;
56}
57
58int uvc_query_ctrl(struct uvc_device *dev, __u8 query, __u8 unit,
59 __u8 intfnum, __u8 cs, void *data, __u16 size)
60{
61 return __uvc_query_ctrl(dev, query, unit, intfnum, cs, data, size,
62 UVC_CTRL_CONTROL_TIMEOUT);
63}
64
65static void uvc_fixup_buffer_size(struct uvc_video_device *video,
66 struct uvc_streaming_control *ctrl)
67{
68 struct uvc_format *format;
69 struct uvc_frame *frame;
70
71 if (ctrl->bFormatIndex <= 0 ||
72 ctrl->bFormatIndex > video->streaming->nformats)
73 return;
74
75 format = &video->streaming->format[ctrl->bFormatIndex - 1];
76
77 if (ctrl->bFrameIndex <= 0 ||
78 ctrl->bFrameIndex > format->nframes)
79 return;
80
81 frame = &format->frame[ctrl->bFrameIndex - 1];
82
83 if (!(format->flags & UVC_FMT_FLAG_COMPRESSED) ||
84 (ctrl->dwMaxVideoFrameSize == 0 &&
85 video->dev->uvc_version < 0x0110))
86 ctrl->dwMaxVideoFrameSize =
87 frame->dwMaxVideoFrameBufferSize;
88}
89
90static int uvc_get_video_ctrl(struct uvc_video_device *video,
91 struct uvc_streaming_control *ctrl, int probe, __u8 query)
92{
93 __u8 data[34];
94 __u8 size;
95 int ret;
96
97 size = video->dev->uvc_version >= 0x0110 ? 34 : 26;
98 ret = __uvc_query_ctrl(video->dev, query, 0, video->streaming->intfnum,
99 probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, &data, size,
100 UVC_CTRL_STREAMING_TIMEOUT);
101
102 if (ret < 0)
103 return ret;
104
105 ctrl->bmHint = le16_to_cpup((__le16 *)&data[0]);
106 ctrl->bFormatIndex = data[2];
107 ctrl->bFrameIndex = data[3];
108 ctrl->dwFrameInterval = le32_to_cpup((__le32 *)&data[4]);
109 ctrl->wKeyFrameRate = le16_to_cpup((__le16 *)&data[8]);
110 ctrl->wPFrameRate = le16_to_cpup((__le16 *)&data[10]);
111 ctrl->wCompQuality = le16_to_cpup((__le16 *)&data[12]);
112 ctrl->wCompWindowSize = le16_to_cpup((__le16 *)&data[14]);
113 ctrl->wDelay = le16_to_cpup((__le16 *)&data[16]);
114 ctrl->dwMaxVideoFrameSize =
115 le32_to_cpu(get_unaligned((__le32 *)&data[18]));
116 ctrl->dwMaxPayloadTransferSize =
117 le32_to_cpu(get_unaligned((__le32 *)&data[22]));
118
119 if (size == 34) {
120 ctrl->dwClockFrequency =
121 le32_to_cpu(get_unaligned((__le32 *)&data[26]));
122 ctrl->bmFramingInfo = data[30];
123 ctrl->bPreferedVersion = data[31];
124 ctrl->bMinVersion = data[32];
125 ctrl->bMaxVersion = data[33];
126 } else {
127 ctrl->dwClockFrequency = video->dev->clock_frequency;
128 ctrl->bmFramingInfo = 0;
129 ctrl->bPreferedVersion = 0;
130 ctrl->bMinVersion = 0;
131 ctrl->bMaxVersion = 0;
132 }
133
134 /* Some broken devices return a null or wrong dwMaxVideoFrameSize.
135 * Try to get the value from the format and frame descriptor.
136 */
137 uvc_fixup_buffer_size(video, ctrl);
138
139 return 0;
140}
141
142int uvc_set_video_ctrl(struct uvc_video_device *video,
143 struct uvc_streaming_control *ctrl, int probe)
144{
145 __u8 data[34];
146 __u8 size;
147
148 size = video->dev->uvc_version >= 0x0110 ? 34 : 26;
149 memset(data, 0, sizeof data);
150
151 *(__le16 *)&data[0] = cpu_to_le16(ctrl->bmHint);
152 data[2] = ctrl->bFormatIndex;
153 data[3] = ctrl->bFrameIndex;
154 *(__le32 *)&data[4] = cpu_to_le32(ctrl->dwFrameInterval);
155 *(__le16 *)&data[8] = cpu_to_le16(ctrl->wKeyFrameRate);
156 *(__le16 *)&data[10] = cpu_to_le16(ctrl->wPFrameRate);
157 *(__le16 *)&data[12] = cpu_to_le16(ctrl->wCompQuality);
158 *(__le16 *)&data[14] = cpu_to_le16(ctrl->wCompWindowSize);
159 *(__le16 *)&data[16] = cpu_to_le16(ctrl->wDelay);
160 /* Note: Some of the fields below are not required for IN devices (see
161 * UVC spec, 4.3.1.1), but we still copy them in case support for OUT
162 * devices is added in the future. */
163 put_unaligned(cpu_to_le32(ctrl->dwMaxVideoFrameSize),
164 (__le32 *)&data[18]);
165 put_unaligned(cpu_to_le32(ctrl->dwMaxPayloadTransferSize),
166 (__le32 *)&data[22]);
167
168 if (size == 34) {
169 put_unaligned(cpu_to_le32(ctrl->dwClockFrequency),
170 (__le32 *)&data[26]);
171 data[30] = ctrl->bmFramingInfo;
172 data[31] = ctrl->bPreferedVersion;
173 data[32] = ctrl->bMinVersion;
174 data[33] = ctrl->bMaxVersion;
175 }
176
177 return __uvc_query_ctrl(video->dev, SET_CUR, 0,
178 video->streaming->intfnum,
179 probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, &data, size,
180 UVC_CTRL_STREAMING_TIMEOUT);
181}
182
183int uvc_probe_video(struct uvc_video_device *video,
184 struct uvc_streaming_control *probe)
185{
186 struct uvc_streaming_control probe_min, probe_max;
187 __u16 bandwidth;
188 unsigned int i;
189 int ret;
190
191 mutex_lock(&video->streaming->mutex);
192
193 /* Perform probing. The device should adjust the requested values
194 * according to its capabilities. However, some devices, namely the
195 * first generation UVC Logitech webcams, don't implement the Video
196 * Probe control properly, and just return the needed bandwidth. For
197 * that reason, if the needed bandwidth exceeds the maximum available
198 * bandwidth, try to lower the quality.
199 */
200 if ((ret = uvc_set_video_ctrl(video, probe, 1)) < 0)
201 goto done;
202
203 /* Get the minimum and maximum values for compression settings. */
204 if (!(video->dev->quirks & UVC_QUIRK_PROBE_MINMAX)) {
205 ret = uvc_get_video_ctrl(video, &probe_min, 1, GET_MIN);
206 if (ret < 0)
207 goto done;
208 ret = uvc_get_video_ctrl(video, &probe_max, 1, GET_MAX);
209 if (ret < 0)
210 goto done;
211
212 probe->wCompQuality = probe_max.wCompQuality;
213 }
214
215 for (i = 0; i < 2; ++i) {
216 if ((ret = uvc_set_video_ctrl(video, probe, 1)) < 0 ||
217 (ret = uvc_get_video_ctrl(video, probe, 1, GET_CUR)) < 0)
218 goto done;
219
220 if (video->streaming->intf->num_altsetting == 1)
221 break;
222
223 bandwidth = probe->dwMaxPayloadTransferSize;
224 if (bandwidth <= video->streaming->maxpsize)
225 break;
226
227 if (video->dev->quirks & UVC_QUIRK_PROBE_MINMAX) {
228 ret = -ENOSPC;
229 goto done;
230 }
231
232 /* TODO: negotiate compression parameters */
233 probe->wKeyFrameRate = probe_min.wKeyFrameRate;
234 probe->wPFrameRate = probe_min.wPFrameRate;
235 probe->wCompQuality = probe_max.wCompQuality;
236 probe->wCompWindowSize = probe_min.wCompWindowSize;
237 }
238
239done:
240 mutex_unlock(&video->streaming->mutex);
241 return ret;
242}
243
244/* ------------------------------------------------------------------------
245 * Video codecs
246 */
247
248/* Values for bmHeaderInfo (Video and Still Image Payload Headers, 2.4.3.3) */
249#define UVC_STREAM_EOH (1 << 7)
250#define UVC_STREAM_ERR (1 << 6)
251#define UVC_STREAM_STI (1 << 5)
252#define UVC_STREAM_RES (1 << 4)
253#define UVC_STREAM_SCR (1 << 3)
254#define UVC_STREAM_PTS (1 << 2)
255#define UVC_STREAM_EOF (1 << 1)
256#define UVC_STREAM_FID (1 << 0)
257
258/* Video payload decoding is handled by uvc_video_decode_start(),
259 * uvc_video_decode_data() and uvc_video_decode_end().
260 *
261 * uvc_video_decode_start is called with URB data at the start of a bulk or
262 * isochronous payload. It processes header data and returns the header size
263 * in bytes if successful. If an error occurs, it returns a negative error
264 * code. The following error codes have special meanings.
265 *
266 * - EAGAIN informs the caller that the current video buffer should be marked
267 * as done, and that the function should be called again with the same data
268 * and a new video buffer. This is used when end of frame conditions can be
269 * reliably detected at the beginning of the next frame only.
270 *
271 * If an error other than -EAGAIN is returned, the caller will drop the current
272 * payload. No call to uvc_video_decode_data and uvc_video_decode_end will be
273 * made until the next payload. -ENODATA can be used to drop the current
274 * payload if no other error code is appropriate.
275 *
276 * uvc_video_decode_data is called for every URB with URB data. It copies the
277 * data to the video buffer.
278 *
279 * uvc_video_decode_end is called with header data at the end of a bulk or
280 * isochronous payload. It performs any additional header data processing and
281 * returns 0 or a negative error code if an error occured. As header data have
282 * already been processed by uvc_video_decode_start, this functions isn't
283 * required to perform sanity checks a second time.
284 *
285 * For isochronous transfers where a payload is always transfered in a single
286 * URB, the three functions will be called in a row.
287 *
288 * To let the decoder process header data and update its internal state even
289 * when no video buffer is available, uvc_video_decode_start must be prepared
290 * to be called with a NULL buf parameter. uvc_video_decode_data and
291 * uvc_video_decode_end will never be called with a NULL buffer.
292 */
293static int uvc_video_decode_start(struct uvc_video_device *video,
294 struct uvc_buffer *buf, const __u8 *data, int len)
295{
296 __u8 fid;
297
298 /* Sanity checks:
299 * - packet must be at least 2 bytes long
300 * - bHeaderLength value must be at least 2 bytes (see above)
301 * - bHeaderLength value can't be larger than the packet size.
302 */
303 if (len < 2 || data[0] < 2 || data[0] > len)
304 return -EINVAL;
305
306 /* Skip payloads marked with the error bit ("error frames"). */
307 if (data[1] & UVC_STREAM_ERR) {
308 uvc_trace(UVC_TRACE_FRAME, "Dropping payload (error bit "
309 "set).\n");
310 return -ENODATA;
311 }
312
313 fid = data[1] & UVC_STREAM_FID;
314
315 /* Store the payload FID bit and return immediately when the buffer is
316 * NULL.
317 */
318 if (buf == NULL) {
319 video->last_fid = fid;
320 return -ENODATA;
321 }
322
323 /* Synchronize to the input stream by waiting for the FID bit to be
324 * toggled when the the buffer state is not UVC_BUF_STATE_ACTIVE.
325 * queue->last_fid is initialized to -1, so the first isochronous
326 * frame will always be in sync.
327 *
328 * If the device doesn't toggle the FID bit, invert video->last_fid
329 * when the EOF bit is set to force synchronisation on the next packet.
330 */
331 if (buf->state != UVC_BUF_STATE_ACTIVE) {
332 if (fid == video->last_fid) {
333 uvc_trace(UVC_TRACE_FRAME, "Dropping payload (out of "
334 "sync).\n");
335 if ((video->dev->quirks & UVC_QUIRK_STREAM_NO_FID) &&
336 (data[1] & UVC_STREAM_EOF))
337 video->last_fid ^= UVC_STREAM_FID;
338 return -ENODATA;
339 }
340
341 /* TODO: Handle PTS and SCR. */
342 buf->state = UVC_BUF_STATE_ACTIVE;
343 }
344
345 /* Mark the buffer as done if we're at the beginning of a new frame.
346 * End of frame detection is better implemented by checking the EOF
347 * bit (FID bit toggling is delayed by one frame compared to the EOF
348 * bit), but some devices don't set the bit at end of frame (and the
349 * last payload can be lost anyway). We thus must check if the FID has
350 * been toggled.
351 *
352 * queue->last_fid is initialized to -1, so the first isochronous
353 * frame will never trigger an end of frame detection.
354 *
355 * Empty buffers (bytesused == 0) don't trigger end of frame detection
356 * as it doesn't make sense to return an empty buffer. This also
357 * avoids detecting and of frame conditions at FID toggling if the
358 * previous payload had the EOF bit set.
359 */
360 if (fid != video->last_fid && buf->buf.bytesused != 0) {
361 uvc_trace(UVC_TRACE_FRAME, "Frame complete (FID bit "
362 "toggled).\n");
363 buf->state = UVC_BUF_STATE_DONE;
364 return -EAGAIN;
365 }
366
367 video->last_fid = fid;
368
369 return data[0];
370}
371
372static void uvc_video_decode_data(struct uvc_video_device *video,
373 struct uvc_buffer *buf, const __u8 *data, int len)
374{
375 struct uvc_video_queue *queue = &video->queue;
376 unsigned int maxlen, nbytes;
377 void *mem;
378
379 if (len <= 0)
380 return;
381
382 /* Copy the video data to the buffer. */
383 maxlen = buf->buf.length - buf->buf.bytesused;
384 mem = queue->mem + buf->buf.m.offset + buf->buf.bytesused;
385 nbytes = min((unsigned int)len, maxlen);
386 memcpy(mem, data, nbytes);
387 buf->buf.bytesused += nbytes;
388
389 /* Complete the current frame if the buffer size was exceeded. */
390 if (len > maxlen) {
391 uvc_trace(UVC_TRACE_FRAME, "Frame complete (overflow).\n");
392 buf->state = UVC_BUF_STATE_DONE;
393 }
394}
395
396static void uvc_video_decode_end(struct uvc_video_device *video,
397 struct uvc_buffer *buf, const __u8 *data, int len)
398{
399 /* Mark the buffer as done if the EOF marker is set. */
400 if (data[1] & UVC_STREAM_EOF && buf->buf.bytesused != 0) {
401 uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
402 if (data[0] == len)
403 uvc_trace(UVC_TRACE_FRAME, "EOF in empty payload.\n");
404 buf->state = UVC_BUF_STATE_DONE;
405 if (video->dev->quirks & UVC_QUIRK_STREAM_NO_FID)
406 video->last_fid ^= UVC_STREAM_FID;
407 }
408}
409
410/* ------------------------------------------------------------------------
411 * URB handling
412 */
413
414/*
415 * Completion handler for video URBs.
416 */
417static void uvc_video_decode_isoc(struct urb *urb,
418 struct uvc_video_device *video, struct uvc_buffer *buf)
419{
420 u8 *mem;
421 int ret, i;
422
423 for (i = 0; i < urb->number_of_packets; ++i) {
424 if (urb->iso_frame_desc[i].status < 0) {
425 uvc_trace(UVC_TRACE_FRAME, "USB isochronous frame "
426 "lost (%d).\n", urb->iso_frame_desc[i].status);
427 continue;
428 }
429
430 /* Decode the payload header. */
431 mem = urb->transfer_buffer + urb->iso_frame_desc[i].offset;
432 do {
433 ret = uvc_video_decode_start(video, buf, mem,
434 urb->iso_frame_desc[i].actual_length);
435 if (ret == -EAGAIN)
436 buf = uvc_queue_next_buffer(&video->queue, buf);
437 } while (ret == -EAGAIN);
438
439 if (ret < 0)
440 continue;
441
442 /* Decode the payload data. */
443 uvc_video_decode_data(video, buf, mem + ret,
444 urb->iso_frame_desc[i].actual_length - ret);
445
446 /* Process the header again. */
447 uvc_video_decode_end(video, buf, mem, ret);
448
449 if (buf->state == UVC_BUF_STATE_DONE ||
450 buf->state == UVC_BUF_STATE_ERROR)
451 buf = uvc_queue_next_buffer(&video->queue, buf);
452 }
453}
454
455static void uvc_video_decode_bulk(struct urb *urb,
456 struct uvc_video_device *video, struct uvc_buffer *buf)
457{
458 u8 *mem;
459 int len, ret;
460
461 mem = urb->transfer_buffer;
462 len = urb->actual_length;
463 video->bulk.payload_size += len;
464
465 /* If the URB is the first of its payload, decode and save the
466 * header.
467 */
468 if (video->bulk.header_size == 0) {
469 do {
470 ret = uvc_video_decode_start(video, buf, mem, len);
471 if (ret == -EAGAIN)
472 buf = uvc_queue_next_buffer(&video->queue, buf);
473 } while (ret == -EAGAIN);
474
475 /* If an error occured skip the rest of the payload. */
476 if (ret < 0 || buf == NULL) {
477 video->bulk.skip_payload = 1;
478 return;
479 }
480
481 video->bulk.header_size = ret;
482 memcpy(video->bulk.header, mem, video->bulk.header_size);
483
484 mem += ret;
485 len -= ret;
486 }
487
488 /* The buffer queue might have been cancelled while a bulk transfer
489 * was in progress, so we can reach here with buf equal to NULL. Make
490 * sure buf is never dereferenced if NULL.
491 */
492
493 /* Process video data. */
494 if (!video->bulk.skip_payload && buf != NULL)
495 uvc_video_decode_data(video, buf, mem, len);
496
497 /* Detect the payload end by a URB smaller than the maximum size (or
498 * a payload size equal to the maximum) and process the header again.
499 */
500 if (urb->actual_length < urb->transfer_buffer_length ||
501 video->bulk.payload_size >= video->bulk.max_payload_size) {
502 if (!video->bulk.skip_payload && buf != NULL) {
503 uvc_video_decode_end(video, buf, video->bulk.header,
504 video->bulk.header_size);
505 if (buf->state == UVC_BUF_STATE_DONE ||
506 buf->state == UVC_BUF_STATE_ERROR)
507 buf = uvc_queue_next_buffer(&video->queue, buf);
508 }
509
510 video->bulk.header_size = 0;
511 video->bulk.skip_payload = 0;
512 video->bulk.payload_size = 0;
513 }
514}
515
516static void uvc_video_complete(struct urb *urb)
517{
518 struct uvc_video_device *video = urb->context;
519 struct uvc_video_queue *queue = &video->queue;
520 struct uvc_buffer *buf = NULL;
521 unsigned long flags;
522 int ret;
523
524 switch (urb->status) {
525 case 0:
526 break;
527
528 default:
529 uvc_printk(KERN_WARNING, "Non-zero status (%d) in video "
530 "completion handler.\n", urb->status);
531
532 case -ENOENT: /* usb_kill_urb() called. */
533 if (video->frozen)
534 return;
535
536 case -ECONNRESET: /* usb_unlink_urb() called. */
537 case -ESHUTDOWN: /* The endpoint is being disabled. */
538 uvc_queue_cancel(queue, urb->status == -ESHUTDOWN);
539 return;
540 }
541
542 spin_lock_irqsave(&queue->irqlock, flags);
543 if (!list_empty(&queue->irqqueue))
544 buf = list_first_entry(&queue->irqqueue, struct uvc_buffer,
545 queue);
546 spin_unlock_irqrestore(&queue->irqlock, flags);
547
548 video->decode(urb, video, buf);
549
550 if ((ret = usb_submit_urb(urb, GFP_ATOMIC)) < 0) {
551 uvc_printk(KERN_ERR, "Failed to resubmit video URB (%d).\n",
552 ret);
553 }
554}
555
556/*
557 * Uninitialize isochronous/bulk URBs and free transfer buffers.
558 */
559static void uvc_uninit_video(struct uvc_video_device *video)
560{
561 struct urb *urb;
562 unsigned int i;
563
564 for (i = 0; i < UVC_URBS; ++i) {
565 if ((urb = video->urb[i]) == NULL)
566 continue;
567
568 usb_kill_urb(urb);
569 /* urb->transfer_buffer_length is not touched by USB core, so
570 * we can use it here as the buffer length.
571 */
572 if (video->urb_buffer[i]) {
573 usb_buffer_free(video->dev->udev,
574 urb->transfer_buffer_length,
575 video->urb_buffer[i], urb->transfer_dma);
576 video->urb_buffer[i] = NULL;
577 }
578
579 usb_free_urb(urb);
580 video->urb[i] = NULL;
581 }
582}
583
584/*
585 * Initialize isochronous URBs and allocate transfer buffers. The packet size
586 * is given by the endpoint.
587 */
588static int uvc_init_video_isoc(struct uvc_video_device *video,
589 struct usb_host_endpoint *ep)
590{
591 struct urb *urb;
592 unsigned int npackets, i, j;
593 __u16 psize;
594 __u32 size;
595
596 /* Compute the number of isochronous packets to allocate by dividing
597 * the maximum video frame size by the packet size. Limit the result
598 * to UVC_MAX_ISO_PACKETS.
599 */
600 psize = le16_to_cpu(ep->desc.wMaxPacketSize);
601 psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3));
602
603 size = video->streaming->ctrl.dwMaxVideoFrameSize;
604 if (size > UVC_MAX_FRAME_SIZE)
605 return -EINVAL;
606
607 npackets = (size + psize - 1) / psize;
608 if (npackets > UVC_MAX_ISO_PACKETS)
609 npackets = UVC_MAX_ISO_PACKETS;
610
611 size = npackets * psize;
612
613 for (i = 0; i < UVC_URBS; ++i) {
614 urb = usb_alloc_urb(npackets, GFP_KERNEL);
615 if (urb == NULL) {
616 uvc_uninit_video(video);
617 return -ENOMEM;
618 }
619
620 video->urb_buffer[i] = usb_buffer_alloc(video->dev->udev,
621 size, GFP_KERNEL, &urb->transfer_dma);
622 if (video->urb_buffer[i] == NULL) {
623 usb_free_urb(urb);
624 uvc_uninit_video(video);
625 return -ENOMEM;
626 }
627
628 urb->dev = video->dev->udev;
629 urb->context = video;
630 urb->pipe = usb_rcvisocpipe(video->dev->udev,
631 ep->desc.bEndpointAddress);
632 urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
633 urb->interval = ep->desc.bInterval;
634 urb->transfer_buffer = video->urb_buffer[i];
635 urb->complete = uvc_video_complete;
636 urb->number_of_packets = npackets;
637 urb->transfer_buffer_length = size;
638
639 for (j = 0; j < npackets; ++j) {
640 urb->iso_frame_desc[j].offset = j * psize;
641 urb->iso_frame_desc[j].length = psize;
642 }
643
644 video->urb[i] = urb;
645 }
646
647 return 0;
648}
649
650/*
651 * Initialize bulk URBs and allocate transfer buffers. The packet size is
652 * given by the endpoint.
653 */
654static int uvc_init_video_bulk(struct uvc_video_device *video,
655 struct usb_host_endpoint *ep)
656{
657 struct urb *urb;
658 unsigned int pipe, i;
659 __u16 psize;
660 __u32 size;
661
662 /* Compute the bulk URB size. Some devices set the maximum payload
663 * size to a value too high for memory-constrained devices. We must
664 * then transfer the payload accross multiple URBs. To be consistant
665 * with isochronous mode, allocate maximum UVC_MAX_ISO_PACKETS per bulk
666 * URB.
667 */
668 psize = le16_to_cpu(ep->desc.wMaxPacketSize) & 0x07ff;
669 size = video->streaming->ctrl.dwMaxPayloadTransferSize;
670 video->bulk.max_payload_size = size;
671 if (size > psize * UVC_MAX_ISO_PACKETS)
672 size = psize * UVC_MAX_ISO_PACKETS;
673
674 pipe = usb_rcvbulkpipe(video->dev->udev, ep->desc.bEndpointAddress);
675
676 for (i = 0; i < UVC_URBS; ++i) {
677 urb = usb_alloc_urb(0, GFP_KERNEL);
678 if (urb == NULL) {
679 uvc_uninit_video(video);
680 return -ENOMEM;
681 }
682
683 video->urb_buffer[i] = usb_buffer_alloc(video->dev->udev,
684 size, GFP_KERNEL, &urb->transfer_dma);
685 if (video->urb_buffer[i] == NULL) {
686 usb_free_urb(urb);
687 uvc_uninit_video(video);
688 return -ENOMEM;
689 }
690
691 usb_fill_bulk_urb(urb, video->dev->udev, pipe,
692 video->urb_buffer[i], size, uvc_video_complete,
693 video);
694 urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
695
696 video->urb[i] = urb;
697 }
698
699 return 0;
700}
701
702/*
703 * Initialize isochronous/bulk URBs and allocate transfer buffers.
704 */
705static int uvc_init_video(struct uvc_video_device *video)
706{
707 struct usb_interface *intf = video->streaming->intf;
708 struct usb_host_interface *alts;
709 struct usb_host_endpoint *ep = NULL;
710 int intfnum = video->streaming->intfnum;
711 unsigned int bandwidth, psize, i;
712 int ret;
713
714 video->last_fid = -1;
715 video->bulk.header_size = 0;
716 video->bulk.skip_payload = 0;
717 video->bulk.payload_size = 0;
718
719 if (intf->num_altsetting > 1) {
720 /* Isochronous endpoint, select the alternate setting. */
721 bandwidth = video->streaming->ctrl.dwMaxPayloadTransferSize;
722
723 if (bandwidth == 0) {
724 uvc_printk(KERN_WARNING, "device %s requested null "
725 "bandwidth, defaulting to lowest.\n",
726 video->vdev->name);
727 bandwidth = 1;
728 }
729
730 for (i = 0; i < intf->num_altsetting; ++i) {
731 alts = &intf->altsetting[i];
732 ep = uvc_find_endpoint(alts,
733 video->streaming->header.bEndpointAddress);
734 if (ep == NULL)
735 continue;
736
737 /* Check if the bandwidth is high enough. */
738 psize = le16_to_cpu(ep->desc.wMaxPacketSize);
739 psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3));
740 if (psize >= bandwidth)
741 break;
742 }
743
744 if (i >= intf->num_altsetting)
745 return -EIO;
746
747 if ((ret = usb_set_interface(video->dev->udev, intfnum, i)) < 0)
748 return ret;
749
750 ret = uvc_init_video_isoc(video, ep);
751 } else {
752 /* Bulk endpoint, proceed to URB initialization. */
753 ep = uvc_find_endpoint(&intf->altsetting[0],
754 video->streaming->header.bEndpointAddress);
755 if (ep == NULL)
756 return -EIO;
757
758 ret = uvc_init_video_bulk(video, ep);
759 }
760
761 if (ret < 0)
762 return ret;
763
764 /* Submit the URBs. */
765 for (i = 0; i < UVC_URBS; ++i) {
766 if ((ret = usb_submit_urb(video->urb[i], GFP_KERNEL)) < 0) {
767 uvc_printk(KERN_ERR, "Failed to submit URB %u "
768 "(%d).\n", i, ret);
769 uvc_uninit_video(video);
770 return ret;
771 }
772 }
773
774 return 0;
775}
776
777/* --------------------------------------------------------------------------
778 * Suspend/resume
779 */
780
781/*
782 * Stop streaming without disabling the video queue.
783 *
784 * To let userspace applications resume without trouble, we must not touch the
785 * video buffers in any way. We mark the device as frozen to make sure the URB
786 * completion handler won't try to cancel the queue when we kill the URBs.
787 */
788int uvc_video_suspend(struct uvc_video_device *video)
789{
790 if (!uvc_queue_streaming(&video->queue))
791 return 0;
792
793 video->frozen = 1;
794 uvc_uninit_video(video);
795 usb_set_interface(video->dev->udev, video->streaming->intfnum, 0);
796 return 0;
797}
798
799/*
800 * Reconfigure the video interface and restart streaming if it was enable
801 * before suspend.
802 *
803 * If an error occurs, disable the video queue. This will wake all pending
804 * buffers, making sure userspace applications are notified of the problem
805 * instead of waiting forever.
806 */
807int uvc_video_resume(struct uvc_video_device *video)
808{
809 int ret;
810
811 video->frozen = 0;
812
813 if ((ret = uvc_set_video_ctrl(video, &video->streaming->ctrl, 0)) < 0) {
814 uvc_queue_enable(&video->queue, 0);
815 return ret;
816 }
817
818 if (!uvc_queue_streaming(&video->queue))
819 return 0;
820
821 if ((ret = uvc_init_video(video)) < 0)
822 uvc_queue_enable(&video->queue, 0);
823
824 return ret;
825}
826
827/* ------------------------------------------------------------------------
828 * Video device
829 */
830
831/*
832 * Initialize the UVC video device by retrieving the default format and
833 * committing it.
834 *
835 * Some cameras (namely the Fuji Finepix) set the format and frame
836 * indexes to zero. The UVC standard doesn't clearly make this a spec
837 * violation, so try to silently fix the values if possible.
838 *
839 * This function is called before registering the device with V4L.
840 */
841int uvc_video_init(struct uvc_video_device *video)
842{
843 struct uvc_streaming_control *probe = &video->streaming->ctrl;
844 struct uvc_format *format = NULL;
845 struct uvc_frame *frame = NULL;
846 unsigned int i;
847 int ret;
848
849 if (video->streaming->nformats == 0) {
850 uvc_printk(KERN_INFO, "No supported video formats found.\n");
851 return -EINVAL;
852 }
853
854 /* Alternate setting 0 should be the default, yet the XBox Live Vision
855 * Cam (and possibly other devices) crash or otherwise misbehave if
856 * they don't receive a SET_INTERFACE request before any other video
857 * control request.
858 */
859 usb_set_interface(video->dev->udev, video->streaming->intfnum, 0);
860
861 /* Some webcams don't suport GET_DEF request on the probe control. We
862 * fall back to GET_CUR if GET_DEF fails.
863 */
864 if ((ret = uvc_get_video_ctrl(video, probe, 1, GET_DEF)) < 0 &&
865 (ret = uvc_get_video_ctrl(video, probe, 1, GET_CUR)) < 0)
866 return ret;
867
868 /* Check if the default format descriptor exists. Use the first
869 * available format otherwise.
870 */
871 for (i = video->streaming->nformats; i > 0; --i) {
872 format = &video->streaming->format[i-1];
873 if (format->index == probe->bFormatIndex)
874 break;
875 }
876
877 if (format->nframes == 0) {
878 uvc_printk(KERN_INFO, "No frame descriptor found for the "
879 "default format.\n");
880 return -EINVAL;
881 }
882
883 /* Zero bFrameIndex might be correct. Stream-based formats (including
884 * MPEG-2 TS and DV) do not support frames but have a dummy frame
885 * descriptor with bFrameIndex set to zero. If the default frame
886 * descriptor is not found, use the first avalable frame.
887 */
888 for (i = format->nframes; i > 0; --i) {
889 frame = &format->frame[i-1];
890 if (frame->bFrameIndex == probe->bFrameIndex)
891 break;
892 }
893
894 /* Commit the default settings. */
895 probe->bFormatIndex = format->index;
896 probe->bFrameIndex = frame->bFrameIndex;
897 if ((ret = uvc_set_video_ctrl(video, probe, 0)) < 0)
898 return ret;
899
900 video->streaming->cur_format = format;
901 video->streaming->cur_frame = frame;
902 atomic_set(&video->active, 0);
903
904 /* Select the video decoding function */
905 if (video->dev->quirks & UVC_QUIRK_BUILTIN_ISIGHT)
906 video->decode = uvc_video_decode_isight;
907 else if (video->streaming->intf->num_altsetting > 1)
908 video->decode = uvc_video_decode_isoc;
909 else
910 video->decode = uvc_video_decode_bulk;
911
912 return 0;
913}
914
915/*
916 * Enable or disable the video stream.
917 */
918int uvc_video_enable(struct uvc_video_device *video, int enable)
919{
920 int ret;
921
922 if (!enable) {
923 uvc_uninit_video(video);
924 usb_set_interface(video->dev->udev,
925 video->streaming->intfnum, 0);
926 uvc_queue_enable(&video->queue, 0);
927 return 0;
928 }
929
930 if ((ret = uvc_queue_enable(&video->queue, 1)) < 0)
931 return ret;
932
933 return uvc_init_video(video);
934}
diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h
new file mode 100644
index 000000000000..a995a780db1c
--- /dev/null
+++ b/drivers/media/video/uvc/uvcvideo.h
@@ -0,0 +1,796 @@
1#ifndef _USB_VIDEO_H_
2#define _USB_VIDEO_H_
3
4#include <linux/kernel.h>
5#include <linux/videodev2.h>
6
7
8/*
9 * Dynamic controls
10 */
11
12/* Data types for UVC control data */
13#define UVC_CTRL_DATA_TYPE_RAW 0
14#define UVC_CTRL_DATA_TYPE_SIGNED 1
15#define UVC_CTRL_DATA_TYPE_UNSIGNED 2
16#define UVC_CTRL_DATA_TYPE_BOOLEAN 3
17#define UVC_CTRL_DATA_TYPE_ENUM 4
18#define UVC_CTRL_DATA_TYPE_BITMASK 5
19
20/* Control flags */
21#define UVC_CONTROL_SET_CUR (1 << 0)
22#define UVC_CONTROL_GET_CUR (1 << 1)
23#define UVC_CONTROL_GET_MIN (1 << 2)
24#define UVC_CONTROL_GET_MAX (1 << 3)
25#define UVC_CONTROL_GET_RES (1 << 4)
26#define UVC_CONTROL_GET_DEF (1 << 5)
27/* Control should be saved at suspend and restored at resume. */
28#define UVC_CONTROL_RESTORE (1 << 6)
29/* Control can be updated by the camera. */
30#define UVC_CONTROL_AUTO_UPDATE (1 << 7)
31
32#define UVC_CONTROL_GET_RANGE (UVC_CONTROL_GET_CUR | UVC_CONTROL_GET_MIN | \
33 UVC_CONTROL_GET_MAX | UVC_CONTROL_GET_RES | \
34 UVC_CONTROL_GET_DEF)
35
36struct uvc_xu_control_info {
37 __u8 entity[16];
38 __u8 index;
39 __u8 selector;
40 __u16 size;
41 __u32 flags;
42};
43
44struct uvc_xu_control_mapping {
45 __u32 id;
46 __u8 name[32];
47 __u8 entity[16];
48 __u8 selector;
49
50 __u8 size;
51 __u8 offset;
52 enum v4l2_ctrl_type v4l2_type;
53 __u32 data_type;
54};
55
56struct uvc_xu_control {
57 __u8 unit;
58 __u8 selector;
59 __u16 size;
60 __u8 __user *data;
61};
62
63#define UVCIOC_CTRL_ADD _IOW('U', 1, struct uvc_xu_control_info)
64#define UVCIOC_CTRL_MAP _IOWR('U', 2, struct uvc_xu_control_mapping)
65#define UVCIOC_CTRL_GET _IOWR('U', 3, struct uvc_xu_control)
66#define UVCIOC_CTRL_SET _IOW('U', 4, struct uvc_xu_control)
67
68#ifdef __KERNEL__
69
70#include <linux/poll.h>
71
72/* --------------------------------------------------------------------------
73 * UVC constants
74 */
75
76#define SC_UNDEFINED 0x00
77#define SC_VIDEOCONTROL 0x01
78#define SC_VIDEOSTREAMING 0x02
79#define SC_VIDEO_INTERFACE_COLLECTION 0x03
80
81#define PC_PROTOCOL_UNDEFINED 0x00
82
83#define CS_UNDEFINED 0x20
84#define CS_DEVICE 0x21
85#define CS_CONFIGURATION 0x22
86#define CS_STRING 0x23
87#define CS_INTERFACE 0x24
88#define CS_ENDPOINT 0x25
89
90/* VideoControl class specific interface descriptor */
91#define VC_DESCRIPTOR_UNDEFINED 0x00
92#define VC_HEADER 0x01
93#define VC_INPUT_TERMINAL 0x02
94#define VC_OUTPUT_TERMINAL 0x03
95#define VC_SELECTOR_UNIT 0x04
96#define VC_PROCESSING_UNIT 0x05
97#define VC_EXTENSION_UNIT 0x06
98
99/* VideoStreaming class specific interface descriptor */
100#define VS_UNDEFINED 0x00
101#define VS_INPUT_HEADER 0x01
102#define VS_OUTPUT_HEADER 0x02
103#define VS_STILL_IMAGE_FRAME 0x03
104#define VS_FORMAT_UNCOMPRESSED 0x04
105#define VS_FRAME_UNCOMPRESSED 0x05
106#define VS_FORMAT_MJPEG 0x06
107#define VS_FRAME_MJPEG 0x07
108#define VS_FORMAT_MPEG2TS 0x0a
109#define VS_FORMAT_DV 0x0c
110#define VS_COLORFORMAT 0x0d
111#define VS_FORMAT_FRAME_BASED 0x10
112#define VS_FRAME_FRAME_BASED 0x11
113#define VS_FORMAT_STREAM_BASED 0x12
114
115/* Endpoint type */
116#define EP_UNDEFINED 0x00
117#define EP_GENERAL 0x01
118#define EP_ENDPOINT 0x02
119#define EP_INTERRUPT 0x03
120
121/* Request codes */
122#define RC_UNDEFINED 0x00
123#define SET_CUR 0x01
124#define GET_CUR 0x81
125#define GET_MIN 0x82
126#define GET_MAX 0x83
127#define GET_RES 0x84
128#define GET_LEN 0x85
129#define GET_INFO 0x86
130#define GET_DEF 0x87
131
132/* VideoControl interface controls */
133#define VC_CONTROL_UNDEFINED 0x00
134#define VC_VIDEO_POWER_MODE_CONTROL 0x01
135#define VC_REQUEST_ERROR_CODE_CONTROL 0x02
136
137/* Terminal controls */
138#define TE_CONTROL_UNDEFINED 0x00
139
140/* Selector Unit controls */
141#define SU_CONTROL_UNDEFINED 0x00
142#define SU_INPUT_SELECT_CONTROL 0x01
143
144/* Camera Terminal controls */
145#define CT_CONTROL_UNDEFINED 0x00
146#define CT_SCANNING_MODE_CONTROL 0x01
147#define CT_AE_MODE_CONTROL 0x02
148#define CT_AE_PRIORITY_CONTROL 0x03
149#define CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
150#define CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
151#define CT_FOCUS_ABSOLUTE_CONTROL 0x06
152#define CT_FOCUS_RELATIVE_CONTROL 0x07
153#define CT_FOCUS_AUTO_CONTROL 0x08
154#define CT_IRIS_ABSOLUTE_CONTROL 0x09
155#define CT_IRIS_RELATIVE_CONTROL 0x0a
156#define CT_ZOOM_ABSOLUTE_CONTROL 0x0b
157#define CT_ZOOM_RELATIVE_CONTROL 0x0c
158#define CT_PANTILT_ABSOLUTE_CONTROL 0x0d
159#define CT_PANTILT_RELATIVE_CONTROL 0x0e
160#define CT_ROLL_ABSOLUTE_CONTROL 0x0f
161#define CT_ROLL_RELATIVE_CONTROL 0x10
162#define CT_PRIVACY_CONTROL 0x11
163
164/* Processing Unit controls */
165#define PU_CONTROL_UNDEFINED 0x00
166#define PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
167#define PU_BRIGHTNESS_CONTROL 0x02
168#define PU_CONTRAST_CONTROL 0x03
169#define PU_GAIN_CONTROL 0x04
170#define PU_POWER_LINE_FREQUENCY_CONTROL 0x05
171#define PU_HUE_CONTROL 0x06
172#define PU_SATURATION_CONTROL 0x07
173#define PU_SHARPNESS_CONTROL 0x08
174#define PU_GAMMA_CONTROL 0x09
175#define PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a
176#define PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b
177#define PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c
178#define PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d
179#define PU_DIGITAL_MULTIPLIER_CONTROL 0x0e
180#define PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f
181#define PU_HUE_AUTO_CONTROL 0x10
182#define PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
183#define PU_ANALOG_LOCK_STATUS_CONTROL 0x12
184
185#define LXU_MOTOR_PANTILT_RELATIVE_CONTROL 0x01
186#define LXU_MOTOR_PANTILT_RESET_CONTROL 0x02
187#define LXU_MOTOR_FOCUS_MOTOR_CONTROL 0x03
188
189/* VideoStreaming interface controls */
190#define VS_CONTROL_UNDEFINED 0x00
191#define VS_PROBE_CONTROL 0x01
192#define VS_COMMIT_CONTROL 0x02
193#define VS_STILL_PROBE_CONTROL 0x03
194#define VS_STILL_COMMIT_CONTROL 0x04
195#define VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
196#define VS_STREAM_ERROR_CODE_CONTROL 0x06
197#define VS_GENERATE_KEY_FRAME_CONTROL 0x07
198#define VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
199#define VS_SYNC_DELAY_CONTROL 0x09
200
201#define TT_VENDOR_SPECIFIC 0x0100
202#define TT_STREAMING 0x0101
203
204/* Input Terminal types */
205#define ITT_VENDOR_SPECIFIC 0x0200
206#define ITT_CAMERA 0x0201
207#define ITT_MEDIA_TRANSPORT_INPUT 0x0202
208
209/* Output Terminal types */
210#define OTT_VENDOR_SPECIFIC 0x0300
211#define OTT_DISPLAY 0x0301
212#define OTT_MEDIA_TRANSPORT_OUTPUT 0x0302
213
214/* External Terminal types */
215#define EXTERNAL_VENDOR_SPECIFIC 0x0400
216#define COMPOSITE_CONNECTOR 0x0401
217#define SVIDEO_CONNECTOR 0x0402
218#define COMPONENT_CONNECTOR 0x0403
219
220#define UVC_TERM_INPUT 0x0000
221#define UVC_TERM_OUTPUT 0x8000
222
223#define UVC_ENTITY_TYPE(entity) ((entity)->type & 0x7fff)
224#define UVC_ENTITY_IS_UNIT(entity) (((entity)->type & 0xff00) == 0)
225#define UVC_ENTITY_IS_TERM(entity) (((entity)->type & 0xff00) != 0)
226#define UVC_ENTITY_IS_ITERM(entity) \
227 (((entity)->type & 0x8000) == UVC_TERM_INPUT)
228#define UVC_ENTITY_IS_OTERM(entity) \
229 (((entity)->type & 0x8000) == UVC_TERM_OUTPUT)
230
231#define UVC_STATUS_TYPE_CONTROL 1
232#define UVC_STATUS_TYPE_STREAMING 2
233
234/* ------------------------------------------------------------------------
235 * GUIDs
236 */
237#define UVC_GUID_UVC_CAMERA \
238 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}
240#define UVC_GUID_UVC_OUTPUT \
241 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}
243#define UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT \
244 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03}
246#define UVC_GUID_UVC_PROCESSING \
247 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01}
249#define UVC_GUID_UVC_SELECTOR \
250 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02}
252
253#define UVC_GUID_LOGITECH_DEV_INFO \
254 {0x82, 0x06, 0x61, 0x63, 0x70, 0x50, 0xab, 0x49, \
255 0xb8, 0xcc, 0xb3, 0x85, 0x5e, 0x8d, 0x22, 0x1e}
256#define UVC_GUID_LOGITECH_USER_HW \
257 {0x82, 0x06, 0x61, 0x63, 0x70, 0x50, 0xab, 0x49, \
258 0xb8, 0xcc, 0xb3, 0x85, 0x5e, 0x8d, 0x22, 0x1f}
259#define UVC_GUID_LOGITECH_VIDEO \
260 {0x82, 0x06, 0x61, 0x63, 0x70, 0x50, 0xab, 0x49, \
261 0xb8, 0xcc, 0xb3, 0x85, 0x5e, 0x8d, 0x22, 0x50}
262#define UVC_GUID_LOGITECH_MOTOR \
263 {0x82, 0x06, 0x61, 0x63, 0x70, 0x50, 0xab, 0x49, \
264 0xb8, 0xcc, 0xb3, 0x85, 0x5e, 0x8d, 0x22, 0x56}
265
266#define UVC_GUID_FORMAT_MJPEG \
267 { 'M', 'J', 'P', 'G', 0x00, 0x00, 0x10, 0x00, \
268 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
269#define UVC_GUID_FORMAT_YUY2 \
270 { 'Y', 'U', 'Y', '2', 0x00, 0x00, 0x10, 0x00, \
271 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
272#define UVC_GUID_FORMAT_NV12 \
273 { 'N', 'V', '1', '2', 0x00, 0x00, 0x10, 0x00, \
274 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
275#define UVC_GUID_FORMAT_YV12 \
276 { 'Y', 'V', '1', '2', 0x00, 0x00, 0x10, 0x00, \
277 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
278#define UVC_GUID_FORMAT_I420 \
279 { 'I', '4', '2', '0', 0x00, 0x00, 0x10, 0x00, \
280 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
281#define UVC_GUID_FORMAT_UYVY \
282 { 'U', 'Y', 'V', 'Y', 0x00, 0x00, 0x10, 0x00, \
283 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
284#define UVC_GUID_FORMAT_Y800 \
285 { 'Y', '8', '0', '0', 0x00, 0x00, 0x10, 0x00, \
286 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
287#define UVC_GUID_FORMAT_BY8 \
288 { 'B', 'Y', '8', ' ', 0x00, 0x00, 0x10, 0x00, \
289 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
290
291
292/* ------------------------------------------------------------------------
293 * Driver specific constants.
294 */
295
296#define DRIVER_VERSION_NUMBER KERNEL_VERSION(0, 1, 0)
297
298/* Number of isochronous URBs. */
299#define UVC_URBS 5
300/* Maximum number of packets per isochronous URB. */
301#define UVC_MAX_ISO_PACKETS 40
302/* Maximum frame size in bytes, for sanity checking. */
303#define UVC_MAX_FRAME_SIZE (16*1024*1024)
304/* Maximum number of video buffers. */
305#define UVC_MAX_VIDEO_BUFFERS 32
306
307#define UVC_CTRL_CONTROL_TIMEOUT 300
308#define UVC_CTRL_STREAMING_TIMEOUT 1000
309
310/* Devices quirks */
311#define UVC_QUIRK_STATUS_INTERVAL 0x00000001
312#define UVC_QUIRK_PROBE_MINMAX 0x00000002
313#define UVC_QUIRK_PROBE_EXTRAFIELDS 0x00000004
314#define UVC_QUIRK_BUILTIN_ISIGHT 0x00000008
315#define UVC_QUIRK_STREAM_NO_FID 0x00000010
316#define UVC_QUIRK_IGNORE_SELECTOR_UNIT 0x00000020
317
318/* Format flags */
319#define UVC_FMT_FLAG_COMPRESSED 0x00000001
320#define UVC_FMT_FLAG_STREAM 0x00000002
321
322/* ------------------------------------------------------------------------
323 * Structures.
324 */
325
326struct uvc_device;
327
328/* TODO: Put the most frequently accessed fields at the beginning of
329 * structures to maximize cache efficiency.
330 */
331struct uvc_streaming_control {
332 __u16 bmHint;
333 __u8 bFormatIndex;
334 __u8 bFrameIndex;
335 __u32 dwFrameInterval;
336 __u16 wKeyFrameRate;
337 __u16 wPFrameRate;
338 __u16 wCompQuality;
339 __u16 wCompWindowSize;
340 __u16 wDelay;
341 __u32 dwMaxVideoFrameSize;
342 __u32 dwMaxPayloadTransferSize;
343 __u32 dwClockFrequency;
344 __u8 bmFramingInfo;
345 __u8 bPreferedVersion;
346 __u8 bMinVersion;
347 __u8 bMaxVersion;
348};
349
350struct uvc_menu_info {
351 __u32 value;
352 __u8 name[32];
353};
354
355struct uvc_control_info {
356 struct list_head list;
357 struct list_head mappings;
358
359 __u8 entity[16];
360 __u8 index;
361 __u8 selector;
362
363 __u16 size;
364 __u32 flags;
365};
366
367struct uvc_control_mapping {
368 struct list_head list;
369
370 struct uvc_control_info *ctrl;
371
372 __u32 id;
373 __u8 name[32];
374 __u8 entity[16];
375 __u8 selector;
376
377 __u8 size;
378 __u8 offset;
379 enum v4l2_ctrl_type v4l2_type;
380 __u32 data_type;
381
382 struct uvc_menu_info *menu_info;
383 __u32 menu_count;
384};
385
386struct uvc_control {
387 struct uvc_entity *entity;
388 struct uvc_control_info *info;
389
390 __u8 index; /* Used to match the uvc_control entry with a
391 uvc_control_info. */
392 __u8 dirty : 1,
393 loaded : 1,
394 modified : 1;
395
396 __u8 *data;
397};
398
399struct uvc_format_desc {
400 char *name;
401 __u8 guid[16];
402 __u32 fcc;
403};
404
405/* The term 'entity' refers to both UVC units and UVC terminals.
406 *
407 * The type field is either the terminal type (wTerminalType in the terminal
408 * descriptor), or the unit type (bDescriptorSubtype in the unit descriptor).
409 * As the bDescriptorSubtype field is one byte long, the type value will
410 * always have a null MSB for units. All terminal types defined by the UVC
411 * specification have a non-null MSB, so it is safe to use the MSB to
412 * differentiate between units and terminals as long as the descriptor parsing
413 * code makes sure terminal types have a non-null MSB.
414 *
415 * For terminals, the type's most significant bit stores the terminal
416 * direction (either UVC_TERM_INPUT or UVC_TERM_OUTPUT). The type field should
417 * always be accessed with the UVC_ENTITY_* macros and never directly.
418 */
419
420struct uvc_entity {
421 struct list_head list; /* Entity as part of a UVC device. */
422 struct list_head chain; /* Entity as part of a video device
423 * chain. */
424 __u8 id;
425 __u16 type;
426 char name[64];
427
428 union {
429 struct {
430 __u16 wObjectiveFocalLengthMin;
431 __u16 wObjectiveFocalLengthMax;
432 __u16 wOcularFocalLength;
433 __u8 bControlSize;
434 __u8 *bmControls;
435 } camera;
436
437 struct {
438 __u8 bControlSize;
439 __u8 *bmControls;
440 __u8 bTransportModeSize;
441 __u8 *bmTransportModes;
442 } media;
443
444 struct {
445 __u8 bSourceID;
446 } output;
447
448 struct {
449 __u8 bSourceID;
450 __u16 wMaxMultiplier;
451 __u8 bControlSize;
452 __u8 *bmControls;
453 __u8 bmVideoStandards;
454 } processing;
455
456 struct {
457 __u8 bNrInPins;
458 __u8 *baSourceID;
459 } selector;
460
461 struct {
462 __u8 guidExtensionCode[16];
463 __u8 bNumControls;
464 __u8 bNrInPins;
465 __u8 *baSourceID;
466 __u8 bControlSize;
467 __u8 *bmControls;
468 __u8 *bmControlsType;
469 } extension;
470 };
471
472 unsigned int ncontrols;
473 struct uvc_control *controls;
474};
475
476struct uvc_frame {
477 __u8 bFrameIndex;
478 __u8 bmCapabilities;
479 __u16 wWidth;
480 __u16 wHeight;
481 __u32 dwMinBitRate;
482 __u32 dwMaxBitRate;
483 __u32 dwMaxVideoFrameBufferSize;
484 __u8 bFrameIntervalType;
485 __u32 dwDefaultFrameInterval;
486 __u32 *dwFrameInterval;
487};
488
489struct uvc_format {
490 __u8 type;
491 __u8 index;
492 __u8 bpp;
493 __u8 colorspace;
494 __u32 fcc;
495 __u32 flags;
496
497 char name[32];
498
499 unsigned int nframes;
500 struct uvc_frame *frame;
501};
502
503struct uvc_streaming_header {
504 __u8 bNumFormats;
505 __u8 bEndpointAddress;
506 __u8 bTerminalLink;
507 __u8 bControlSize;
508 __u8 *bmaControls;
509 /* The following fields are used by input headers only. */
510 __u8 bmInfo;
511 __u8 bStillCaptureMethod;
512 __u8 bTriggerSupport;
513 __u8 bTriggerUsage;
514};
515
516struct uvc_streaming {
517 struct list_head list;
518
519 struct usb_interface *intf;
520 int intfnum;
521 __u16 maxpsize;
522
523 struct uvc_streaming_header header;
524
525 unsigned int nformats;
526 struct uvc_format *format;
527
528 struct uvc_streaming_control ctrl;
529 struct uvc_format *cur_format;
530 struct uvc_frame *cur_frame;
531
532 struct mutex mutex;
533};
534
535enum uvc_buffer_state {
536 UVC_BUF_STATE_IDLE = 0,
537 UVC_BUF_STATE_QUEUED = 1,
538 UVC_BUF_STATE_ACTIVE = 2,
539 UVC_BUF_STATE_DONE = 3,
540 UVC_BUF_STATE_ERROR = 4,
541};
542
543struct uvc_buffer {
544 unsigned long vma_use_count;
545 struct list_head stream;
546
547 /* Touched by interrupt handler. */
548 struct v4l2_buffer buf;
549 struct list_head queue;
550 wait_queue_head_t wait;
551 enum uvc_buffer_state state;
552};
553
554#define UVC_QUEUE_STREAMING (1 << 0)
555#define UVC_QUEUE_DISCONNECTED (1 << 1)
556#define UVC_QUEUE_DROP_INCOMPLETE (1 << 2)
557
558struct uvc_video_queue {
559 void *mem;
560 unsigned int flags;
561 __u32 sequence;
562
563 unsigned int count;
564 unsigned int buf_size;
565 struct uvc_buffer buffer[UVC_MAX_VIDEO_BUFFERS];
566 struct mutex mutex; /* protects buffers and mainqueue */
567 spinlock_t irqlock; /* protects irqqueue */
568
569 struct list_head mainqueue;
570 struct list_head irqqueue;
571};
572
573struct uvc_video_device {
574 struct uvc_device *dev;
575 struct video_device *vdev;
576 atomic_t active;
577 unsigned int frozen : 1;
578
579 struct list_head iterms;
580 struct uvc_entity *oterm;
581 struct uvc_entity *processing;
582 struct uvc_entity *selector;
583 struct list_head extensions;
584 struct mutex ctrl_mutex;
585
586 struct uvc_video_queue queue;
587
588 /* Video streaming object, must always be non-NULL. */
589 struct uvc_streaming *streaming;
590
591 void (*decode) (struct urb *urb, struct uvc_video_device *video,
592 struct uvc_buffer *buf);
593
594 /* Context data used by the bulk completion handler. */
595 struct {
596 __u8 header[256];
597 unsigned int header_size;
598 int skip_payload;
599 __u32 payload_size;
600 __u32 max_payload_size;
601 } bulk;
602
603 struct urb *urb[UVC_URBS];
604 char *urb_buffer[UVC_URBS];
605
606 __u8 last_fid;
607};
608
609enum uvc_device_state {
610 UVC_DEV_DISCONNECTED = 1,
611};
612
613struct uvc_device {
614 struct usb_device *udev;
615 struct usb_interface *intf;
616 __u32 quirks;
617 int intfnum;
618 char name[32];
619
620 enum uvc_device_state state;
621 struct kref kref;
622 struct list_head list;
623
624 /* Video control interface */
625 __u16 uvc_version;
626 __u32 clock_frequency;
627
628 struct list_head entities;
629
630 struct uvc_video_device video;
631
632 /* Status Interrupt Endpoint */
633 struct usb_host_endpoint *int_ep;
634 struct urb *int_urb;
635 __u8 status[16];
636 struct input_dev *input;
637
638 /* Video Streaming interfaces */
639 struct list_head streaming;
640};
641
642enum uvc_handle_state {
643 UVC_HANDLE_PASSIVE = 0,
644 UVC_HANDLE_ACTIVE = 1,
645};
646
647struct uvc_fh {
648 struct uvc_video_device *device;
649 enum uvc_handle_state state;
650};
651
652struct uvc_driver {
653 struct usb_driver driver;
654
655 struct mutex open_mutex; /* protects from open/disconnect race */
656
657 struct list_head devices; /* struct uvc_device list */
658 struct list_head controls; /* struct uvc_control_info list */
659 struct mutex ctrl_mutex; /* protects controls and devices
660 lists */
661};
662
663/* ------------------------------------------------------------------------
664 * Debugging, printing and logging
665 */
666
667#define UVC_TRACE_PROBE (1 << 0)
668#define UVC_TRACE_DESCR (1 << 1)
669#define UVC_TRACE_CONTROL (1 << 2)
670#define UVC_TRACE_FORMAT (1 << 3)
671#define UVC_TRACE_CAPTURE (1 << 4)
672#define UVC_TRACE_CALLS (1 << 5)
673#define UVC_TRACE_IOCTL (1 << 6)
674#define UVC_TRACE_FRAME (1 << 7)
675#define UVC_TRACE_SUSPEND (1 << 8)
676#define UVC_TRACE_STATUS (1 << 9)
677
678extern unsigned int uvc_trace_param;
679
680#define uvc_trace(flag, msg...) \
681 do { \
682 if (uvc_trace_param & flag) \
683 printk(KERN_DEBUG "uvcvideo: " msg); \
684 } while (0)
685
686#define uvc_printk(level, msg...) \
687 printk(level "uvcvideo: " msg)
688
689#define UVC_GUID_FORMAT "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-" \
690 "%02x%02x%02x%02x%02x%02x"
691#define UVC_GUID_ARGS(guid) \
692 (guid)[3], (guid)[2], (guid)[1], (guid)[0], \
693 (guid)[5], (guid)[4], \
694 (guid)[7], (guid)[6], \
695 (guid)[8], (guid)[9], \
696 (guid)[10], (guid)[11], (guid)[12], \
697 (guid)[13], (guid)[14], (guid)[15]
698
699/* --------------------------------------------------------------------------
700 * Internal functions.
701 */
702
703/* Core driver */
704extern struct uvc_driver uvc_driver;
705extern void uvc_delete(struct kref *kref);
706
707/* Video buffers queue management. */
708extern void uvc_queue_init(struct uvc_video_queue *queue);
709extern int uvc_alloc_buffers(struct uvc_video_queue *queue,
710 unsigned int nbuffers, unsigned int buflength);
711extern int uvc_free_buffers(struct uvc_video_queue *queue);
712extern int uvc_query_buffer(struct uvc_video_queue *queue,
713 struct v4l2_buffer *v4l2_buf);
714extern int uvc_queue_buffer(struct uvc_video_queue *queue,
715 struct v4l2_buffer *v4l2_buf);
716extern int uvc_dequeue_buffer(struct uvc_video_queue *queue,
717 struct v4l2_buffer *v4l2_buf, int nonblocking);
718extern int uvc_queue_enable(struct uvc_video_queue *queue, int enable);
719extern void uvc_queue_cancel(struct uvc_video_queue *queue, int disconnect);
720extern struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue,
721 struct uvc_buffer *buf);
722extern unsigned int uvc_queue_poll(struct uvc_video_queue *queue,
723 struct file *file, poll_table *wait);
724static inline int uvc_queue_streaming(struct uvc_video_queue *queue)
725{
726 return queue->flags & UVC_QUEUE_STREAMING;
727}
728
729/* V4L2 interface */
730extern struct file_operations uvc_fops;
731
732/* Video */
733extern int uvc_video_init(struct uvc_video_device *video);
734extern int uvc_video_suspend(struct uvc_video_device *video);
735extern int uvc_video_resume(struct uvc_video_device *video);
736extern int uvc_video_enable(struct uvc_video_device *video, int enable);
737extern int uvc_probe_video(struct uvc_video_device *video,
738 struct uvc_streaming_control *probe);
739extern int uvc_query_ctrl(struct uvc_device *dev, __u8 query, __u8 unit,
740 __u8 intfnum, __u8 cs, void *data, __u16 size);
741extern int uvc_set_video_ctrl(struct uvc_video_device *video,
742 struct uvc_streaming_control *ctrl, int probe);
743
744/* Status */
745extern int uvc_status_init(struct uvc_device *dev);
746extern void uvc_status_cleanup(struct uvc_device *dev);
747extern int uvc_status_suspend(struct uvc_device *dev);
748extern int uvc_status_resume(struct uvc_device *dev);
749
750/* Controls */
751extern struct uvc_control *uvc_find_control(struct uvc_video_device *video,
752 __u32 v4l2_id, struct uvc_control_mapping **mapping);
753extern int uvc_query_v4l2_ctrl(struct uvc_video_device *video,
754 struct v4l2_queryctrl *v4l2_ctrl);
755
756extern int uvc_ctrl_add_info(struct uvc_control_info *info);
757extern int uvc_ctrl_add_mapping(struct uvc_control_mapping *mapping);
758extern int uvc_ctrl_init_device(struct uvc_device *dev);
759extern void uvc_ctrl_cleanup_device(struct uvc_device *dev);
760extern int uvc_ctrl_resume_device(struct uvc_device *dev);
761extern void uvc_ctrl_init(void);
762
763extern int uvc_ctrl_begin(struct uvc_video_device *video);
764extern int __uvc_ctrl_commit(struct uvc_video_device *video, int rollback);
765static inline int uvc_ctrl_commit(struct uvc_video_device *video)
766{
767 return __uvc_ctrl_commit(video, 0);
768}
769static inline int uvc_ctrl_rollback(struct uvc_video_device *video)
770{
771 return __uvc_ctrl_commit(video, 1);
772}
773
774extern int uvc_ctrl_get(struct uvc_video_device *video,
775 struct v4l2_ext_control *xctrl);
776extern int uvc_ctrl_set(struct uvc_video_device *video,
777 struct v4l2_ext_control *xctrl);
778
779extern int uvc_xu_ctrl_query(struct uvc_video_device *video,
780 struct uvc_xu_control *ctrl, int set);
781
782/* Utility functions */
783extern void uvc_simplify_fraction(uint32_t *numerator, uint32_t *denominator,
784 unsigned int n_terms, unsigned int threshold);
785extern uint32_t uvc_fraction_to_interval(uint32_t numerator,
786 uint32_t denominator);
787extern struct usb_host_endpoint *uvc_find_endpoint(
788 struct usb_host_interface *alts, __u8 epaddr);
789
790/* Quirks support */
791void uvc_video_decode_isight(struct urb *urb, struct uvc_video_device *video,
792 struct uvc_buffer *buf);
793
794#endif /* __KERNEL__ */
795
796#endif
diff --git a/drivers/media/video/videodev.c b/drivers/media/video/videodev.c
index 31e8af0ba278..67a661cf5219 100644
--- a/drivers/media/video/videodev.c
+++ b/drivers/media/video/videodev.c
@@ -51,12 +51,51 @@
51#define VIDEO_NUM_DEVICES 256 51#define VIDEO_NUM_DEVICES 256
52#define VIDEO_NAME "video4linux" 52#define VIDEO_NAME "video4linux"
53 53
54struct std_descr {
55 v4l2_std_id std;
56 const char *descr;
57};
58
59static const struct std_descr standards[] = {
60 { V4L2_STD_NTSC, "NTSC" },
61 { V4L2_STD_NTSC_M, "NTSC-M" },
62 { V4L2_STD_NTSC_M_JP, "NTSC-M-JP" },
63 { V4L2_STD_NTSC_M_KR, "NTSC-M-KR" },
64 { V4L2_STD_NTSC_443, "NTSC-443" },
65 { V4L2_STD_PAL, "PAL" },
66 { V4L2_STD_PAL_BG, "PAL-BG" },
67 { V4L2_STD_PAL_B, "PAL-B" },
68 { V4L2_STD_PAL_B1, "PAL-B1" },
69 { V4L2_STD_PAL_G, "PAL-G" },
70 { V4L2_STD_PAL_H, "PAL-H" },
71 { V4L2_STD_PAL_I, "PAL-I" },
72 { V4L2_STD_PAL_DK, "PAL-DK" },
73 { V4L2_STD_PAL_D, "PAL-D" },
74 { V4L2_STD_PAL_D1, "PAL-D1" },
75 { V4L2_STD_PAL_K, "PAL-K" },
76 { V4L2_STD_PAL_M, "PAL-M" },
77 { V4L2_STD_PAL_N, "PAL-N" },
78 { V4L2_STD_PAL_Nc, "PAL-Nc" },
79 { V4L2_STD_PAL_60, "PAL-60" },
80 { V4L2_STD_SECAM, "SECAM" },
81 { V4L2_STD_SECAM_B, "SECAM-B" },
82 { V4L2_STD_SECAM_G, "SECAM-G" },
83 { V4L2_STD_SECAM_H, "SECAM-H" },
84 { V4L2_STD_SECAM_DK, "SECAM-DK" },
85 { V4L2_STD_SECAM_D, "SECAM-D" },
86 { V4L2_STD_SECAM_K, "SECAM-K" },
87 { V4L2_STD_SECAM_K1, "SECAM-K1" },
88 { V4L2_STD_SECAM_L, "SECAM-L" },
89 { V4L2_STD_SECAM_LC, "SECAM-Lc" },
90 { 0, "Unknown" }
91};
92
54/* video4linux standard ID conversion to standard name 93/* video4linux standard ID conversion to standard name
55 */ 94 */
56char *v4l2_norm_to_name(v4l2_std_id id) 95const char *v4l2_norm_to_name(v4l2_std_id id)
57{ 96{
58 char *name;
59 u32 myid = id; 97 u32 myid = id;
98 int i;
60 99
61 /* HACK: ppc32 architecture doesn't have __ucmpdi2 function to handle 100 /* HACK: ppc32 architecture doesn't have __ucmpdi2 function to handle
62 64 bit comparations. So, on that architecture, with some gcc 101 64 bit comparations. So, on that architecture, with some gcc
@@ -64,110 +103,17 @@ char *v4l2_norm_to_name(v4l2_std_id id)
64 */ 103 */
65 BUG_ON(myid != id); 104 BUG_ON(myid != id);
66 105
67 switch (myid) { 106 for (i = 0; standards[i].std; i++)
68 case V4L2_STD_PAL: 107 if (myid == standards[i].std)
69 name = "PAL"; 108 break;
70 break; 109 return standards[i].descr;
71 case V4L2_STD_PAL_BG:
72 name = "PAL-BG";
73 break;
74 case V4L2_STD_PAL_DK:
75 name = "PAL-DK";
76 break;
77 case V4L2_STD_PAL_B:
78 name = "PAL-B";
79 break;
80 case V4L2_STD_PAL_B1:
81 name = "PAL-B1";
82 break;
83 case V4L2_STD_PAL_G:
84 name = "PAL-G";
85 break;
86 case V4L2_STD_PAL_H:
87 name = "PAL-H";
88 break;
89 case V4L2_STD_PAL_I:
90 name = "PAL-I";
91 break;
92 case V4L2_STD_PAL_D:
93 name = "PAL-D";
94 break;
95 case V4L2_STD_PAL_D1:
96 name = "PAL-D1";
97 break;
98 case V4L2_STD_PAL_K:
99 name = "PAL-K";
100 break;
101 case V4L2_STD_PAL_M:
102 name = "PAL-M";
103 break;
104 case V4L2_STD_PAL_N:
105 name = "PAL-N";
106 break;
107 case V4L2_STD_PAL_Nc:
108 name = "PAL-Nc";
109 break;
110 case V4L2_STD_PAL_60:
111 name = "PAL-60";
112 break;
113 case V4L2_STD_NTSC:
114 name = "NTSC";
115 break;
116 case V4L2_STD_NTSC_M:
117 name = "NTSC-M";
118 break;
119 case V4L2_STD_NTSC_M_JP:
120 name = "NTSC-M-JP";
121 break;
122 case V4L2_STD_NTSC_443:
123 name = "NTSC-443";
124 break;
125 case V4L2_STD_NTSC_M_KR:
126 name = "NTSC-M-KR";
127 break;
128 case V4L2_STD_SECAM:
129 name = "SECAM";
130 break;
131 case V4L2_STD_SECAM_DK:
132 name = "SECAM-DK";
133 break;
134 case V4L2_STD_SECAM_B:
135 name = "SECAM-B";
136 break;
137 case V4L2_STD_SECAM_D:
138 name = "SECAM-D";
139 break;
140 case V4L2_STD_SECAM_G:
141 name = "SECAM-G";
142 break;
143 case V4L2_STD_SECAM_H:
144 name = "SECAM-H";
145 break;
146 case V4L2_STD_SECAM_K:
147 name = "SECAM-K";
148 break;
149 case V4L2_STD_SECAM_K1:
150 name = "SECAM-K1";
151 break;
152 case V4L2_STD_SECAM_L:
153 name = "SECAM-L";
154 break;
155 case V4L2_STD_SECAM_LC:
156 name = "SECAM-LC";
157 break;
158 default:
159 name = "Unknown";
160 break;
161 }
162
163 return name;
164} 110}
165EXPORT_SYMBOL(v4l2_norm_to_name); 111EXPORT_SYMBOL(v4l2_norm_to_name);
166 112
167/* Fill in the fields of a v4l2_standard structure according to the 113/* Fill in the fields of a v4l2_standard structure according to the
168 'id' and 'transmission' parameters. Returns negative on error. */ 114 'id' and 'transmission' parameters. Returns negative on error. */
169int v4l2_video_std_construct(struct v4l2_standard *vs, 115int v4l2_video_std_construct(struct v4l2_standard *vs,
170 int id, char *name) 116 int id, const char *name)
171{ 117{
172 u32 index = vs->index; 118 u32 index = vs->index;
173 119
@@ -1218,95 +1164,40 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
1218 case VIDIOC_ENUMSTD: 1164 case VIDIOC_ENUMSTD:
1219 { 1165 {
1220 struct v4l2_standard *p = arg; 1166 struct v4l2_standard *p = arg;
1221 v4l2_std_id id = vfd->tvnorms,curr_id=0; 1167 v4l2_std_id id = vfd->tvnorms, curr_id = 0;
1222 unsigned int index = p->index,i; 1168 unsigned int index = p->index, i, j = 0;
1223 1169 const char *descr = "";
1224 if (index<0) { 1170
1225 ret=-EINVAL; 1171 /* Return norm array in a canonical way */
1226 break; 1172 for (i = 0; i <= index && id; i++) {
1227 } 1173 /* last std value in the standards array is 0, so this
1228 1174 while always ends there since (id & 0) == 0. */
1229 /* Return norm array on a canonical way */ 1175 while ((id & standards[j].std) != standards[j].std)
1230 for (i=0;i<= index && id; i++) { 1176 j++;
1231 if ( (id & V4L2_STD_PAL) == V4L2_STD_PAL) { 1177 curr_id = standards[j].std;
1232 curr_id = V4L2_STD_PAL; 1178 descr = standards[j].descr;
1233 } else if ( (id & V4L2_STD_PAL_BG) == V4L2_STD_PAL_BG) { 1179 j++;
1234 curr_id = V4L2_STD_PAL_BG; 1180 if (curr_id == 0)
1235 } else if ( (id & V4L2_STD_PAL_DK) == V4L2_STD_PAL_DK) {
1236 curr_id = V4L2_STD_PAL_DK;
1237 } else if ( (id & V4L2_STD_PAL_B) == V4L2_STD_PAL_B) {
1238 curr_id = V4L2_STD_PAL_B;
1239 } else if ( (id & V4L2_STD_PAL_B1) == V4L2_STD_PAL_B1) {
1240 curr_id = V4L2_STD_PAL_B1;
1241 } else if ( (id & V4L2_STD_PAL_G) == V4L2_STD_PAL_G) {
1242 curr_id = V4L2_STD_PAL_G;
1243 } else if ( (id & V4L2_STD_PAL_H) == V4L2_STD_PAL_H) {
1244 curr_id = V4L2_STD_PAL_H;
1245 } else if ( (id & V4L2_STD_PAL_I) == V4L2_STD_PAL_I) {
1246 curr_id = V4L2_STD_PAL_I;
1247 } else if ( (id & V4L2_STD_PAL_D) == V4L2_STD_PAL_D) {
1248 curr_id = V4L2_STD_PAL_D;
1249 } else if ( (id & V4L2_STD_PAL_D1) == V4L2_STD_PAL_D1) {
1250 curr_id = V4L2_STD_PAL_D1;
1251 } else if ( (id & V4L2_STD_PAL_K) == V4L2_STD_PAL_K) {
1252 curr_id = V4L2_STD_PAL_K;
1253 } else if ( (id & V4L2_STD_PAL_M) == V4L2_STD_PAL_M) {
1254 curr_id = V4L2_STD_PAL_M;
1255 } else if ( (id & V4L2_STD_PAL_N) == V4L2_STD_PAL_N) {
1256 curr_id = V4L2_STD_PAL_N;
1257 } else if ( (id & V4L2_STD_PAL_Nc) == V4L2_STD_PAL_Nc) {
1258 curr_id = V4L2_STD_PAL_Nc;
1259 } else if ( (id & V4L2_STD_PAL_60) == V4L2_STD_PAL_60) {
1260 curr_id = V4L2_STD_PAL_60;
1261 } else if ( (id & V4L2_STD_NTSC) == V4L2_STD_NTSC) {
1262 curr_id = V4L2_STD_NTSC;
1263 } else if ( (id & V4L2_STD_NTSC_M) == V4L2_STD_NTSC_M) {
1264 curr_id = V4L2_STD_NTSC_M;
1265 } else if ( (id & V4L2_STD_NTSC_M_JP) == V4L2_STD_NTSC_M_JP) {
1266 curr_id = V4L2_STD_NTSC_M_JP;
1267 } else if ( (id & V4L2_STD_NTSC_443) == V4L2_STD_NTSC_443) {
1268 curr_id = V4L2_STD_NTSC_443;
1269 } else if ( (id & V4L2_STD_NTSC_M_KR) == V4L2_STD_NTSC_M_KR) {
1270 curr_id = V4L2_STD_NTSC_M_KR;
1271 } else if ( (id & V4L2_STD_SECAM) == V4L2_STD_SECAM) {
1272 curr_id = V4L2_STD_SECAM;
1273 } else if ( (id & V4L2_STD_SECAM_DK) == V4L2_STD_SECAM_DK) {
1274 curr_id = V4L2_STD_SECAM_DK;
1275 } else if ( (id & V4L2_STD_SECAM_B) == V4L2_STD_SECAM_B) {
1276 curr_id = V4L2_STD_SECAM_B;
1277 } else if ( (id & V4L2_STD_SECAM_D) == V4L2_STD_SECAM_D) {
1278 curr_id = V4L2_STD_SECAM_D;
1279 } else if ( (id & V4L2_STD_SECAM_G) == V4L2_STD_SECAM_G) {
1280 curr_id = V4L2_STD_SECAM_G;
1281 } else if ( (id & V4L2_STD_SECAM_H) == V4L2_STD_SECAM_H) {
1282 curr_id = V4L2_STD_SECAM_H;
1283 } else if ( (id & V4L2_STD_SECAM_K) == V4L2_STD_SECAM_K) {
1284 curr_id = V4L2_STD_SECAM_K;
1285 } else if ( (id & V4L2_STD_SECAM_K1) == V4L2_STD_SECAM_K1) {
1286 curr_id = V4L2_STD_SECAM_K1;
1287 } else if ( (id & V4L2_STD_SECAM_L) == V4L2_STD_SECAM_L) {
1288 curr_id = V4L2_STD_SECAM_L;
1289 } else if ( (id & V4L2_STD_SECAM_LC) == V4L2_STD_SECAM_LC) {
1290 curr_id = V4L2_STD_SECAM_LC;
1291 } else {
1292 break; 1181 break;
1293 } 1182 if (curr_id != V4L2_STD_PAL &&
1294 id &= ~curr_id; 1183 curr_id != V4L2_STD_SECAM &&
1184 curr_id != V4L2_STD_NTSC)
1185 id &= ~curr_id;
1295 } 1186 }
1296 if (i<=index) 1187 if (i <= index)
1297 return -EINVAL; 1188 return -EINVAL;
1298 1189
1299 v4l2_video_std_construct(p, curr_id,v4l2_norm_to_name(curr_id)); 1190 v4l2_video_std_construct(p, curr_id, descr);
1300 p->index = index; 1191 p->index = index;
1301 1192
1302 dbgarg (cmd, "index=%d, id=%Ld, name=%s, fps=%d/%d, " 1193 dbgarg(cmd, "index=%d, id=%Ld, name=%s, fps=%d/%d, "
1303 "framelines=%d\n", p->index, 1194 "framelines=%d\n", p->index,
1304 (unsigned long long)p->id, p->name, 1195 (unsigned long long)p->id, p->name,
1305 p->frameperiod.numerator, 1196 p->frameperiod.numerator,
1306 p->frameperiod.denominator, 1197 p->frameperiod.denominator,
1307 p->framelines); 1198 p->framelines);
1308 1199
1309 ret=0; 1200 ret = 0;
1310 break; 1201 break;
1311 } 1202 }
1312 case VIDIOC_G_STD: 1203 case VIDIOC_G_STD:
diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index 845be1864f68..5ff9a58b6135 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -327,13 +327,14 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf)
327 int hmax = buf->vb.height; 327 int hmax = buf->vb.height;
328 int wmax = buf->vb.width; 328 int wmax = buf->vb.width;
329 struct timeval ts; 329 struct timeval ts;
330 char *tmpbuf = kmalloc(wmax * 2, GFP_ATOMIC); 330 char *tmpbuf;
331 void *vbuf = videobuf_to_vmalloc(&buf->vb); 331 void *vbuf = videobuf_to_vmalloc(&buf->vb);
332 332
333 if (!tmpbuf) 333 if (!vbuf)
334 return; 334 return;
335 335
336 if (!vbuf) 336 tmpbuf = kmalloc(wmax * 2, GFP_ATOMIC);
337 if (!tmpbuf)
337 return; 338 return;
338 339
339 for (h = 0; h < hmax; h++) { 340 for (h = 0; h < hmax; h++) {
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
index 65210fca37ed..d89475d36988 100644
--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -114,6 +114,7 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
114 unsigned int nob = data->blocks; 114 unsigned int nob = data->blocks;
115 unsigned long long clks; 115 unsigned long long clks;
116 unsigned int timeout; 116 unsigned int timeout;
117 bool dalgn = 0;
117 u32 dcmd; 118 u32 dcmd;
118 int i; 119 int i;
119 120
@@ -152,6 +153,9 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
152 host->sg_cpu[i].dcmd = dcmd | length; 153 host->sg_cpu[i].dcmd = dcmd | length;
153 if (length & 31 && !(data->flags & MMC_DATA_READ)) 154 if (length & 31 && !(data->flags & MMC_DATA_READ))
154 host->sg_cpu[i].dcmd |= DCMD_ENDIRQEN; 155 host->sg_cpu[i].dcmd |= DCMD_ENDIRQEN;
156 /* Not aligned to 8-byte boundary? */
157 if (sg_dma_address(&data->sg[i]) & 0x7)
158 dalgn = 1;
155 if (data->flags & MMC_DATA_READ) { 159 if (data->flags & MMC_DATA_READ) {
156 host->sg_cpu[i].dsadr = host->res->start + MMC_RXFIFO; 160 host->sg_cpu[i].dsadr = host->res->start + MMC_RXFIFO;
157 host->sg_cpu[i].dtadr = sg_dma_address(&data->sg[i]); 161 host->sg_cpu[i].dtadr = sg_dma_address(&data->sg[i]);
@@ -165,6 +169,15 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
165 host->sg_cpu[host->dma_len - 1].ddadr = DDADR_STOP; 169 host->sg_cpu[host->dma_len - 1].ddadr = DDADR_STOP;
166 wmb(); 170 wmb();
167 171
172 /*
173 * The PXA27x DMA controller encounters overhead when working with
174 * unaligned (to 8-byte boundaries) data, so switch on byte alignment
175 * mode only if we have unaligned data.
176 */
177 if (dalgn)
178 DALGN |= (1 << host->dma);
179 else
180 DALGN &= (1 << host->dma);
168 DDADR(host->dma) = host->sg_dma; 181 DDADR(host->dma) = host->sg_dma;
169 DCSR(host->dma) = DCSR_RUN; 182 DCSR(host->dma) = DCSR_RUN;
170} 183}
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 07c2048b230b..b413aa6c246b 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -55,6 +55,10 @@ static unsigned int debug_quirks = 0;
55#define SDHCI_QUIRK_32BIT_DMA_SIZE (1<<7) 55#define SDHCI_QUIRK_32BIT_DMA_SIZE (1<<7)
56/* Controller needs to be reset after each request to stay stable */ 56/* Controller needs to be reset after each request to stay stable */
57#define SDHCI_QUIRK_RESET_AFTER_REQUEST (1<<8) 57#define SDHCI_QUIRK_RESET_AFTER_REQUEST (1<<8)
58/* Controller needs voltage and power writes to happen separately */
59#define SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER (1<<9)
60/* Controller has an off-by-one issue with timeout value */
61#define SDHCI_QUIRK_INCR_TIMEOUT_CONTROL (1<<10)
58 62
59static const struct pci_device_id pci_ids[] __devinitdata = { 63static const struct pci_device_id pci_ids[] __devinitdata = {
60 { 64 {
@@ -115,7 +119,8 @@ static const struct pci_device_id pci_ids[] __devinitdata = {
115 .subvendor = PCI_ANY_ID, 119 .subvendor = PCI_ANY_ID,
116 .subdevice = PCI_ANY_ID, 120 .subdevice = PCI_ANY_ID,
117 .driver_data = SDHCI_QUIRK_SINGLE_POWER_WRITE | 121 .driver_data = SDHCI_QUIRK_SINGLE_POWER_WRITE |
118 SDHCI_QUIRK_RESET_CMD_DATA_ON_IOS, 122 SDHCI_QUIRK_RESET_CMD_DATA_ON_IOS |
123 SDHCI_QUIRK_BROKEN_DMA,
119 }, 124 },
120 125
121 { 126 {
@@ -124,7 +129,17 @@ static const struct pci_device_id pci_ids[] __devinitdata = {
124 .subvendor = PCI_ANY_ID, 129 .subvendor = PCI_ANY_ID,
125 .subdevice = PCI_ANY_ID, 130 .subdevice = PCI_ANY_ID,
126 .driver_data = SDHCI_QUIRK_SINGLE_POWER_WRITE | 131 .driver_data = SDHCI_QUIRK_SINGLE_POWER_WRITE |
127 SDHCI_QUIRK_RESET_CMD_DATA_ON_IOS, 132 SDHCI_QUIRK_RESET_CMD_DATA_ON_IOS |
133 SDHCI_QUIRK_BROKEN_DMA,
134 },
135
136 {
137 .vendor = PCI_VENDOR_ID_MARVELL,
138 .device = PCI_DEVICE_ID_MARVELL_CAFE_SD,
139 .subvendor = PCI_ANY_ID,
140 .subdevice = PCI_ANY_ID,
141 .driver_data = SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER |
142 SDHCI_QUIRK_INCR_TIMEOUT_CONTROL,
128 }, 143 },
129 144
130 { 145 {
@@ -469,6 +484,13 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_data *data)
469 break; 484 break;
470 } 485 }
471 486
487 /*
488 * Compensate for an off-by-one error in the CaFe hardware; otherwise,
489 * a too-small count gives us interrupt timeouts.
490 */
491 if ((host->chip->quirks & SDHCI_QUIRK_INCR_TIMEOUT_CONTROL))
492 count++;
493
472 if (count >= 0xF) { 494 if (count >= 0xF) {
473 printk(KERN_WARNING "%s: Too large timeout requested!\n", 495 printk(KERN_WARNING "%s: Too large timeout requested!\n",
474 mmc_hostname(host->mmc)); 496 mmc_hostname(host->mmc));
@@ -774,6 +796,14 @@ static void sdhci_set_power(struct sdhci_host *host, unsigned short power)
774 BUG(); 796 BUG();
775 } 797 }
776 798
799 /*
800 * At least the CaFe chip gets confused if we set the voltage
801 * and set turn on power at the same time, so set the voltage first.
802 */
803 if ((host->chip->quirks & SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER))
804 writeb(pwr & ~SDHCI_POWER_ON,
805 host->ioaddr + SDHCI_POWER_CONTROL);
806
777 writeb(pwr, host->ioaddr + SDHCI_POWER_CONTROL); 807 writeb(pwr, host->ioaddr + SDHCI_POWER_CONTROL);
778 808
779out: 809out:
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
index 2edda8cc7f99..aabad8ce7458 100644
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -1768,9 +1768,10 @@ vortex_timer(unsigned long data)
1768 case XCVR_MII: case XCVR_NWAY: 1768 case XCVR_MII: case XCVR_NWAY:
1769 { 1769 {
1770 ok = 1; 1770 ok = 1;
1771 spin_lock_bh(&vp->lock); 1771 /* Interrupts are already disabled */
1772 spin_lock(&vp->lock);
1772 vortex_check_media(dev, 0); 1773 vortex_check_media(dev, 0);
1773 spin_unlock_bh(&vp->lock); 1774 spin_unlock(&vp->lock);
1774 } 1775 }
1775 break; 1776 break;
1776 default: /* Other media types handled by Tx timeouts. */ 1777 default: /* Other media types handled by Tx timeouts. */
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
index 99e0b4cdc56f..3c798ae5c343 100644
--- a/drivers/net/atlx/atl1.c
+++ b/drivers/net/atlx/atl1.c
@@ -471,7 +471,6 @@ static int atl1_get_permanent_address(struct atl1_hw *hw)
471 memcpy(hw->perm_mac_addr, eth_addr, ETH_ALEN); 471 memcpy(hw->perm_mac_addr, eth_addr, ETH_ALEN);
472 return 0; 472 return 0;
473 } 473 }
474 return 1;
475 } 474 }
476 475
477 /* see if SPI FLAGS exist ? */ 476 /* see if SPI FLAGS exist ? */
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index f3cba5e24ec5..1037b1332312 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -1803,6 +1803,8 @@ static int e100_rx_alloc_skb(struct nic *nic, struct rx *rx)
1803 if (rx->prev->skb) { 1803 if (rx->prev->skb) {
1804 struct rfd *prev_rfd = (struct rfd *)rx->prev->skb->data; 1804 struct rfd *prev_rfd = (struct rfd *)rx->prev->skb->data;
1805 put_unaligned_le32(rx->dma_addr, &prev_rfd->link); 1805 put_unaligned_le32(rx->dma_addr, &prev_rfd->link);
1806 pci_dma_sync_single_for_device(nic->pdev, rx->prev->dma_addr,
1807 sizeof(struct rfd), PCI_DMA_TODEVICE);
1806 } 1808 }
1807 1809
1808 return 0; 1810 return 0;
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c
index 701531e72e7b..a3f6a9c72ec8 100644
--- a/drivers/net/e1000/e1000_ethtool.c
+++ b/drivers/net/e1000/e1000_ethtool.c
@@ -347,7 +347,7 @@ e1000_set_tso(struct net_device *netdev, u32 data)
347 else 347 else
348 netdev->features &= ~NETIF_F_TSO; 348 netdev->features &= ~NETIF_F_TSO;
349 349
350 if (data) 350 if (data && (adapter->hw.mac_type > e1000_82547_rev_2))
351 netdev->features |= NETIF_F_TSO6; 351 netdev->features |= NETIF_F_TSO6;
352 else 352 else
353 netdev->features &= ~NETIF_F_TSO6; 353 netdev->features &= ~NETIF_F_TSO6;
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index cab1835173cd..648a87bbf467 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -2535,7 +2535,8 @@ void e1000e_down(struct e1000_adapter *adapter)
2535 adapter->link_speed = 0; 2535 adapter->link_speed = 0;
2536 adapter->link_duplex = 0; 2536 adapter->link_duplex = 0;
2537 2537
2538 e1000e_reset(adapter); 2538 if (!pci_channel_offline(adapter->pdev))
2539 e1000e_reset(adapter);
2539 e1000_clean_tx_ring(adapter); 2540 e1000_clean_tx_ring(adapter);
2540 e1000_clean_rx_ring(adapter); 2541 e1000_clean_rx_ring(adapter);
2541 2542
diff --git a/drivers/net/enc28j60.c b/drivers/net/enc28j60.c
index 46a90e9ec563..c05cb159c772 100644
--- a/drivers/net/enc28j60.c
+++ b/drivers/net/enc28j60.c
@@ -400,26 +400,31 @@ enc28j60_packet_write(struct enc28j60_net *priv, int len, const u8 *data)
400 mutex_unlock(&priv->lock); 400 mutex_unlock(&priv->lock);
401} 401}
402 402
403/* 403static unsigned long msec20_to_jiffies;
404 * Wait until the PHY operation is complete. 404
405 */ 405static int poll_ready(struct enc28j60_net *priv, u8 reg, u8 mask, u8 val)
406static int wait_phy_ready(struct enc28j60_net *priv)
407{ 406{
408 unsigned long timeout = jiffies + 20 * HZ / 1000; 407 unsigned long timeout = jiffies + msec20_to_jiffies;
409 int ret = 1;
410 408
411 /* 20 msec timeout read */ 409 /* 20 msec timeout read */
412 while (nolock_regb_read(priv, MISTAT) & MISTAT_BUSY) { 410 while ((nolock_regb_read(priv, reg) & mask) != val) {
413 if (time_after(jiffies, timeout)) { 411 if (time_after(jiffies, timeout)) {
414 if (netif_msg_drv(priv)) 412 if (netif_msg_drv(priv))
415 printk(KERN_DEBUG DRV_NAME 413 dev_dbg(&priv->spi->dev,
416 ": PHY ready timeout!\n"); 414 "reg %02x ready timeout!\n", reg);
417 ret = 0; 415 return -ETIMEDOUT;
418 break;
419 } 416 }
420 cpu_relax(); 417 cpu_relax();
421 } 418 }
422 return ret; 419 return 0;
420}
421
422/*
423 * Wait until the PHY operation is complete.
424 */
425static int wait_phy_ready(struct enc28j60_net *priv)
426{
427 return poll_ready(priv, MISTAT, MISTAT_BUSY, 0) ? 0 : 1;
423} 428}
424 429
425/* 430/*
@@ -594,6 +599,32 @@ static void nolock_txfifo_init(struct enc28j60_net *priv, u16 start, u16 end)
594 nolock_regw_write(priv, ETXNDL, end); 599 nolock_regw_write(priv, ETXNDL, end);
595} 600}
596 601
602/*
603 * Low power mode shrinks power consumption about 100x, so we'd like
604 * the chip to be in that mode whenever it's inactive. (However, we
605 * can't stay in lowpower mode during suspend with WOL active.)
606 */
607static void enc28j60_lowpower(struct enc28j60_net *priv, bool is_low)
608{
609 if (netif_msg_drv(priv))
610 dev_dbg(&priv->spi->dev, "%s power...\n",
611 is_low ? "low" : "high");
612
613 mutex_lock(&priv->lock);
614 if (is_low) {
615 nolock_reg_bfclr(priv, ECON1, ECON1_RXEN);
616 poll_ready(priv, ESTAT, ESTAT_RXBUSY, 0);
617 poll_ready(priv, ECON1, ECON1_TXRTS, 0);
618 /* ECON2_VRPS was set during initialization */
619 nolock_reg_bfset(priv, ECON2, ECON2_PWRSV);
620 } else {
621 nolock_reg_bfclr(priv, ECON2, ECON2_PWRSV);
622 poll_ready(priv, ESTAT, ESTAT_CLKRDY, ESTAT_CLKRDY);
623 /* caller sets ECON1_RXEN */
624 }
625 mutex_unlock(&priv->lock);
626}
627
597static int enc28j60_hw_init(struct enc28j60_net *priv) 628static int enc28j60_hw_init(struct enc28j60_net *priv)
598{ 629{
599 u8 reg; 630 u8 reg;
@@ -612,8 +643,8 @@ static int enc28j60_hw_init(struct enc28j60_net *priv)
612 priv->tx_retry_count = 0; 643 priv->tx_retry_count = 0;
613 priv->max_pk_counter = 0; 644 priv->max_pk_counter = 0;
614 priv->rxfilter = RXFILTER_NORMAL; 645 priv->rxfilter = RXFILTER_NORMAL;
615 /* enable address auto increment */ 646 /* enable address auto increment and voltage regulator powersave */
616 nolock_regb_write(priv, ECON2, ECON2_AUTOINC); 647 nolock_regb_write(priv, ECON2, ECON2_AUTOINC | ECON2_VRPS);
617 648
618 nolock_rxfifo_init(priv, RXSTART_INIT, RXEND_INIT); 649 nolock_rxfifo_init(priv, RXSTART_INIT, RXEND_INIT);
619 nolock_txfifo_init(priv, TXSTART_INIT, TXEND_INIT); 650 nolock_txfifo_init(priv, TXSTART_INIT, TXEND_INIT);
@@ -690,7 +721,7 @@ static int enc28j60_hw_init(struct enc28j60_net *priv)
690 721
691static void enc28j60_hw_enable(struct enc28j60_net *priv) 722static void enc28j60_hw_enable(struct enc28j60_net *priv)
692{ 723{
693 /* enable interrutps */ 724 /* enable interrupts */
694 if (netif_msg_hw(priv)) 725 if (netif_msg_hw(priv))
695 printk(KERN_DEBUG DRV_NAME ": %s() enabling interrupts.\n", 726 printk(KERN_DEBUG DRV_NAME ": %s() enabling interrupts.\n",
696 __FUNCTION__); 727 __FUNCTION__);
@@ -726,15 +757,12 @@ enc28j60_setlink(struct net_device *ndev, u8 autoneg, u16 speed, u8 duplex)
726 int ret = 0; 757 int ret = 0;
727 758
728 if (!priv->hw_enable) { 759 if (!priv->hw_enable) {
729 if (autoneg == AUTONEG_DISABLE && speed == SPEED_10) { 760 /* link is in low power mode now; duplex setting
761 * will take effect on next enc28j60_hw_init().
762 */
763 if (autoneg == AUTONEG_DISABLE && speed == SPEED_10)
730 priv->full_duplex = (duplex == DUPLEX_FULL); 764 priv->full_duplex = (duplex == DUPLEX_FULL);
731 if (!enc28j60_hw_init(priv)) { 765 else {
732 if (netif_msg_drv(priv))
733 dev_err(&ndev->dev,
734 "hw_reset() failed\n");
735 ret = -EINVAL;
736 }
737 } else {
738 if (netif_msg_link(priv)) 766 if (netif_msg_link(priv))
739 dev_warn(&ndev->dev, 767 dev_warn(&ndev->dev,
740 "unsupported link setting\n"); 768 "unsupported link setting\n");
@@ -1307,7 +1335,8 @@ static int enc28j60_net_open(struct net_device *dev)
1307 } 1335 }
1308 return -EADDRNOTAVAIL; 1336 return -EADDRNOTAVAIL;
1309 } 1337 }
1310 /* Reset the hardware here */ 1338 /* Reset the hardware here (and take it out of low power mode) */
1339 enc28j60_lowpower(priv, false);
1311 enc28j60_hw_disable(priv); 1340 enc28j60_hw_disable(priv);
1312 if (!enc28j60_hw_init(priv)) { 1341 if (!enc28j60_hw_init(priv)) {
1313 if (netif_msg_ifup(priv)) 1342 if (netif_msg_ifup(priv))
@@ -1337,6 +1366,7 @@ static int enc28j60_net_close(struct net_device *dev)
1337 printk(KERN_DEBUG DRV_NAME ": %s() enter\n", __FUNCTION__); 1366 printk(KERN_DEBUG DRV_NAME ": %s() enter\n", __FUNCTION__);
1338 1367
1339 enc28j60_hw_disable(priv); 1368 enc28j60_hw_disable(priv);
1369 enc28j60_lowpower(priv, true);
1340 netif_stop_queue(dev); 1370 netif_stop_queue(dev);
1341 1371
1342 return 0; 1372 return 0;
@@ -1537,6 +1567,8 @@ static int __devinit enc28j60_probe(struct spi_device *spi)
1537 dev->watchdog_timeo = TX_TIMEOUT; 1567 dev->watchdog_timeo = TX_TIMEOUT;
1538 SET_ETHTOOL_OPS(dev, &enc28j60_ethtool_ops); 1568 SET_ETHTOOL_OPS(dev, &enc28j60_ethtool_ops);
1539 1569
1570 enc28j60_lowpower(priv, true);
1571
1540 ret = register_netdev(dev); 1572 ret = register_netdev(dev);
1541 if (ret) { 1573 if (ret) {
1542 if (netif_msg_probe(priv)) 1574 if (netif_msg_probe(priv))
@@ -1556,7 +1588,7 @@ error_alloc:
1556 return ret; 1588 return ret;
1557} 1589}
1558 1590
1559static int enc28j60_remove(struct spi_device *spi) 1591static int __devexit enc28j60_remove(struct spi_device *spi)
1560{ 1592{
1561 struct enc28j60_net *priv = dev_get_drvdata(&spi->dev); 1593 struct enc28j60_net *priv = dev_get_drvdata(&spi->dev);
1562 1594
@@ -1573,15 +1605,16 @@ static int enc28j60_remove(struct spi_device *spi)
1573static struct spi_driver enc28j60_driver = { 1605static struct spi_driver enc28j60_driver = {
1574 .driver = { 1606 .driver = {
1575 .name = DRV_NAME, 1607 .name = DRV_NAME,
1576 .bus = &spi_bus_type,
1577 .owner = THIS_MODULE, 1608 .owner = THIS_MODULE,
1578 }, 1609 },
1579 .probe = enc28j60_probe, 1610 .probe = enc28j60_probe,
1580 .remove = __devexit_p(enc28j60_remove), 1611 .remove = __devexit_p(enc28j60_remove),
1581}; 1612};
1582 1613
1583static int __init enc28j60_init(void) 1614static int __init enc28j60_init(void)
1584{ 1615{
1616 msec20_to_jiffies = msecs_to_jiffies(20);
1617
1585 return spi_register_driver(&enc28j60_driver); 1618 return spi_register_driver(&enc28j60_driver);
1586} 1619}
1587 1620
diff --git a/drivers/net/hamradio/dmascc.c b/drivers/net/hamradio/dmascc.c
index 0b94833e23f7..e8cfadefa4b6 100644
--- a/drivers/net/hamradio/dmascc.c
+++ b/drivers/net/hamradio/dmascc.c
@@ -1077,8 +1077,6 @@ static inline void rx_off(struct scc_priv *priv)
1077 1077
1078static void start_timer(struct scc_priv *priv, int t, int r15) 1078static void start_timer(struct scc_priv *priv, int t, int r15)
1079{ 1079{
1080 unsigned long flags;
1081
1082 outb(priv->tmr_mode, priv->tmr_ctrl); 1080 outb(priv->tmr_mode, priv->tmr_ctrl);
1083 if (t == 0) { 1081 if (t == 0) {
1084 tm_isr(priv); 1082 tm_isr(priv);
diff --git a/drivers/net/ibm_newemac/Kconfig b/drivers/net/ibm_newemac/Kconfig
index 0d3e7380bad0..70a3272ee998 100644
--- a/drivers/net/ibm_newemac/Kconfig
+++ b/drivers/net/ibm_newemac/Kconfig
@@ -1,6 +1,7 @@
1config IBM_NEW_EMAC 1config IBM_NEW_EMAC
2 tristate "IBM EMAC Ethernet support" 2 tristate "IBM EMAC Ethernet support"
3 depends on PPC_DCR && PPC_MERGE 3 depends on PPC_DCR && PPC_MERGE
4 select CRC32
4 help 5 help
5 This driver supports the IBM EMAC family of Ethernet controllers 6 This driver supports the IBM EMAC family of Ethernet controllers
6 typically found on 4xx embedded PowerPC chips, but also on the 7 typically found on 4xx embedded PowerPC chips, but also on the
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index ae398f04c7b4..e79a26a886c8 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -718,7 +718,8 @@ void igb_down(struct igb_adapter *adapter)
718 adapter->link_speed = 0; 718 adapter->link_speed = 0;
719 adapter->link_duplex = 0; 719 adapter->link_duplex = 0;
720 720
721 igb_reset(adapter); 721 if (!pci_channel_offline(adapter->pdev))
722 igb_reset(adapter);
722 igb_clean_all_tx_rings(adapter); 723 igb_clean_all_tx_rings(adapter);
723 igb_clean_all_rx_rings(adapter); 724 igb_clean_all_rx_rings(adapter);
724} 725}
diff --git a/drivers/net/ipg.c b/drivers/net/ipg.c
index 679a0826780e..2c03f4e2ccc4 100644
--- a/drivers/net/ipg.c
+++ b/drivers/net/ipg.c
@@ -1271,7 +1271,7 @@ static void ipg_nic_rx_with_end(struct net_device *dev,
1271 1271
1272 framelen = le64_to_cpu(rxfd->rfs) & IPG_RFS_RXFRAMELEN; 1272 framelen = le64_to_cpu(rxfd->rfs) & IPG_RFS_RXFRAMELEN;
1273 1273
1274 endframeLen = framelen - jumbo->current_size; 1274 endframelen = framelen - jumbo->current_size;
1275 /* 1275 /*
1276 if (framelen > IPG_RXFRAG_SIZE) 1276 if (framelen > IPG_RXFRAG_SIZE)
1277 framelen=IPG_RXFRAG_SIZE; 1277 framelen=IPG_RXFRAG_SIZE;
@@ -1279,8 +1279,8 @@ static void ipg_nic_rx_with_end(struct net_device *dev,
1279 if (framelen > IPG_RXSUPPORT_SIZE) 1279 if (framelen > IPG_RXSUPPORT_SIZE)
1280 dev_kfree_skb_irq(jumbo->skb); 1280 dev_kfree_skb_irq(jumbo->skb);
1281 else { 1281 else {
1282 memcpy(skb_put(jumbo->skb, endframeLen), 1282 memcpy(skb_put(jumbo->skb, endframelen),
1283 skb->data, endframeLen); 1283 skb->data, endframelen);
1284 1284
1285 jumbo->skb->protocol = 1285 jumbo->skb->protocol =
1286 eth_type_trans(jumbo->skb, dev); 1286 eth_type_trans(jumbo->skb, dev);
@@ -1352,16 +1352,16 @@ static int ipg_nic_rx(struct net_device *dev)
1352 1352
1353 switch (ipg_nic_rx_check_frame_type(dev)) { 1353 switch (ipg_nic_rx_check_frame_type(dev)) {
1354 case FRAME_WITH_START_WITH_END: 1354 case FRAME_WITH_START_WITH_END:
1355 ipg_nic_rx_with_start_and_end(dev, tp, rxfd, entry); 1355 ipg_nic_rx_with_start_and_end(dev, sp, rxfd, entry);
1356 break; 1356 break;
1357 case FRAME_WITH_START: 1357 case FRAME_WITH_START:
1358 ipg_nic_rx_with_start(dev, tp, rxfd, entry); 1358 ipg_nic_rx_with_start(dev, sp, rxfd, entry);
1359 break; 1359 break;
1360 case FRAME_WITH_END: 1360 case FRAME_WITH_END:
1361 ipg_nic_rx_with_end(dev, tp, rxfd, entry); 1361 ipg_nic_rx_with_end(dev, sp, rxfd, entry);
1362 break; 1362 break;
1363 case FRAME_NO_START_NO_END: 1363 case FRAME_NO_START_NO_END:
1364 ipg_nic_rx_no_start_no_end(dev, tp, rxfd, entry); 1364 ipg_nic_rx_no_start_no_end(dev, sp, rxfd, entry);
1365 break; 1365 break;
1366 } 1366 }
1367 } 1367 }
@@ -1808,7 +1808,7 @@ static int ipg_nic_open(struct net_device *dev)
1808 /* initialize JUMBO Frame control variable */ 1808 /* initialize JUMBO Frame control variable */
1809 sp->jumbo.found_start = 0; 1809 sp->jumbo.found_start = 0;
1810 sp->jumbo.current_size = 0; 1810 sp->jumbo.current_size = 0;
1811 sp->jumbo.skb = 0; 1811 sp->jumbo.skb = NULL;
1812 dev->mtu = IPG_TXFRAG_SIZE; 1812 dev->mtu = IPG_TXFRAG_SIZE;
1813#endif 1813#endif
1814 1814
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 7b859220c255..8f0460901153 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -1969,7 +1969,8 @@ void ixgbe_down(struct ixgbe_adapter *adapter)
1969 netif_carrier_off(netdev); 1969 netif_carrier_off(netdev);
1970 netif_stop_queue(netdev); 1970 netif_stop_queue(netdev);
1971 1971
1972 ixgbe_reset(adapter); 1972 if (!pci_channel_offline(adapter->pdev))
1973 ixgbe_reset(adapter);
1973 ixgbe_clean_all_tx_rings(adapter); 1974 ixgbe_clean_all_tx_rings(adapter);
1974 ixgbe_clean_all_rx_rings(adapter); 1975 ixgbe_clean_all_rx_rings(adapter);
1975 1976
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index 8cb29f5b1038..da4c4fb97064 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -776,7 +776,6 @@ struct netxen_hardware_context {
776 776
777 u8 revision_id; 777 u8 revision_id;
778 u16 board_type; 778 u16 board_type;
779 u16 max_ports;
780 struct netxen_board_info boardcfg; 779 struct netxen_board_info boardcfg;
781 u32 xg_linkup; 780 u32 xg_linkup;
782 u32 qg_linksup; 781 u32 qg_linksup;
@@ -863,6 +862,7 @@ struct netxen_adapter {
863 unsigned char mac_addr[ETH_ALEN]; 862 unsigned char mac_addr[ETH_ALEN];
864 int mtu; 863 int mtu;
865 int portnum; 864 int portnum;
865 u8 physical_port;
866 866
867 struct work_struct watchdog_task; 867 struct work_struct watchdog_task;
868 struct timer_list watchdog_timer; 868 struct timer_list watchdog_timer;
@@ -1034,7 +1034,6 @@ int netxen_rom_se(struct netxen_adapter *adapter, int addr);
1034 1034
1035/* Functions from netxen_nic_isr.c */ 1035/* Functions from netxen_nic_isr.c */
1036void netxen_initialize_adapter_sw(struct netxen_adapter *adapter); 1036void netxen_initialize_adapter_sw(struct netxen_adapter *adapter);
1037void netxen_initialize_adapter_hw(struct netxen_adapter *adapter);
1038void *netxen_alloc(struct pci_dev *pdev, size_t sz, dma_addr_t * ptr, 1037void *netxen_alloc(struct pci_dev *pdev, size_t sz, dma_addr_t * ptr,
1039 struct pci_dev **used_dev); 1038 struct pci_dev **used_dev);
1040void netxen_initialize_adapter_ops(struct netxen_adapter *adapter); 1039void netxen_initialize_adapter_ops(struct netxen_adapter *adapter);
@@ -1077,20 +1076,6 @@ static const struct netxen_brdinfo netxen_boards[] = {
1077 1076
1078#define NUM_SUPPORTED_BOARDS ARRAY_SIZE(netxen_boards) 1077#define NUM_SUPPORTED_BOARDS ARRAY_SIZE(netxen_boards)
1079 1078
1080static inline void get_brd_port_by_type(u32 type, int *ports)
1081{
1082 int i, found = 0;
1083 for (i = 0; i < NUM_SUPPORTED_BOARDS; ++i) {
1084 if (netxen_boards[i].brdtype == type) {
1085 *ports = netxen_boards[i].ports;
1086 found = 1;
1087 break;
1088 }
1089 }
1090 if (!found)
1091 *ports = 0;
1092}
1093
1094static inline void get_brd_name_by_type(u32 type, char *name) 1079static inline void get_brd_name_by_type(u32 type, char *name)
1095{ 1080{
1096 int i, found = 0; 1081 int i, found = 0;
@@ -1169,5 +1154,4 @@ extern int netxen_rom_fast_read(struct netxen_adapter *adapter, int addr,
1169 1154
1170extern struct ethtool_ops netxen_nic_ethtool_ops; 1155extern struct ethtool_ops netxen_nic_ethtool_ops;
1171 1156
1172extern int physical_port[]; /* physical port # from virtual port.*/
1173#endif /* __NETXEN_NIC_H_ */ 1157#endif /* __NETXEN_NIC_H_ */
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c
index 6e98d830eefb..723487bf200c 100644
--- a/drivers/net/netxen/netxen_nic_ethtool.c
+++ b/drivers/net/netxen/netxen_nic_ethtool.c
@@ -369,7 +369,7 @@ netxen_nic_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p)
369 for (i = 3; niu_registers[mode].reg[i - 3] != -1; i++) { 369 for (i = 3; niu_registers[mode].reg[i - 3] != -1; i++) {
370 /* GB: port specific registers */ 370 /* GB: port specific registers */
371 if (mode == 0 && i >= 19) 371 if (mode == 0 && i >= 19)
372 window = physical_port[adapter->portnum] * 372 window = adapter->physical_port *
373 NETXEN_NIC_PORT_WINDOW; 373 NETXEN_NIC_PORT_WINDOW;
374 374
375 NETXEN_NIC_LOCKED_READ_REG(niu_registers[mode]. 375 NETXEN_NIC_LOCKED_READ_REG(niu_registers[mode].
@@ -527,7 +527,7 @@ netxen_nic_get_pauseparam(struct net_device *dev,
527{ 527{
528 struct netxen_adapter *adapter = netdev_priv(dev); 528 struct netxen_adapter *adapter = netdev_priv(dev);
529 __u32 val; 529 __u32 val;
530 int port = physical_port[adapter->portnum]; 530 int port = adapter->physical_port;
531 531
532 if (adapter->ahw.board_type == NETXEN_NIC_GBE) { 532 if (adapter->ahw.board_type == NETXEN_NIC_GBE) {
533 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) 533 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS))
@@ -573,7 +573,7 @@ netxen_nic_set_pauseparam(struct net_device *dev,
573{ 573{
574 struct netxen_adapter *adapter = netdev_priv(dev); 574 struct netxen_adapter *adapter = netdev_priv(dev);
575 __u32 val; 575 __u32 val;
576 int port = physical_port[adapter->portnum]; 576 int port = adapter->physical_port;
577 /* read mode */ 577 /* read mode */
578 if (adapter->ahw.board_type == NETXEN_NIC_GBE) { 578 if (adapter->ahw.board_type == NETXEN_NIC_GBE) {
579 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) 579 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS))
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c
index af7356468251..c43d06b8de9b 100644
--- a/drivers/net/netxen/netxen_nic_hw.c
+++ b/drivers/net/netxen/netxen_nic_hw.c
@@ -396,11 +396,8 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
396 } 396 }
397 adapter->intr_scheme = readl( 397 adapter->intr_scheme = readl(
398 NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_CAPABILITIES_FW)); 398 NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_CAPABILITIES_FW));
399 printk(KERN_NOTICE "%s: FW capabilities:0x%x\n", netxen_nic_driver_name,
400 adapter->intr_scheme);
401 adapter->msi_mode = readl( 399 adapter->msi_mode = readl(
402 NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_MSI_MODE_FW)); 400 NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_MSI_MODE_FW));
403 DPRINTK(INFO, "Receive Peg ready too. starting stuff\n");
404 401
405 addr = netxen_alloc(adapter->ahw.pdev, 402 addr = netxen_alloc(adapter->ahw.pdev,
406 sizeof(struct netxen_ring_ctx) + 403 sizeof(struct netxen_ring_ctx) +
@@ -408,8 +405,6 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
408 (dma_addr_t *) & adapter->ctx_desc_phys_addr, 405 (dma_addr_t *) & adapter->ctx_desc_phys_addr,
409 &adapter->ctx_desc_pdev); 406 &adapter->ctx_desc_pdev);
410 407
411 printk(KERN_INFO "ctx_desc_phys_addr: 0x%llx\n",
412 (unsigned long long) adapter->ctx_desc_phys_addr);
413 if (addr == NULL) { 408 if (addr == NULL) {
414 DPRINTK(ERR, "bad return from pci_alloc_consistent\n"); 409 DPRINTK(ERR, "bad return from pci_alloc_consistent\n");
415 err = -ENOMEM; 410 err = -ENOMEM;
@@ -429,8 +424,6 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
429 adapter->max_tx_desc_count, 424 adapter->max_tx_desc_count,
430 (dma_addr_t *) & hw->cmd_desc_phys_addr, 425 (dma_addr_t *) & hw->cmd_desc_phys_addr,
431 &adapter->ahw.cmd_desc_pdev); 426 &adapter->ahw.cmd_desc_pdev);
432 printk(KERN_INFO "cmd_desc_phys_addr: 0x%llx\n",
433 (unsigned long long) hw->cmd_desc_phys_addr);
434 427
435 if (addr == NULL) { 428 if (addr == NULL) {
436 DPRINTK(ERR, "bad return from pci_alloc_consistent\n"); 429 DPRINTK(ERR, "bad return from pci_alloc_consistent\n");
@@ -1032,15 +1025,15 @@ int netxen_nic_get_board_info(struct netxen_adapter *adapter)
1032int netxen_nic_set_mtu_gb(struct netxen_adapter *adapter, int new_mtu) 1025int netxen_nic_set_mtu_gb(struct netxen_adapter *adapter, int new_mtu)
1033{ 1026{
1034 netxen_nic_write_w0(adapter, 1027 netxen_nic_write_w0(adapter,
1035 NETXEN_NIU_GB_MAX_FRAME_SIZE( 1028 NETXEN_NIU_GB_MAX_FRAME_SIZE(adapter->physical_port),
1036 physical_port[adapter->portnum]), new_mtu); 1029 new_mtu);
1037 return 0; 1030 return 0;
1038} 1031}
1039 1032
1040int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu) 1033int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu)
1041{ 1034{
1042 new_mtu += NETXEN_NIU_HDRSIZE + NETXEN_NIU_TLRSIZE; 1035 new_mtu += NETXEN_NIU_HDRSIZE + NETXEN_NIU_TLRSIZE;
1043 if (physical_port[adapter->portnum] == 0) 1036 if (adapter->physical_port == 0)
1044 netxen_nic_write_w0(adapter, NETXEN_NIU_XGE_MAX_FRAME_SIZE, 1037 netxen_nic_write_w0(adapter, NETXEN_NIU_XGE_MAX_FRAME_SIZE,
1045 new_mtu); 1038 new_mtu);
1046 else 1039 else
@@ -1051,7 +1044,7 @@ int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu)
1051 1044
1052void netxen_nic_init_niu_gb(struct netxen_adapter *adapter) 1045void netxen_nic_init_niu_gb(struct netxen_adapter *adapter)
1053{ 1046{
1054 netxen_niu_gbe_init_port(adapter, physical_port[adapter->portnum]); 1047 netxen_niu_gbe_init_port(adapter, adapter->physical_port);
1055} 1048}
1056 1049
1057void 1050void
@@ -1127,7 +1120,6 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter)
1127 1120
1128void netxen_nic_flash_print(struct netxen_adapter *adapter) 1121void netxen_nic_flash_print(struct netxen_adapter *adapter)
1129{ 1122{
1130 int valid = 1;
1131 u32 fw_major = 0; 1123 u32 fw_major = 0;
1132 u32 fw_minor = 0; 1124 u32 fw_minor = 0;
1133 u32 fw_build = 0; 1125 u32 fw_build = 0;
@@ -1137,70 +1129,62 @@ void netxen_nic_flash_print(struct netxen_adapter *adapter)
1137 __le32 *ptr32; 1129 __le32 *ptr32;
1138 1130
1139 struct netxen_board_info *board_info = &(adapter->ahw.boardcfg); 1131 struct netxen_board_info *board_info = &(adapter->ahw.boardcfg);
1140 if (board_info->magic != NETXEN_BDINFO_MAGIC) { 1132
1141 printk 1133 adapter->driver_mismatch = 0;
1142 ("NetXen Unknown board config, Read 0x%x expected as 0x%x\n", 1134
1143 board_info->magic, NETXEN_BDINFO_MAGIC); 1135 ptr32 = (u32 *)&serial_num;
1144 valid = 0; 1136 addr = NETXEN_USER_START +
1145 } 1137 offsetof(struct netxen_new_user_info, serial_num);
1146 if (board_info->header_version != NETXEN_BDINFO_VERSION) { 1138 for (i = 0; i < 8; i++) {
1147 printk("NetXen Unknown board config version." 1139 if (netxen_rom_fast_read(adapter, addr, ptr32) == -1) {
1148 " Read %x, expected %x\n", 1140 printk("%s: ERROR reading %s board userarea.\n",
1149 board_info->header_version, NETXEN_BDINFO_VERSION); 1141 netxen_nic_driver_name,
1150 valid = 0; 1142 netxen_nic_driver_name);
1151 } 1143 adapter->driver_mismatch = 1;
1152 if (valid) { 1144 return;
1153 ptr32 = (u32 *)&serial_num;
1154 addr = NETXEN_USER_START +
1155 offsetof(struct netxen_new_user_info, serial_num);
1156 for (i = 0; i < 8; i++) {
1157 if (netxen_rom_fast_read(adapter, addr, ptr32) == -1) {
1158 printk("%s: ERROR reading %s board userarea.\n",
1159 netxen_nic_driver_name,
1160 netxen_nic_driver_name);
1161 return;
1162 }
1163 ptr32++;
1164 addr += sizeof(u32);
1165 } 1145 }
1146 ptr32++;
1147 addr += sizeof(u32);
1148 }
1149
1150 fw_major = readl(NETXEN_CRB_NORMALIZE(adapter,
1151 NETXEN_FW_VERSION_MAJOR));
1152 fw_minor = readl(NETXEN_CRB_NORMALIZE(adapter,
1153 NETXEN_FW_VERSION_MINOR));
1154 fw_build =
1155 readl(NETXEN_CRB_NORMALIZE(adapter, NETXEN_FW_VERSION_SUB));
1166 1156
1157 if (adapter->portnum == 0) {
1167 get_brd_name_by_type(board_info->board_type, brd_name); 1158 get_brd_name_by_type(board_info->board_type, brd_name);
1168 1159
1169 printk("NetXen %s Board S/N %s Chip id 0x%x\n", 1160 printk("NetXen %s Board S/N %s Chip id 0x%x\n",
1170 brd_name, serial_num, board_info->chip_id); 1161 brd_name, serial_num, board_info->chip_id);
1171 1162 printk("NetXen Firmware version %d.%d.%d\n", fw_major,
1172 printk("NetXen %s Board #%d, Chip id 0x%x\n", 1163 fw_minor, fw_build);
1173 board_info->board_type == 0x0b ? "XGB" : "GBE",
1174 board_info->board_num, board_info->chip_id);
1175 fw_major = readl(NETXEN_CRB_NORMALIZE(adapter,
1176 NETXEN_FW_VERSION_MAJOR));
1177 fw_minor = readl(NETXEN_CRB_NORMALIZE(adapter,
1178 NETXEN_FW_VERSION_MINOR));
1179 fw_build =
1180 readl(NETXEN_CRB_NORMALIZE(adapter, NETXEN_FW_VERSION_SUB));
1181
1182 printk("NetXen Firmware version %d.%d.%d\n", fw_major, fw_minor,
1183 fw_build);
1184 } 1164 }
1165
1185 if (fw_major != _NETXEN_NIC_LINUX_MAJOR) { 1166 if (fw_major != _NETXEN_NIC_LINUX_MAJOR) {
1186 printk(KERN_ERR "The mismatch in driver version and firmware "
1187 "version major number\n"
1188 "Driver version major number = %d \t"
1189 "Firmware version major number = %d \n",
1190 _NETXEN_NIC_LINUX_MAJOR, fw_major);
1191 adapter->driver_mismatch = 1; 1167 adapter->driver_mismatch = 1;
1192 } 1168 }
1193 if (fw_minor != _NETXEN_NIC_LINUX_MINOR && 1169 if (fw_minor != _NETXEN_NIC_LINUX_MINOR &&
1194 fw_minor != (_NETXEN_NIC_LINUX_MINOR + 1)) { 1170 fw_minor != (_NETXEN_NIC_LINUX_MINOR + 1)) {
1195 printk(KERN_ERR "The mismatch in driver version and firmware "
1196 "version minor number\n"
1197 "Driver version minor number = %d \t"
1198 "Firmware version minor number = %d \n",
1199 _NETXEN_NIC_LINUX_MINOR, fw_minor);
1200 adapter->driver_mismatch = 1; 1171 adapter->driver_mismatch = 1;
1201 } 1172 }
1202 if (adapter->driver_mismatch) 1173 if (adapter->driver_mismatch) {
1203 printk(KERN_INFO "Use the driver with version no %d.%d.xxx\n", 1174 printk(KERN_ERR "%s: driver and firmware version mismatch\n",
1204 fw_major, fw_minor); 1175 adapter->netdev->name);
1176 return;
1177 }
1178
1179 switch (adapter->ahw.board_type) {
1180 case NETXEN_NIC_GBE:
1181 dev_info(&adapter->pdev->dev, "%s: GbE port initialized\n",
1182 adapter->netdev->name);
1183 break;
1184 case NETXEN_NIC_XGBE:
1185 dev_info(&adapter->pdev->dev, "%s: XGbE port initialized\n",
1186 adapter->netdev->name);
1187 break;
1188 }
1205} 1189}
1206 1190
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index 45fa33e0cb90..70d1b22ced22 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -203,21 +203,6 @@ void netxen_initialize_adapter_sw(struct netxen_adapter *adapter)
203 } 203 }
204} 204}
205 205
206void netxen_initialize_adapter_hw(struct netxen_adapter *adapter)
207{
208 int ports = 0;
209 struct netxen_board_info *board_info = &(adapter->ahw.boardcfg);
210
211 if (netxen_nic_get_board_info(adapter) != 0)
212 printk("%s: Error getting board config info.\n",
213 netxen_nic_driver_name);
214 get_brd_port_by_type(board_info->board_type, &ports);
215 if (ports == 0)
216 printk(KERN_ERR "%s: Unknown board type\n",
217 netxen_nic_driver_name);
218 adapter->ahw.max_ports = ports;
219}
220
221void netxen_initialize_adapter_ops(struct netxen_adapter *adapter) 206void netxen_initialize_adapter_ops(struct netxen_adapter *adapter)
222{ 207{
223 switch (adapter->ahw.board_type) { 208 switch (adapter->ahw.board_type) {
@@ -765,18 +750,13 @@ int netxen_flash_unlock(struct netxen_adapter *adapter)
765 750
766int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose) 751int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
767{ 752{
768 int addr, val, status; 753 int addr, val;
769 int n, i; 754 int n, i;
770 int init_delay = 0; 755 int init_delay = 0;
771 struct crb_addr_pair *buf; 756 struct crb_addr_pair *buf;
772 u32 off; 757 u32 off;
773 758
774 /* resetall */ 759 /* resetall */
775 status = netxen_nic_get_board_info(adapter);
776 if (status)
777 printk("%s: netxen_pinit_from_rom: Error getting board info\n",
778 netxen_nic_driver_name);
779
780 netxen_crb_writelit_adapter(adapter, NETXEN_ROMUSB_GLB_SW_RESET, 760 netxen_crb_writelit_adapter(adapter, NETXEN_ROMUSB_GLB_SW_RESET,
781 NETXEN_ROMBUS_RESET); 761 NETXEN_ROMBUS_RESET);
782 762
@@ -860,10 +840,10 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
860 netxen_nic_pci_change_crbwindow(adapter, 1); 840 netxen_nic_pci_change_crbwindow(adapter, 1);
861 } 841 }
862 if (init_delay == 1) { 842 if (init_delay == 1) {
863 msleep(2000); 843 msleep(1000);
864 init_delay = 0; 844 init_delay = 0;
865 } 845 }
866 msleep(20); 846 msleep(1);
867 } 847 }
868 kfree(buf); 848 kfree(buf);
869 849
@@ -938,12 +918,28 @@ int netxen_initialize_adapter_offload(struct netxen_adapter *adapter)
938 918
939void netxen_free_adapter_offload(struct netxen_adapter *adapter) 919void netxen_free_adapter_offload(struct netxen_adapter *adapter)
940{ 920{
921 int i;
922
941 if (adapter->dummy_dma.addr) { 923 if (adapter->dummy_dma.addr) {
942 pci_free_consistent(adapter->ahw.pdev, 924 i = 100;
925 do {
926 if (dma_watchdog_shutdown_request(adapter) == 1)
927 break;
928 msleep(50);
929 if (dma_watchdog_shutdown_poll_result(adapter) == 1)
930 break;
931 } while (--i);
932
933 if (i) {
934 pci_free_consistent(adapter->ahw.pdev,
943 NETXEN_HOST_DUMMY_DMA_SIZE, 935 NETXEN_HOST_DUMMY_DMA_SIZE,
944 adapter->dummy_dma.addr, 936 adapter->dummy_dma.addr,
945 adapter->dummy_dma.phys_addr); 937 adapter->dummy_dma.phys_addr);
946 adapter->dummy_dma.addr = NULL; 938 adapter->dummy_dma.addr = NULL;
939 } else {
940 printk(KERN_ERR "%s: dma_watchdog_shutdown failed\n",
941 adapter->netdev->name);
942 }
947 } 943 }
948} 944}
949 945
diff --git a/drivers/net/netxen/netxen_nic_isr.c b/drivers/net/netxen/netxen_nic_isr.c
index f487615f4063..96cec41f9019 100644
--- a/drivers/net/netxen/netxen_nic_isr.c
+++ b/drivers/net/netxen/netxen_nic_isr.c
@@ -145,7 +145,7 @@ static void netxen_nic_isr_other(struct netxen_adapter *adapter)
145 145
146 /* verify the offset */ 146 /* verify the offset */
147 val = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_XG_STATE)); 147 val = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_XG_STATE));
148 val = val >> physical_port[adapter->portnum]; 148 val = val >> adapter->physical_port;
149 if (val == adapter->ahw.qg_linksup) 149 if (val == adapter->ahw.qg_linksup)
150 return; 150 return;
151 151
@@ -199,7 +199,7 @@ void netxen_nic_xgbe_handle_phy_intr(struct netxen_adapter *adapter)
199 199
200 /* WINDOW = 1 */ 200 /* WINDOW = 1 */
201 val = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_XG_STATE)); 201 val = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_XG_STATE));
202 val >>= (physical_port[adapter->portnum] * 8); 202 val >>= (adapter->physical_port * 8);
203 val &= 0xff; 203 val &= 0xff;
204 204
205 if (adapter->ahw.xg_linkup == 1 && val != XG_LINK_UP) { 205 if (adapter->ahw.xg_linkup == 1 && val != XG_LINK_UP) {
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 7144c255ce54..63cd67b931e7 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -70,17 +70,19 @@ static void netxen_nic_poll_controller(struct net_device *netdev);
70static irqreturn_t netxen_intr(int irq, void *data); 70static irqreturn_t netxen_intr(int irq, void *data);
71static irqreturn_t netxen_msi_intr(int irq, void *data); 71static irqreturn_t netxen_msi_intr(int irq, void *data);
72 72
73int physical_port[] = {0, 1, 2, 3};
74
75/* PCI Device ID Table */ 73/* PCI Device ID Table */
74#define ENTRY(device) \
75 {PCI_DEVICE(0x4040, (device)), \
76 .class = PCI_CLASS_NETWORK_ETHERNET << 8, .class_mask = ~0}
77
76static struct pci_device_id netxen_pci_tbl[] __devinitdata = { 78static struct pci_device_id netxen_pci_tbl[] __devinitdata = {
77 {PCI_DEVICE(0x4040, 0x0001)}, 79 ENTRY(0x0001),
78 {PCI_DEVICE(0x4040, 0x0002)}, 80 ENTRY(0x0002),
79 {PCI_DEVICE(0x4040, 0x0003)}, 81 ENTRY(0x0003),
80 {PCI_DEVICE(0x4040, 0x0004)}, 82 ENTRY(0x0004),
81 {PCI_DEVICE(0x4040, 0x0005)}, 83 ENTRY(0x0005),
82 {PCI_DEVICE(0x4040, 0x0024)}, 84 ENTRY(0x0024),
83 {PCI_DEVICE(0x4040, 0x0025)}, 85 ENTRY(0x0025),
84 {0,} 86 {0,}
85}; 87};
86 88
@@ -288,10 +290,11 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
288 int pci_func_id = PCI_FUNC(pdev->devfn); 290 int pci_func_id = PCI_FUNC(pdev->devfn);
289 DECLARE_MAC_BUF(mac); 291 DECLARE_MAC_BUF(mac);
290 292
291 printk(KERN_INFO "%s \n", netxen_nic_driver_string); 293 if (pci_func_id == 0)
294 printk(KERN_INFO "%s \n", netxen_nic_driver_string);
292 295
293 if (pdev->class != 0x020000) { 296 if (pdev->class != 0x020000) {
294 printk(KERN_ERR"NetXen function %d, class %x will not " 297 printk(KERN_DEBUG "NetXen function %d, class %x will not "
295 "be enabled.\n",pci_func_id, pdev->class); 298 "be enabled.\n",pci_func_id, pdev->class);
296 return -ENODEV; 299 return -ENODEV;
297 } 300 }
@@ -450,8 +453,12 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
450 */ 453 */
451 adapter->curr_window = 255; 454 adapter->curr_window = 255;
452 455
453 /* initialize the adapter */ 456 if (netxen_nic_get_board_info(adapter) != 0) {
454 netxen_initialize_adapter_hw(adapter); 457 printk("%s: Error getting board config info.\n",
458 netxen_nic_driver_name);
459 err = -EIO;
460 goto err_out_iounmap;
461 }
455 462
456 /* 463 /*
457 * Adapter in our case is quad port so initialize it before 464 * Adapter in our case is quad port so initialize it before
@@ -530,17 +537,15 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
530 netxen_initialize_adapter_sw(adapter); /* initialize the buffers in adapter */ 537 netxen_initialize_adapter_sw(adapter); /* initialize the buffers in adapter */
531 538
532 /* Mezz cards have PCI function 0,2,3 enabled */ 539 /* Mezz cards have PCI function 0,2,3 enabled */
533 if ((adapter->ahw.boardcfg.board_type == NETXEN_BRDTYPE_P2_SB31_10G_IMEZ) 540 switch (adapter->ahw.boardcfg.board_type) {
534 && (pci_func_id >= 2)) 541 case NETXEN_BRDTYPE_P2_SB31_10G_IMEZ:
542 case NETXEN_BRDTYPE_P2_SB31_10G_HMEZ:
543 if (pci_func_id >= 2)
535 adapter->portnum = pci_func_id - 2; 544 adapter->portnum = pci_func_id - 2;
536 545 break;
537#ifdef CONFIG_IA64 546 default:
538 if(adapter->portnum == 0) { 547 break;
539 netxen_pinit_from_rom(adapter, 0);
540 udelay(500);
541 netxen_load_firmware(adapter);
542 } 548 }
543#endif
544 549
545 init_timer(&adapter->watchdog_timer); 550 init_timer(&adapter->watchdog_timer);
546 adapter->ahw.xg_linkup = 0; 551 adapter->ahw.xg_linkup = 0;
@@ -613,11 +618,18 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
613 err = -ENODEV; 618 err = -ENODEV;
614 goto err_out_free_dev; 619 goto err_out_free_dev;
615 } 620 }
621 } else {
622 writel(0, NETXEN_CRB_NORMALIZE(adapter,
623 CRB_CMDPEG_STATE));
624 netxen_pinit_from_rom(adapter, 0);
625 msleep(1);
626 netxen_load_firmware(adapter);
627 netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE);
616 } 628 }
617 629
618 /* clear the register for future unloads/loads */ 630 /* clear the register for future unloads/loads */
619 writel(0, NETXEN_CRB_NORMALIZE(adapter, NETXEN_CAM_RAM(0x1fc))); 631 writel(0, NETXEN_CRB_NORMALIZE(adapter, NETXEN_CAM_RAM(0x1fc)));
620 printk(KERN_INFO "State: 0x%0x\n", 632 dev_info(&pdev->dev, "cmdpeg state: 0x%0x\n",
621 readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE))); 633 readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE)));
622 634
623 /* 635 /*
@@ -639,9 +651,10 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
639 /* 651 /*
640 * See if the firmware gave us a virtual-physical port mapping. 652 * See if the firmware gave us a virtual-physical port mapping.
641 */ 653 */
654 adapter->physical_port = adapter->portnum;
642 i = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_V2P(adapter->portnum))); 655 i = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_V2P(adapter->portnum)));
643 if (i != 0x55555555) 656 if (i != 0x55555555)
644 physical_port[adapter->portnum] = i; 657 adapter->physical_port = i;
645 658
646 netif_carrier_off(netdev); 659 netif_carrier_off(netdev);
647 netif_stop_queue(netdev); 660 netif_stop_queue(netdev);
@@ -654,22 +667,9 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
654 goto err_out_free_dev; 667 goto err_out_free_dev;
655 } 668 }
656 669
670 netxen_nic_flash_print(adapter);
657 pci_set_drvdata(pdev, adapter); 671 pci_set_drvdata(pdev, adapter);
658 672
659 switch (adapter->ahw.board_type) {
660 case NETXEN_NIC_GBE:
661 printk(KERN_INFO "%s: QUAD GbE board initialized\n",
662 netxen_nic_driver_name);
663 break;
664
665 case NETXEN_NIC_XGBE:
666 printk(KERN_INFO "%s: XGbE board initialized\n",
667 netxen_nic_driver_name);
668 break;
669 }
670
671 adapter->driver_mismatch = 0;
672
673 return 0; 673 return 0;
674 674
675err_out_free_dev: 675err_out_free_dev:
@@ -760,55 +760,8 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
760 760
761 vfree(adapter->cmd_buf_arr); 761 vfree(adapter->cmd_buf_arr);
762 762
763 if (adapter->portnum == 0) { 763 if (adapter->portnum == 0)
764 if (init_firmware_done) { 764 netxen_free_adapter_offload(adapter);
765 i = 100;
766 do {
767 if (dma_watchdog_shutdown_request(adapter) == 1)
768 break;
769 msleep(100);
770 if (dma_watchdog_shutdown_poll_result(adapter) == 1)
771 break;
772 } while (--i);
773
774 if (i == 0)
775 printk(KERN_ERR "%s: dma_watchdog_shutdown failed\n",
776 netdev->name);
777
778 /* clear the register for future unloads/loads */
779 writel(0, NETXEN_CRB_NORMALIZE(adapter, NETXEN_CAM_RAM(0x1fc)));
780 printk(KERN_INFO "State: 0x%0x\n",
781 readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE)));
782
783 /* leave the hw in the same state as reboot */
784 writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
785 netxen_pinit_from_rom(adapter, 0);
786 msleep(1);
787 netxen_load_firmware(adapter);
788 netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE);
789 }
790
791 /* clear the register for future unloads/loads */
792 writel(0, NETXEN_CRB_NORMALIZE(adapter, NETXEN_CAM_RAM(0x1fc)));
793 printk(KERN_INFO "State: 0x%0x\n",
794 readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE)));
795
796 i = 100;
797 do {
798 if (dma_watchdog_shutdown_request(adapter) == 1)
799 break;
800 msleep(100);
801 if (dma_watchdog_shutdown_poll_result(adapter) == 1)
802 break;
803 } while (--i);
804
805 if (i) {
806 netxen_free_adapter_offload(adapter);
807 } else {
808 printk(KERN_ERR "%s: dma_watchdog_shutdown failed\n",
809 netdev->name);
810 }
811 }
812 765
813 if (adapter->irq) 766 if (adapter->irq)
814 free_irq(adapter->irq, adapter); 767 free_irq(adapter->irq, adapter);
@@ -840,13 +793,15 @@ static int netxen_nic_open(struct net_device *netdev)
840 irq_handler_t handler; 793 irq_handler_t handler;
841 unsigned long flags = IRQF_SAMPLE_RANDOM; 794 unsigned long flags = IRQF_SAMPLE_RANDOM;
842 795
796 if (adapter->driver_mismatch)
797 return -EIO;
798
843 if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC) { 799 if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC) {
844 err = netxen_init_firmware(adapter); 800 err = netxen_init_firmware(adapter);
845 if (err != 0) { 801 if (err != 0) {
846 printk(KERN_ERR "Failed to init firmware\n"); 802 printk(KERN_ERR "Failed to init firmware\n");
847 return -EIO; 803 return -EIO;
848 } 804 }
849 netxen_nic_flash_print(adapter);
850 805
851 /* setup all the resources for the Phantom... */ 806 /* setup all the resources for the Phantom... */
852 /* this include the descriptors for rcv, tx, and status */ 807 /* this include the descriptors for rcv, tx, and status */
@@ -895,14 +850,12 @@ static int netxen_nic_open(struct net_device *netdev)
895 if (adapter->set_mtu) 850 if (adapter->set_mtu)
896 adapter->set_mtu(adapter, netdev->mtu); 851 adapter->set_mtu(adapter, netdev->mtu);
897 852
898 if (!adapter->driver_mismatch) 853 mod_timer(&adapter->watchdog_timer, jiffies);
899 mod_timer(&adapter->watchdog_timer, jiffies);
900 854
901 napi_enable(&adapter->napi); 855 napi_enable(&adapter->napi);
902 netxen_nic_enable_int(adapter); 856 netxen_nic_enable_int(adapter);
903 857
904 if (!adapter->driver_mismatch) 858 netif_start_queue(netdev);
905 netif_start_queue(netdev);
906 859
907 return 0; 860 return 0;
908} 861}
diff --git a/drivers/net/netxen/netxen_nic_niu.c b/drivers/net/netxen/netxen_nic_niu.c
index 1c852a76c80d..a3bc7cc67a6f 100644
--- a/drivers/net/netxen/netxen_nic_niu.c
+++ b/drivers/net/netxen/netxen_nic_niu.c
@@ -94,7 +94,7 @@ int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long reg,
94 long timeout = 0; 94 long timeout = 0;
95 long result = 0; 95 long result = 0;
96 long restore = 0; 96 long restore = 0;
97 long phy = physical_port[adapter->portnum]; 97 long phy = adapter->physical_port;
98 __u32 address; 98 __u32 address;
99 __u32 command; 99 __u32 command;
100 __u32 status; 100 __u32 status;
@@ -190,7 +190,7 @@ int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long reg,
190 long timeout = 0; 190 long timeout = 0;
191 long result = 0; 191 long result = 0;
192 long restore = 0; 192 long restore = 0;
193 long phy = physical_port[adapter->portnum]; 193 long phy = adapter->physical_port;
194 __u32 address; 194 __u32 address;
195 __u32 command; 195 __u32 command;
196 __u32 status; 196 __u32 status;
@@ -456,7 +456,7 @@ int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port)
456 456
457int netxen_niu_xg_init_port(struct netxen_adapter *adapter, int port) 457int netxen_niu_xg_init_port(struct netxen_adapter *adapter, int port)
458{ 458{
459 u32 portnum = physical_port[adapter->portnum]; 459 u32 portnum = adapter->physical_port;
460 460
461 netxen_crb_writelit_adapter(adapter, 461 netxen_crb_writelit_adapter(adapter,
462 NETXEN_NIU_XGE_CONFIG_1+(0x10000*portnum), 0x1447); 462 NETXEN_NIU_XGE_CONFIG_1+(0x10000*portnum), 0x1447);
@@ -573,7 +573,7 @@ static int netxen_niu_macaddr_get(struct netxen_adapter *adapter,
573{ 573{
574 u32 stationhigh; 574 u32 stationhigh;
575 u32 stationlow; 575 u32 stationlow;
576 int phy = physical_port[adapter->portnum]; 576 int phy = adapter->physical_port;
577 u8 val[8]; 577 u8 val[8];
578 578
579 if (addr == NULL) 579 if (addr == NULL)
@@ -604,7 +604,7 @@ int netxen_niu_macaddr_set(struct netxen_adapter *adapter,
604{ 604{
605 u8 temp[4]; 605 u8 temp[4];
606 u32 val; 606 u32 val;
607 int phy = physical_port[adapter->portnum]; 607 int phy = adapter->physical_port;
608 unsigned char mac_addr[6]; 608 unsigned char mac_addr[6];
609 int i; 609 int i;
610 DECLARE_MAC_BUF(mac); 610 DECLARE_MAC_BUF(mac);
@@ -724,7 +724,7 @@ int netxen_niu_enable_gbe_port(struct netxen_adapter *adapter,
724int netxen_niu_disable_gbe_port(struct netxen_adapter *adapter) 724int netxen_niu_disable_gbe_port(struct netxen_adapter *adapter)
725{ 725{
726 __u32 mac_cfg0; 726 __u32 mac_cfg0;
727 u32 port = physical_port[adapter->portnum]; 727 u32 port = adapter->physical_port;
728 728
729 if (port > NETXEN_NIU_MAX_GBE_PORTS) 729 if (port > NETXEN_NIU_MAX_GBE_PORTS)
730 return -EINVAL; 730 return -EINVAL;
@@ -740,7 +740,7 @@ int netxen_niu_disable_gbe_port(struct netxen_adapter *adapter)
740int netxen_niu_disable_xg_port(struct netxen_adapter *adapter) 740int netxen_niu_disable_xg_port(struct netxen_adapter *adapter)
741{ 741{
742 __u32 mac_cfg; 742 __u32 mac_cfg;
743 u32 port = physical_port[adapter->portnum]; 743 u32 port = adapter->physical_port;
744 744
745 if (port > NETXEN_NIU_MAX_XG_PORTS) 745 if (port > NETXEN_NIU_MAX_XG_PORTS)
746 return -EINVAL; 746 return -EINVAL;
@@ -757,7 +757,7 @@ int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter,
757 netxen_niu_prom_mode_t mode) 757 netxen_niu_prom_mode_t mode)
758{ 758{
759 __u32 reg; 759 __u32 reg;
760 u32 port = physical_port[adapter->portnum]; 760 u32 port = adapter->physical_port;
761 761
762 if (port > NETXEN_NIU_MAX_GBE_PORTS) 762 if (port > NETXEN_NIU_MAX_GBE_PORTS)
763 return -EINVAL; 763 return -EINVAL;
@@ -814,7 +814,7 @@ int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter,
814int netxen_niu_xg_macaddr_set(struct netxen_adapter *adapter, 814int netxen_niu_xg_macaddr_set(struct netxen_adapter *adapter,
815 netxen_ethernet_macaddr_t addr) 815 netxen_ethernet_macaddr_t addr)
816{ 816{
817 int phy = physical_port[adapter->portnum]; 817 int phy = adapter->physical_port;
818 u8 temp[4]; 818 u8 temp[4];
819 u32 val; 819 u32 val;
820 820
@@ -867,7 +867,7 @@ int netxen_niu_xg_macaddr_set(struct netxen_adapter *adapter,
867int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, 867int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter,
868 netxen_ethernet_macaddr_t * addr) 868 netxen_ethernet_macaddr_t * addr)
869{ 869{
870 int phy = physical_port[adapter->portnum]; 870 int phy = adapter->physical_port;
871 u32 stationhigh; 871 u32 stationhigh;
872 u32 stationlow; 872 u32 stationlow;
873 u8 val[8]; 873 u8 val[8];
@@ -896,7 +896,7 @@ int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter,
896 netxen_niu_prom_mode_t mode) 896 netxen_niu_prom_mode_t mode)
897{ 897{
898 __u32 reg; 898 __u32 reg;
899 u32 port = physical_port[adapter->portnum]; 899 u32 port = adapter->physical_port;
900 900
901 if (port > NETXEN_NIU_MAX_XG_PORTS) 901 if (port > NETXEN_NIU_MAX_XG_PORTS)
902 return -EINVAL; 902 return -EINVAL;
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c
index ce95c5d168fe..70d012e90dcf 100644
--- a/drivers/net/pcmcia/axnet_cs.c
+++ b/drivers/net/pcmcia/axnet_cs.c
@@ -525,12 +525,14 @@ static int axnet_open(struct net_device *dev)
525 int ret; 525 int ret;
526 axnet_dev_t *info = PRIV(dev); 526 axnet_dev_t *info = PRIV(dev);
527 struct pcmcia_device *link = info->p_dev; 527 struct pcmcia_device *link = info->p_dev;
528 unsigned int nic_base = dev->base_addr;
528 529
529 DEBUG(2, "axnet_open('%s')\n", dev->name); 530 DEBUG(2, "axnet_open('%s')\n", dev->name);
530 531
531 if (!pcmcia_dev_present(link)) 532 if (!pcmcia_dev_present(link))
532 return -ENODEV; 533 return -ENODEV;
533 534
535 outb_p(0xFF, nic_base + EN0_ISR); /* Clear bogus intr. */
534 ret = request_irq(dev->irq, ei_irq_wrapper, IRQF_SHARED, "axnet_cs", dev); 536 ret = request_irq(dev->irq, ei_irq_wrapper, IRQF_SHARED, "axnet_cs", dev);
535 if (ret) 537 if (ret)
536 return ret; 538 return ret;
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index fd8158a86f64..2d4c4ad89b8d 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -969,6 +969,7 @@ static int pcnet_open(struct net_device *dev)
969 int ret; 969 int ret;
970 pcnet_dev_t *info = PRIV(dev); 970 pcnet_dev_t *info = PRIV(dev);
971 struct pcmcia_device *link = info->p_dev; 971 struct pcmcia_device *link = info->p_dev;
972 unsigned int nic_base = dev->base_addr;
972 973
973 DEBUG(2, "pcnet_open('%s')\n", dev->name); 974 DEBUG(2, "pcnet_open('%s')\n", dev->name);
974 975
@@ -976,6 +977,8 @@ static int pcnet_open(struct net_device *dev)
976 return -ENODEV; 977 return -ENODEV;
977 978
978 set_misc_reg(dev); 979 set_misc_reg(dev);
980
981 outb_p(0xFF, nic_base + EN0_ISR); /* Clear bogus intr. */
979 ret = request_irq(dev->irq, ei_irq_wrapper, IRQF_SHARED, dev_info, dev); 982 ret = request_irq(dev->irq, ei_irq_wrapper, IRQF_SHARED, dev_info, dev);
980 if (ret) 983 if (ret)
981 return ret; 984 return ret;
diff --git a/drivers/net/pppoe.c b/drivers/net/pppoe.c
index bafb69b6f7cb..fc6f4b8c64b3 100644
--- a/drivers/net/pppoe.c
+++ b/drivers/net/pppoe.c
@@ -942,7 +942,7 @@ static int pppoe_recvmsg(struct kiocb *iocb, struct socket *sock,
942 m->msg_namelen = 0; 942 m->msg_namelen = 0;
943 943
944 if (skb) { 944 if (skb) {
945 total_len = min(total_len, skb->len); 945 total_len = min_t(size_t, total_len, skb->len);
946 error = skb_copy_datagram_iovec(skb, 0, m->msg_iov, total_len); 946 error = skb_copy_datagram_iovec(skb, 0, m->msg_iov, total_len);
947 if (error == 0) 947 if (error == 0)
948 error = total_len; 948 error = total_len;
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c
index b7f7b2227d56..bccee68bd48a 100644
--- a/drivers/net/qla3xxx.c
+++ b/drivers/net/qla3xxx.c
@@ -3701,7 +3701,9 @@ static int ql_cycle_adapter(struct ql3_adapter *qdev, int reset)
3701 printk(KERN_ERR PFX 3701 printk(KERN_ERR PFX
3702 "%s: Driver up/down cycle failed, " 3702 "%s: Driver up/down cycle failed, "
3703 "closing device\n",qdev->ndev->name); 3703 "closing device\n",qdev->ndev->name);
3704 rtnl_lock();
3704 dev_close(qdev->ndev); 3705 dev_close(qdev->ndev);
3706 rtnl_unlock();
3705 return -1; 3707 return -1;
3706 } 3708 }
3707 return 0; 3709 return 0;
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c
index 858b191517b3..504a48ff73c8 100644
--- a/drivers/net/r6040.c
+++ b/drivers/net/r6040.c
@@ -273,7 +273,7 @@ static void r6040_init_ring_desc(struct r6040_descriptor *desc_ring,
273 dma_addr_t mapping = desc_dma; 273 dma_addr_t mapping = desc_dma;
274 274
275 while (size-- > 0) { 275 while (size-- > 0) {
276 mapping += sizeof(sizeof(*desc)); 276 mapping += sizeof(*desc);
277 desc->ndesc = cpu_to_le32(mapping); 277 desc->ndesc = cpu_to_le32(mapping);
278 desc->vndescp = desc + 1; 278 desc->vndescp = desc + 1;
279 desc++; 279 desc++;
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index b5c1e663417d..ae7b697456b4 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -2625,9 +2625,7 @@ static int fill_rx_buffers(struct ring_info *ring)
2625 rxdp1->Buffer0_ptr = pci_map_single 2625 rxdp1->Buffer0_ptr = pci_map_single
2626 (ring->pdev, skb->data, size - NET_IP_ALIGN, 2626 (ring->pdev, skb->data, size - NET_IP_ALIGN,
2627 PCI_DMA_FROMDEVICE); 2627 PCI_DMA_FROMDEVICE);
2628 if( (rxdp1->Buffer0_ptr == 0) || 2628 if(pci_dma_mapping_error(rxdp1->Buffer0_ptr))
2629 (rxdp1->Buffer0_ptr ==
2630 DMA_ERROR_CODE))
2631 goto pci_map_failed; 2629 goto pci_map_failed;
2632 2630
2633 rxdp->Control_2 = 2631 rxdp->Control_2 =
@@ -2657,6 +2655,7 @@ static int fill_rx_buffers(struct ring_info *ring)
2657 skb->data = (void *) (unsigned long)tmp; 2655 skb->data = (void *) (unsigned long)tmp;
2658 skb_reset_tail_pointer(skb); 2656 skb_reset_tail_pointer(skb);
2659 2657
2658 /* AK: check is wrong. 0 can be valid dma address */
2660 if (!(rxdp3->Buffer0_ptr)) 2659 if (!(rxdp3->Buffer0_ptr))
2661 rxdp3->Buffer0_ptr = 2660 rxdp3->Buffer0_ptr =
2662 pci_map_single(ring->pdev, ba->ba_0, 2661 pci_map_single(ring->pdev, ba->ba_0,
@@ -2665,8 +2664,7 @@ static int fill_rx_buffers(struct ring_info *ring)
2665 pci_dma_sync_single_for_device(ring->pdev, 2664 pci_dma_sync_single_for_device(ring->pdev,
2666 (dma_addr_t) rxdp3->Buffer0_ptr, 2665 (dma_addr_t) rxdp3->Buffer0_ptr,
2667 BUF0_LEN, PCI_DMA_FROMDEVICE); 2666 BUF0_LEN, PCI_DMA_FROMDEVICE);
2668 if( (rxdp3->Buffer0_ptr == 0) || 2667 if (pci_dma_mapping_error(rxdp3->Buffer0_ptr))
2669 (rxdp3->Buffer0_ptr == DMA_ERROR_CODE))
2670 goto pci_map_failed; 2668 goto pci_map_failed;
2671 2669
2672 rxdp->Control_2 = SET_BUFFER0_SIZE_3(BUF0_LEN); 2670 rxdp->Control_2 = SET_BUFFER0_SIZE_3(BUF0_LEN);
@@ -2681,18 +2679,17 @@ static int fill_rx_buffers(struct ring_info *ring)
2681 (ring->pdev, skb->data, ring->mtu + 4, 2679 (ring->pdev, skb->data, ring->mtu + 4,
2682 PCI_DMA_FROMDEVICE); 2680 PCI_DMA_FROMDEVICE);
2683 2681
2684 if( (rxdp3->Buffer2_ptr == 0) || 2682 if (pci_dma_mapping_error(rxdp3->Buffer2_ptr))
2685 (rxdp3->Buffer2_ptr == DMA_ERROR_CODE))
2686 goto pci_map_failed; 2683 goto pci_map_failed;
2687 2684
2685 /* AK: check is wrong */
2688 if (!rxdp3->Buffer1_ptr) 2686 if (!rxdp3->Buffer1_ptr)
2689 rxdp3->Buffer1_ptr = 2687 rxdp3->Buffer1_ptr =
2690 pci_map_single(ring->pdev, 2688 pci_map_single(ring->pdev,
2691 ba->ba_1, BUF1_LEN, 2689 ba->ba_1, BUF1_LEN,
2692 PCI_DMA_FROMDEVICE); 2690 PCI_DMA_FROMDEVICE);
2693 2691
2694 if( (rxdp3->Buffer1_ptr == 0) || 2692 if (pci_dma_mapping_error(rxdp3->Buffer1_ptr)) {
2695 (rxdp3->Buffer1_ptr == DMA_ERROR_CODE)) {
2696 pci_unmap_single 2693 pci_unmap_single
2697 (ring->pdev, 2694 (ring->pdev,
2698 (dma_addr_t)(unsigned long) 2695 (dma_addr_t)(unsigned long)
@@ -4264,16 +4261,14 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
4264 txdp->Buffer_Pointer = pci_map_single(sp->pdev, 4261 txdp->Buffer_Pointer = pci_map_single(sp->pdev,
4265 fifo->ufo_in_band_v, 4262 fifo->ufo_in_band_v,
4266 sizeof(u64), PCI_DMA_TODEVICE); 4263 sizeof(u64), PCI_DMA_TODEVICE);
4267 if((txdp->Buffer_Pointer == 0) || 4264 if (pci_dma_mapping_error(txdp->Buffer_Pointer))
4268 (txdp->Buffer_Pointer == DMA_ERROR_CODE))
4269 goto pci_map_failed; 4265 goto pci_map_failed;
4270 txdp++; 4266 txdp++;
4271 } 4267 }
4272 4268
4273 txdp->Buffer_Pointer = pci_map_single 4269 txdp->Buffer_Pointer = pci_map_single
4274 (sp->pdev, skb->data, frg_len, PCI_DMA_TODEVICE); 4270 (sp->pdev, skb->data, frg_len, PCI_DMA_TODEVICE);
4275 if((txdp->Buffer_Pointer == 0) || 4271 if (pci_dma_mapping_error(txdp->Buffer_Pointer))
4276 (txdp->Buffer_Pointer == DMA_ERROR_CODE))
4277 goto pci_map_failed; 4272 goto pci_map_failed;
4278 4273
4279 txdp->Host_Control = (unsigned long) skb; 4274 txdp->Host_Control = (unsigned long) skb;
@@ -6884,10 +6879,8 @@ static int set_rxd_buffer_pointer(struct s2io_nic *sp, struct RxD_t *rxdp,
6884 pci_map_single( sp->pdev, (*skb)->data, 6879 pci_map_single( sp->pdev, (*skb)->data,
6885 size - NET_IP_ALIGN, 6880 size - NET_IP_ALIGN,
6886 PCI_DMA_FROMDEVICE); 6881 PCI_DMA_FROMDEVICE);
6887 if( (rxdp1->Buffer0_ptr == 0) || 6882 if (pci_dma_mapping_error(rxdp1->Buffer0_ptr))
6888 (rxdp1->Buffer0_ptr == DMA_ERROR_CODE)) {
6889 goto memalloc_failed; 6883 goto memalloc_failed;
6890 }
6891 rxdp->Host_Control = (unsigned long) (*skb); 6884 rxdp->Host_Control = (unsigned long) (*skb);
6892 } 6885 }
6893 } else if ((sp->rxd_mode == RXD_MODE_3B) && (rxdp->Host_Control == 0)) { 6886 } else if ((sp->rxd_mode == RXD_MODE_3B) && (rxdp->Host_Control == 0)) {
@@ -6913,15 +6906,12 @@ static int set_rxd_buffer_pointer(struct s2io_nic *sp, struct RxD_t *rxdp,
6913 pci_map_single(sp->pdev, (*skb)->data, 6906 pci_map_single(sp->pdev, (*skb)->data,
6914 dev->mtu + 4, 6907 dev->mtu + 4,
6915 PCI_DMA_FROMDEVICE); 6908 PCI_DMA_FROMDEVICE);
6916 if( (rxdp3->Buffer2_ptr == 0) || 6909 if (pci_dma_mapping_error(rxdp3->Buffer2_ptr))
6917 (rxdp3->Buffer2_ptr == DMA_ERROR_CODE)) {
6918 goto memalloc_failed; 6910 goto memalloc_failed;
6919 }
6920 rxdp3->Buffer0_ptr = *temp0 = 6911 rxdp3->Buffer0_ptr = *temp0 =
6921 pci_map_single( sp->pdev, ba->ba_0, BUF0_LEN, 6912 pci_map_single( sp->pdev, ba->ba_0, BUF0_LEN,
6922 PCI_DMA_FROMDEVICE); 6913 PCI_DMA_FROMDEVICE);
6923 if( (rxdp3->Buffer0_ptr == 0) || 6914 if (pci_dma_mapping_error(rxdp3->Buffer0_ptr)) {
6924 (rxdp3->Buffer0_ptr == DMA_ERROR_CODE)) {
6925 pci_unmap_single (sp->pdev, 6915 pci_unmap_single (sp->pdev,
6926 (dma_addr_t)rxdp3->Buffer2_ptr, 6916 (dma_addr_t)rxdp3->Buffer2_ptr,
6927 dev->mtu + 4, PCI_DMA_FROMDEVICE); 6917 dev->mtu + 4, PCI_DMA_FROMDEVICE);
@@ -6933,8 +6923,7 @@ static int set_rxd_buffer_pointer(struct s2io_nic *sp, struct RxD_t *rxdp,
6933 rxdp3->Buffer1_ptr = *temp1 = 6923 rxdp3->Buffer1_ptr = *temp1 =
6934 pci_map_single(sp->pdev, ba->ba_1, BUF1_LEN, 6924 pci_map_single(sp->pdev, ba->ba_1, BUF1_LEN,
6935 PCI_DMA_FROMDEVICE); 6925 PCI_DMA_FROMDEVICE);
6936 if( (rxdp3->Buffer1_ptr == 0) || 6926 if (pci_dma_mapping_error(rxdp3->Buffer1_ptr)) {
6937 (rxdp3->Buffer1_ptr == DMA_ERROR_CODE)) {
6938 pci_unmap_single (sp->pdev, 6927 pci_unmap_single (sp->pdev,
6939 (dma_addr_t)rxdp3->Buffer0_ptr, 6928 (dma_addr_t)rxdp3->Buffer0_ptr,
6940 BUF0_LEN, PCI_DMA_FROMDEVICE); 6929 BUF0_LEN, PCI_DMA_FROMDEVICE);
diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h
index 4706f7f9acb6..1827b6686c98 100644
--- a/drivers/net/s2io.h
+++ b/drivers/net/s2io.h
@@ -75,10 +75,6 @@ static int debug_level = ERR_DBG;
75/* DEBUG message print. */ 75/* DEBUG message print. */
76#define DBG_PRINT(dbg_level, args...) if(!(debug_level<dbg_level)) printk(args) 76#define DBG_PRINT(dbg_level, args...) if(!(debug_level<dbg_level)) printk(args)
77 77
78#ifndef DMA_ERROR_CODE
79#define DMA_ERROR_CODE (~(dma_addr_t)0x0)
80#endif
81
82/* Protocol assist features of the NIC */ 78/* Protocol assist features of the NIC */
83#define L3_CKSUM_OK 0xFFFF 79#define L3_CKSUM_OK 0xFFFF
84#define L4_CKSUM_OK 0xFFFF 80#define L4_CKSUM_OK 0xFFFF
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 62436b3a18c6..c8a5ef2d75f4 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -118,6 +118,7 @@ static const struct pci_device_id sky2_id_table[] = {
118 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4352) }, /* 88E8038 */ 118 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4352) }, /* 88E8038 */
119 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4353) }, /* 88E8039 */ 119 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4353) }, /* 88E8039 */
120 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4354) }, /* 88E8040 */ 120 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4354) }, /* 88E8040 */
121 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4355) }, /* 88E8040T */
121 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4356) }, /* 88EC033 */ 122 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4356) }, /* 88EC033 */
122 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4357) }, /* 88E8042 */ 123 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4357) }, /* 88E8042 */
123 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x435A) }, /* 88E8048 */ 124 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x435A) }, /* 88E8048 */
diff --git a/drivers/net/tc35815.c b/drivers/net/tc35815.c
index 10e4e85da3fc..b07b8cbadeaf 100644
--- a/drivers/net/tc35815.c
+++ b/drivers/net/tc35815.c
@@ -1394,6 +1394,7 @@ tc35815_open(struct net_device *dev)
1394 tc35815_chip_init(dev); 1394 tc35815_chip_init(dev);
1395 spin_unlock_irq(&lp->lock); 1395 spin_unlock_irq(&lp->lock);
1396 1396
1397 netif_carrier_off(dev);
1397 /* schedule a link state check */ 1398 /* schedule a link state check */
1398 phy_start(lp->phy_dev); 1399 phy_start(lp->phy_dev);
1399 1400
@@ -1735,7 +1736,6 @@ tc35815_rx(struct net_device *dev)
1735 skb = lp->rx_skbs[cur_bd].skb; 1736 skb = lp->rx_skbs[cur_bd].skb;
1736 prefetch(skb->data); 1737 prefetch(skb->data);
1737 lp->rx_skbs[cur_bd].skb = NULL; 1738 lp->rx_skbs[cur_bd].skb = NULL;
1738 lp->fbl_count--;
1739 pci_unmap_single(lp->pci_dev, 1739 pci_unmap_single(lp->pci_dev,
1740 lp->rx_skbs[cur_bd].skb_dma, 1740 lp->rx_skbs[cur_bd].skb_dma,
1741 RX_BUF_SIZE, PCI_DMA_FROMDEVICE); 1741 RX_BUF_SIZE, PCI_DMA_FROMDEVICE);
@@ -1791,6 +1791,7 @@ tc35815_rx(struct net_device *dev)
1791#ifdef TC35815_USE_PACKEDBUFFER 1791#ifdef TC35815_USE_PACKEDBUFFER
1792 while (lp->fbl_curid != id) 1792 while (lp->fbl_curid != id)
1793#else 1793#else
1794 lp->fbl_count--;
1794 while (lp->fbl_count < RX_BUF_NUM) 1795 while (lp->fbl_count < RX_BUF_NUM)
1795#endif 1796#endif
1796 { 1797 {
@@ -2453,6 +2454,7 @@ static int tc35815_resume(struct pci_dev *pdev)
2453 return 0; 2454 return 0;
2454 pci_set_power_state(pdev, PCI_D0); 2455 pci_set_power_state(pdev, PCI_D0);
2455 tc35815_restart(dev); 2456 tc35815_restart(dev);
2457 netif_carrier_off(dev);
2456 if (lp->phy_dev) 2458 if (lp->phy_dev)
2457 phy_start(lp->phy_dev); 2459 phy_start(lp->phy_dev);
2458 netif_device_attach(dev); 2460 netif_device_attach(dev);
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 0ce07a339c7e..7ab94c825b57 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -313,6 +313,21 @@ static __inline__ ssize_t tun_get_user(struct tun_struct *tun, struct iovec *iv,
313 313
314 switch (tun->flags & TUN_TYPE_MASK) { 314 switch (tun->flags & TUN_TYPE_MASK) {
315 case TUN_TUN_DEV: 315 case TUN_TUN_DEV:
316 if (tun->flags & TUN_NO_PI) {
317 switch (skb->data[0] & 0xf0) {
318 case 0x40:
319 pi.proto = htons(ETH_P_IP);
320 break;
321 case 0x60:
322 pi.proto = htons(ETH_P_IPV6);
323 break;
324 default:
325 tun->dev->stats.rx_dropped++;
326 kfree_skb(skb);
327 return -EINVAL;
328 }
329 }
330
316 skb_reset_mac_header(skb); 331 skb_reset_mac_header(skb);
317 skb->protocol = pi.proto; 332 skb->protocol = pi.proto;
318 skb->dev = tun->dev; 333 skb->dev = tun->dev;
diff --git a/drivers/net/wan/x25_asy.c b/drivers/net/wan/x25_asy.c
index 249e18053d5f..069f8bb0a99f 100644
--- a/drivers/net/wan/x25_asy.c
+++ b/drivers/net/wan/x25_asy.c
@@ -32,6 +32,7 @@
32#include <linux/x25.h> 32#include <linux/x25.h>
33#include <linux/lapb.h> 33#include <linux/lapb.h>
34#include <linux/init.h> 34#include <linux/init.h>
35#include <linux/rtnetlink.h>
35#include "x25_asy.h" 36#include "x25_asy.h"
36 37
37#include <net/x25device.h> 38#include <net/x25device.h>
@@ -601,8 +602,10 @@ static void x25_asy_close_tty(struct tty_struct *tty)
601 if (!sl || sl->magic != X25_ASY_MAGIC) 602 if (!sl || sl->magic != X25_ASY_MAGIC)
602 return; 603 return;
603 604
605 rtnl_lock();
604 if (sl->dev->flags & IFF_UP) 606 if (sl->dev->flags & IFF_UP)
605 dev_close(sl->dev); 607 dev_close(sl->dev);
608 rtnl_unlock();
606 609
607 tty->disc_data = NULL; 610 tty->disc_data = NULL;
608 sl->tty = NULL; 611 sl->tty = NULL;
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h
index dfa4bdd5597c..d3db298c05fc 100644
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
@@ -630,7 +630,6 @@ struct b43_pio {
630 630
631/* Context information for a noise calculation (Link Quality). */ 631/* Context information for a noise calculation (Link Quality). */
632struct b43_noise_calculation { 632struct b43_noise_calculation {
633 u8 channel_at_start;
634 bool calculation_running; 633 bool calculation_running;
635 u8 nr_samples; 634 u8 nr_samples;
636 s8 samples[8][4]; 635 s8 samples[8][4];
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index 6dcbb3c87e72..e23f2f172bd7 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -795,24 +795,49 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
795{ 795{
796 struct b43_dmaring *ring; 796 struct b43_dmaring *ring;
797 int err; 797 int err;
798 int nr_slots;
799 dma_addr_t dma_test; 798 dma_addr_t dma_test;
800 799
801 ring = kzalloc(sizeof(*ring), GFP_KERNEL); 800 ring = kzalloc(sizeof(*ring), GFP_KERNEL);
802 if (!ring) 801 if (!ring)
803 goto out; 802 goto out;
804 ring->type = type;
805 803
806 nr_slots = B43_RXRING_SLOTS; 804 ring->nr_slots = B43_RXRING_SLOTS;
807 if (for_tx) 805 if (for_tx)
808 nr_slots = B43_TXRING_SLOTS; 806 ring->nr_slots = B43_TXRING_SLOTS;
809 807
810 ring->meta = kcalloc(nr_slots, sizeof(struct b43_dmadesc_meta), 808 ring->meta = kcalloc(ring->nr_slots, sizeof(struct b43_dmadesc_meta),
811 GFP_KERNEL); 809 GFP_KERNEL);
812 if (!ring->meta) 810 if (!ring->meta)
813 goto err_kfree_ring; 811 goto err_kfree_ring;
812
813 ring->type = type;
814 ring->dev = dev;
815 ring->mmio_base = b43_dmacontroller_base(type, controller_index);
816 ring->index = controller_index;
817 if (type == B43_DMA_64BIT)
818 ring->ops = &dma64_ops;
819 else
820 ring->ops = &dma32_ops;
814 if (for_tx) { 821 if (for_tx) {
815 ring->txhdr_cache = kcalloc(nr_slots, 822 ring->tx = 1;
823 ring->current_slot = -1;
824 } else {
825 if (ring->index == 0) {
826 ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
827 ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
828 } else if (ring->index == 3) {
829 ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
830 ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
831 } else
832 B43_WARN_ON(1);
833 }
834 spin_lock_init(&ring->lock);
835#ifdef CONFIG_B43_DEBUG
836 ring->last_injected_overflow = jiffies;
837#endif
838
839 if (for_tx) {
840 ring->txhdr_cache = kcalloc(ring->nr_slots,
816 b43_txhdr_size(dev), 841 b43_txhdr_size(dev),
817 GFP_KERNEL); 842 GFP_KERNEL);
818 if (!ring->txhdr_cache) 843 if (!ring->txhdr_cache)
@@ -828,7 +853,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
828 b43_txhdr_size(dev), 1)) { 853 b43_txhdr_size(dev), 1)) {
829 /* ugh realloc */ 854 /* ugh realloc */
830 kfree(ring->txhdr_cache); 855 kfree(ring->txhdr_cache);
831 ring->txhdr_cache = kcalloc(nr_slots, 856 ring->txhdr_cache = kcalloc(ring->nr_slots,
832 b43_txhdr_size(dev), 857 b43_txhdr_size(dev),
833 GFP_KERNEL | GFP_DMA); 858 GFP_KERNEL | GFP_DMA);
834 if (!ring->txhdr_cache) 859 if (!ring->txhdr_cache)
@@ -853,32 +878,6 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
853 DMA_TO_DEVICE); 878 DMA_TO_DEVICE);
854 } 879 }
855 880
856 ring->dev = dev;
857 ring->nr_slots = nr_slots;
858 ring->mmio_base = b43_dmacontroller_base(type, controller_index);
859 ring->index = controller_index;
860 if (type == B43_DMA_64BIT)
861 ring->ops = &dma64_ops;
862 else
863 ring->ops = &dma32_ops;
864 if (for_tx) {
865 ring->tx = 1;
866 ring->current_slot = -1;
867 } else {
868 if (ring->index == 0) {
869 ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
870 ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
871 } else if (ring->index == 3) {
872 ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
873 ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
874 } else
875 B43_WARN_ON(1);
876 }
877 spin_lock_init(&ring->lock);
878#ifdef CONFIG_B43_DEBUG
879 ring->last_injected_overflow = jiffies;
880#endif
881
882 err = alloc_ringmemory(ring); 881 err = alloc_ringmemory(ring);
883 if (err) 882 if (err)
884 goto err_kfree_txhdr_cache; 883 goto err_kfree_txhdr_cache;
diff --git a/drivers/net/wireless/b43/leds.c b/drivers/net/wireless/b43/leds.c
index 36a9c42df835..76f4c7bad8b8 100644
--- a/drivers/net/wireless/b43/leds.c
+++ b/drivers/net/wireless/b43/leds.c
@@ -72,6 +72,9 @@ static void b43_led_brightness_set(struct led_classdev *led_dev,
72 struct b43_wldev *dev = led->dev; 72 struct b43_wldev *dev = led->dev;
73 bool radio_enabled; 73 bool radio_enabled;
74 74
75 if (unlikely(b43_status(dev) < B43_STAT_INITIALIZED))
76 return;
77
75 /* Checking the radio-enabled status here is slightly racy, 78 /* Checking the radio-enabled status here is slightly racy,
76 * but we want to avoid the locking overhead and we don't care 79 * but we want to avoid the locking overhead and we don't care
77 * whether the LED has the wrong state for a second. */ 80 * whether the LED has the wrong state for a second. */
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 6c3d9ea0a9f8..a70827793086 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -1145,7 +1145,6 @@ static void b43_generate_noise_sample(struct b43_wldev *dev)
1145 b43_jssi_write(dev, 0x7F7F7F7F); 1145 b43_jssi_write(dev, 0x7F7F7F7F);
1146 b43_write32(dev, B43_MMIO_MACCMD, 1146 b43_write32(dev, B43_MMIO_MACCMD,
1147 b43_read32(dev, B43_MMIO_MACCMD) | B43_MACCMD_BGNOISE); 1147 b43_read32(dev, B43_MMIO_MACCMD) | B43_MACCMD_BGNOISE);
1148 B43_WARN_ON(dev->noisecalc.channel_at_start != dev->phy.channel);
1149} 1148}
1150 1149
1151static void b43_calculate_link_quality(struct b43_wldev *dev) 1150static void b43_calculate_link_quality(struct b43_wldev *dev)
@@ -1154,7 +1153,6 @@ static void b43_calculate_link_quality(struct b43_wldev *dev)
1154 1153
1155 if (dev->noisecalc.calculation_running) 1154 if (dev->noisecalc.calculation_running)
1156 return; 1155 return;
1157 dev->noisecalc.channel_at_start = dev->phy.channel;
1158 dev->noisecalc.calculation_running = 1; 1156 dev->noisecalc.calculation_running = 1;
1159 dev->noisecalc.nr_samples = 0; 1157 dev->noisecalc.nr_samples = 0;
1160 1158
@@ -1171,9 +1169,16 @@ static void handle_irq_noise(struct b43_wldev *dev)
1171 1169
1172 /* Bottom half of Link Quality calculation. */ 1170 /* Bottom half of Link Quality calculation. */
1173 1171
1172 /* Possible race condition: It might be possible that the user
1173 * changed to a different channel in the meantime since we
1174 * started the calculation. We ignore that fact, since it's
1175 * not really that much of a problem. The background noise is
1176 * an estimation only anyway. Slightly wrong results will get damped
1177 * by the averaging of the 8 sample rounds. Additionally the
1178 * value is shortlived. So it will be replaced by the next noise
1179 * calculation round soon. */
1180
1174 B43_WARN_ON(!dev->noisecalc.calculation_running); 1181 B43_WARN_ON(!dev->noisecalc.calculation_running);
1175 if (dev->noisecalc.channel_at_start != phy->channel)
1176 goto drop_calculation;
1177 *((__le32 *)noise) = cpu_to_le32(b43_jssi_read(dev)); 1182 *((__le32 *)noise) = cpu_to_le32(b43_jssi_read(dev));
1178 if (noise[0] == 0x7F || noise[1] == 0x7F || 1183 if (noise[0] == 0x7F || noise[1] == 0x7F ||
1179 noise[2] == 0x7F || noise[3] == 0x7F) 1184 noise[2] == 0x7F || noise[3] == 0x7F)
@@ -1214,11 +1219,10 @@ static void handle_irq_noise(struct b43_wldev *dev)
1214 average -= 48; 1219 average -= 48;
1215 1220
1216 dev->stats.link_noise = average; 1221 dev->stats.link_noise = average;
1217 drop_calculation:
1218 dev->noisecalc.calculation_running = 0; 1222 dev->noisecalc.calculation_running = 0;
1219 return; 1223 return;
1220 } 1224 }
1221 generate_new: 1225generate_new:
1222 b43_generate_noise_sample(dev); 1226 b43_generate_noise_sample(dev);
1223} 1227}
1224 1228
@@ -2879,12 +2883,11 @@ static int b43_op_tx(struct ieee80211_hw *hw,
2879 2883
2880 if (unlikely(skb->len < 2 + 2 + 6)) { 2884 if (unlikely(skb->len < 2 + 2 + 6)) {
2881 /* Too short, this can't be a valid frame. */ 2885 /* Too short, this can't be a valid frame. */
2882 dev_kfree_skb_any(skb); 2886 goto drop_packet;
2883 return NETDEV_TX_OK;
2884 } 2887 }
2885 B43_WARN_ON(skb_shinfo(skb)->nr_frags); 2888 B43_WARN_ON(skb_shinfo(skb)->nr_frags);
2886 if (unlikely(!dev)) 2889 if (unlikely(!dev))
2887 return NETDEV_TX_BUSY; 2890 goto drop_packet;
2888 2891
2889 /* Transmissions on seperate queues can run concurrently. */ 2892 /* Transmissions on seperate queues can run concurrently. */
2890 read_lock_irqsave(&wl->tx_lock, flags); 2893 read_lock_irqsave(&wl->tx_lock, flags);
@@ -2900,7 +2903,12 @@ static int b43_op_tx(struct ieee80211_hw *hw,
2900 read_unlock_irqrestore(&wl->tx_lock, flags); 2903 read_unlock_irqrestore(&wl->tx_lock, flags);
2901 2904
2902 if (unlikely(err)) 2905 if (unlikely(err))
2903 return NETDEV_TX_BUSY; 2906 goto drop_packet;
2907 return NETDEV_TX_OK;
2908
2909drop_packet:
2910 /* We can not transmit this packet. Drop it. */
2911 dev_kfree_skb_any(skb);
2904 return NETDEV_TX_OK; 2912 return NETDEV_TX_OK;
2905} 2913}
2906 2914
diff --git a/drivers/net/wireless/b43legacy/dma.c b/drivers/net/wireless/b43legacy/dma.c
index c990f87b107a..93ddc1cbcc8b 100644
--- a/drivers/net/wireless/b43legacy/dma.c
+++ b/drivers/net/wireless/b43legacy/dma.c
@@ -876,6 +876,7 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev,
876 if (!ring) 876 if (!ring)
877 goto out; 877 goto out;
878 ring->type = type; 878 ring->type = type;
879 ring->dev = dev;
879 880
880 nr_slots = B43legacy_RXRING_SLOTS; 881 nr_slots = B43legacy_RXRING_SLOTS;
881 if (for_tx) 882 if (for_tx)
@@ -922,7 +923,6 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev,
922 DMA_TO_DEVICE); 923 DMA_TO_DEVICE);
923 } 924 }
924 925
925 ring->dev = dev;
926 ring->nr_slots = nr_slots; 926 ring->nr_slots = nr_slots;
927 ring->mmio_base = b43legacy_dmacontroller_base(type, controller_index); 927 ring->mmio_base = b43legacy_dmacontroller_base(type, controller_index);
928 ring->index = controller_index; 928 ring->index = controller_index;
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c
index 204077c13870..3e612d0a13e8 100644
--- a/drivers/net/wireless/b43legacy/main.c
+++ b/drivers/net/wireless/b43legacy/main.c
@@ -2378,8 +2378,10 @@ static int b43legacy_op_tx(struct ieee80211_hw *hw,
2378 } else 2378 } else
2379 err = b43legacy_dma_tx(dev, skb, ctl); 2379 err = b43legacy_dma_tx(dev, skb, ctl);
2380out: 2380out:
2381 if (unlikely(err)) 2381 if (unlikely(err)) {
2382 return NETDEV_TX_BUSY; 2382 /* Drop the packet. */
2383 dev_kfree_skb_any(skb);
2384 }
2383 return NETDEV_TX_OK; 2385 return NETDEV_TX_OK;
2384} 2386}
2385 2387
diff --git a/drivers/net/wireless/hostap/hostap_80211_rx.c b/drivers/net/wireless/hostap/hostap_80211_rx.c
index 4fd73809602e..020f450e9dba 100644
--- a/drivers/net/wireless/hostap/hostap_80211_rx.c
+++ b/drivers/net/wireless/hostap/hostap_80211_rx.c
@@ -64,7 +64,7 @@ int prism2_rx_80211(struct net_device *dev, struct sk_buff *skb,
64 int hdrlen, phdrlen, head_need, tail_need; 64 int hdrlen, phdrlen, head_need, tail_need;
65 u16 fc; 65 u16 fc;
66 int prism_header, ret; 66 int prism_header, ret;
67 struct ieee80211_hdr_4addr *hdr; 67 struct ieee80211_hdr_4addr *fhdr;
68 68
69 iface = netdev_priv(dev); 69 iface = netdev_priv(dev);
70 local = iface->local; 70 local = iface->local;
@@ -83,8 +83,8 @@ int prism2_rx_80211(struct net_device *dev, struct sk_buff *skb,
83 phdrlen = 0; 83 phdrlen = 0;
84 } 84 }
85 85
86 hdr = (struct ieee80211_hdr_4addr *) skb->data; 86 fhdr = (struct ieee80211_hdr_4addr *) skb->data;
87 fc = le16_to_cpu(hdr->frame_ctl); 87 fc = le16_to_cpu(fhdr->frame_ctl);
88 88
89 if (type == PRISM2_RX_MGMT && (fc & IEEE80211_FCTL_VERS)) { 89 if (type == PRISM2_RX_MGMT && (fc & IEEE80211_FCTL_VERS)) {
90 printk(KERN_DEBUG "%s: dropped management frame with header " 90 printk(KERN_DEBUG "%s: dropped management frame with header "
@@ -551,7 +551,7 @@ hostap_rx_frame_wds(local_info_t *local, struct ieee80211_hdr_4addr *hdr,
551 hdr->addr1[2] != 0xff || hdr->addr1[3] != 0xff || 551 hdr->addr1[2] != 0xff || hdr->addr1[3] != 0xff ||
552 hdr->addr1[4] != 0xff || hdr->addr1[5] != 0xff)) { 552 hdr->addr1[4] != 0xff || hdr->addr1[5] != 0xff)) {
553 /* RA (or BSSID) is not ours - drop */ 553 /* RA (or BSSID) is not ours - drop */
554 PDEBUG(DEBUG_EXTRA, "%s: received WDS frame with " 554 PDEBUG(DEBUG_EXTRA2, "%s: received WDS frame with "
555 "not own or broadcast %s=%s\n", 555 "not own or broadcast %s=%s\n",
556 local->dev->name, 556 local->dev->name,
557 fc & IEEE80211_FCTL_FROMDS ? "RA" : "BSSID", 557 fc & IEEE80211_FCTL_FROMDS ? "RA" : "BSSID",
diff --git a/drivers/net/wireless/hostap/hostap_ap.c b/drivers/net/wireless/hostap/hostap_ap.c
index 0acd9589c48c..ab981afd481d 100644
--- a/drivers/net/wireless/hostap/hostap_ap.c
+++ b/drivers/net/wireless/hostap/hostap_ap.c
@@ -1930,7 +1930,7 @@ static void handle_pspoll(local_info_t *local,
1930 PDEBUG(DEBUG_PS, " PSPOLL and AID[15:14] not set\n"); 1930 PDEBUG(DEBUG_PS, " PSPOLL and AID[15:14] not set\n");
1931 return; 1931 return;
1932 } 1932 }
1933 aid &= ~BIT(15) & ~BIT(14); 1933 aid &= ~(BIT(15) | BIT(14));
1934 if (aid == 0 || aid > MAX_AID_TABLE_SIZE) { 1934 if (aid == 0 || aid > MAX_AID_TABLE_SIZE) {
1935 PDEBUG(DEBUG_PS, " invalid aid=%d\n", aid); 1935 PDEBUG(DEBUG_PS, " invalid aid=%d\n", aid);
1936 return; 1936 return;
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c
index ed4317a17cbb..80039a0ae027 100644
--- a/drivers/net/wireless/hostap/hostap_cs.c
+++ b/drivers/net/wireless/hostap/hostap_cs.c
@@ -533,10 +533,10 @@ static void prism2_detach(struct pcmcia_device *link)
533do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) 533do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
534 534
535#define CFG_CHECK2(fn, retf) \ 535#define CFG_CHECK2(fn, retf) \
536do { int ret = (retf); \ 536do { int _ret = (retf); \
537if (ret != 0) { \ 537if (_ret != 0) { \
538 PDEBUG(DEBUG_EXTRA, "CardServices(" #fn ") returned %d\n", ret); \ 538 PDEBUG(DEBUG_EXTRA, "CardServices(" #fn ") returned %d\n", _ret); \
539 cs_error(link, fn, ret); \ 539 cs_error(link, fn, _ret); \
540 goto next_entry; \ 540 goto next_entry; \
541} \ 541} \
542} while (0) 542} while (0)
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c
index cdf90c40f11b..936f52e3d95c 100644
--- a/drivers/net/wireless/hostap/hostap_hw.c
+++ b/drivers/net/wireless/hostap/hostap_hw.c
@@ -2835,7 +2835,7 @@ static void hostap_passive_scan(unsigned long data)
2835{ 2835{
2836 local_info_t *local = (local_info_t *) data; 2836 local_info_t *local = (local_info_t *) data;
2837 struct net_device *dev = local->dev; 2837 struct net_device *dev = local->dev;
2838 u16 channel; 2838 u16 chan;
2839 2839
2840 if (local->passive_scan_interval <= 0) 2840 if (local->passive_scan_interval <= 0)
2841 return; 2841 return;
@@ -2872,11 +2872,11 @@ static void hostap_passive_scan(unsigned long data)
2872 2872
2873 printk(KERN_DEBUG "%s: passive scan channel %d\n", 2873 printk(KERN_DEBUG "%s: passive scan channel %d\n",
2874 dev->name, local->passive_scan_channel); 2874 dev->name, local->passive_scan_channel);
2875 channel = local->passive_scan_channel; 2875 chan = local->passive_scan_channel;
2876 local->passive_scan_state = PASSIVE_SCAN_WAIT; 2876 local->passive_scan_state = PASSIVE_SCAN_WAIT;
2877 local->passive_scan_timer.expires = jiffies + HZ / 10; 2877 local->passive_scan_timer.expires = jiffies + HZ / 10;
2878 } else { 2878 } else {
2879 channel = local->channel; 2879 chan = local->channel;
2880 local->passive_scan_state = PASSIVE_SCAN_LISTEN; 2880 local->passive_scan_state = PASSIVE_SCAN_LISTEN;
2881 local->passive_scan_timer.expires = jiffies + 2881 local->passive_scan_timer.expires = jiffies +
2882 local->passive_scan_interval * HZ; 2882 local->passive_scan_interval * HZ;
@@ -2884,9 +2884,9 @@ static void hostap_passive_scan(unsigned long data)
2884 2884
2885 if (hfa384x_cmd_callback(dev, HFA384X_CMDCODE_TEST | 2885 if (hfa384x_cmd_callback(dev, HFA384X_CMDCODE_TEST |
2886 (HFA384X_TEST_CHANGE_CHANNEL << 8), 2886 (HFA384X_TEST_CHANGE_CHANNEL << 8),
2887 channel, NULL, 0)) 2887 chan, NULL, 0))
2888 printk(KERN_ERR "%s: passive scan channel set %d " 2888 printk(KERN_ERR "%s: passive scan channel set %d "
2889 "failed\n", dev->name, channel); 2889 "failed\n", dev->name, chan);
2890 2890
2891 add_timer(&local->passive_scan_timer); 2891 add_timer(&local->passive_scan_timer);
2892} 2892}
diff --git a/drivers/net/wireless/hostap/hostap_main.c b/drivers/net/wireless/hostap/hostap_main.c
index f7aec9309d04..a38e85f334df 100644
--- a/drivers/net/wireless/hostap/hostap_main.c
+++ b/drivers/net/wireless/hostap/hostap_main.c
@@ -594,7 +594,8 @@ void hostap_dump_tx_header(const char *name, const struct hfa384x_tx_frame *tx)
594} 594}
595 595
596 596
597int hostap_80211_header_parse(const struct sk_buff *skb, unsigned char *haddr) 597static int hostap_80211_header_parse(const struct sk_buff *skb,
598 unsigned char *haddr)
598{ 599{
599 struct hostap_interface *iface = netdev_priv(skb->dev); 600 struct hostap_interface *iface = netdev_priv(skb->dev);
600 local_info_t *local = iface->local; 601 local_info_t *local = iface->local;
@@ -857,7 +858,6 @@ const struct header_ops hostap_80211_ops = {
857 .rebuild = eth_rebuild_header, 858 .rebuild = eth_rebuild_header,
858 .cache = eth_header_cache, 859 .cache = eth_header_cache,
859 .cache_update = eth_header_cache_update, 860 .cache_update = eth_header_cache_update,
860
861 .parse = hostap_80211_header_parse, 861 .parse = hostap_80211_header_parse,
862}; 862};
863EXPORT_SYMBOL(hostap_80211_ops); 863EXPORT_SYMBOL(hostap_80211_ops);
@@ -1150,7 +1150,6 @@ EXPORT_SYMBOL(hostap_set_roaming);
1150EXPORT_SYMBOL(hostap_set_auth_algs); 1150EXPORT_SYMBOL(hostap_set_auth_algs);
1151EXPORT_SYMBOL(hostap_dump_rx_header); 1151EXPORT_SYMBOL(hostap_dump_rx_header);
1152EXPORT_SYMBOL(hostap_dump_tx_header); 1152EXPORT_SYMBOL(hostap_dump_tx_header);
1153EXPORT_SYMBOL(hostap_80211_header_parse);
1154EXPORT_SYMBOL(hostap_80211_get_hdrlen); 1153EXPORT_SYMBOL(hostap_80211_get_hdrlen);
1155EXPORT_SYMBOL(hostap_get_stats); 1154EXPORT_SYMBOL(hostap_get_stats);
1156EXPORT_SYMBOL(hostap_setup_dev); 1155EXPORT_SYMBOL(hostap_setup_dev);
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 13925b627e3b..b1b3c523185d 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -2227,7 +2227,10 @@ static int iwl3945_scan_initiate(struct iwl3945_priv *priv)
2227 } 2227 }
2228 2228
2229 IWL_DEBUG_INFO("Starting scan...\n"); 2229 IWL_DEBUG_INFO("Starting scan...\n");
2230 priv->scan_bands = 2; 2230 if (priv->cfg->sku & IWL_SKU_G)
2231 priv->scan_bands |= BIT(IEEE80211_BAND_2GHZ);
2232 if (priv->cfg->sku & IWL_SKU_A)
2233 priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
2231 set_bit(STATUS_SCANNING, &priv->status); 2234 set_bit(STATUS_SCANNING, &priv->status);
2232 priv->scan_start = jiffies; 2235 priv->scan_start = jiffies;
2233 priv->scan_pass_start = priv->scan_start; 2236 priv->scan_pass_start = priv->scan_start;
@@ -3352,13 +3355,18 @@ static void iwl3945_rx_scan_complete_notif(struct iwl3945_priv *priv,
3352 cancel_delayed_work(&priv->scan_check); 3355 cancel_delayed_work(&priv->scan_check);
3353 3356
3354 IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n", 3357 IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n",
3355 (priv->scan_bands == 2) ? "2.4" : "5.2", 3358 (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) ?
3359 "2.4" : "5.2",
3356 jiffies_to_msecs(elapsed_jiffies 3360 jiffies_to_msecs(elapsed_jiffies
3357 (priv->scan_pass_start, jiffies))); 3361 (priv->scan_pass_start, jiffies)));
3358 3362
3359 /* Remove this scanned band from the list 3363 /* Remove this scanned band from the list of pending
3360 * of pending bands to scan */ 3364 * bands to scan, band G precedes A in order of scanning
3361 priv->scan_bands--; 3365 * as seen in iwl3945_bg_request_scan */
3366 if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ))
3367 priv->scan_bands &= ~BIT(IEEE80211_BAND_2GHZ);
3368 else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ))
3369 priv->scan_bands &= ~BIT(IEEE80211_BAND_5GHZ);
3362 3370
3363 /* If a request to abort was given, or the scan did not succeed 3371 /* If a request to abort was given, or the scan did not succeed
3364 * then we reset the scan state machine and terminate, 3372 * then we reset the scan state machine and terminate,
@@ -4972,7 +4980,7 @@ static int iwl3945_get_channels_for_scan(struct iwl3945_priv *priv,
4972 4980
4973 ch_info = iwl3945_get_channel_info(priv, band, scan_ch->channel); 4981 ch_info = iwl3945_get_channel_info(priv, band, scan_ch->channel);
4974 if (!is_channel_valid(ch_info)) { 4982 if (!is_channel_valid(ch_info)) {
4975 IWL_DEBUG_SCAN("Channel %d is INVALID for this SKU.\n", 4983 IWL_DEBUG_SCAN("Channel %d is INVALID for this band.\n",
4976 scan_ch->channel); 4984 scan_ch->channel);
4977 continue; 4985 continue;
4978 } 4986 }
@@ -6315,21 +6323,16 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
6315 6323
6316 /* flags + rate selection */ 6324 /* flags + rate selection */
6317 6325
6318 switch (priv->scan_bands) { 6326 if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) {
6319 case 2:
6320 scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK; 6327 scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK;
6321 scan->tx_cmd.rate = IWL_RATE_1M_PLCP; 6328 scan->tx_cmd.rate = IWL_RATE_1M_PLCP;
6322 scan->good_CRC_th = 0; 6329 scan->good_CRC_th = 0;
6323 band = IEEE80211_BAND_2GHZ; 6330 band = IEEE80211_BAND_2GHZ;
6324 break; 6331 } else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ)) {
6325
6326 case 1:
6327 scan->tx_cmd.rate = IWL_RATE_6M_PLCP; 6332 scan->tx_cmd.rate = IWL_RATE_6M_PLCP;
6328 scan->good_CRC_th = IWL_GOOD_CRC_TH; 6333 scan->good_CRC_th = IWL_GOOD_CRC_TH;
6329 band = IEEE80211_BAND_5GHZ; 6334 band = IEEE80211_BAND_5GHZ;
6330 break; 6335 } else {
6331
6332 default:
6333 IWL_WARNING("Invalid scan band count\n"); 6336 IWL_WARNING("Invalid scan band count\n");
6334 goto done; 6337 goto done;
6335 } 6338 }
@@ -6770,7 +6773,7 @@ static int iwl3945_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *co
6770 ch_info = iwl3945_get_channel_info(priv, conf->channel->band, 6773 ch_info = iwl3945_get_channel_info(priv, conf->channel->band,
6771 conf->channel->hw_value); 6774 conf->channel->hw_value);
6772 if (!is_channel_valid(ch_info)) { 6775 if (!is_channel_valid(ch_info)) {
6773 IWL_DEBUG_SCAN("Channel %d [%d] is INVALID for this SKU.\n", 6776 IWL_DEBUG_SCAN("Channel %d [%d] is INVALID for this band.\n",
6774 conf->channel->hw_value, conf->channel->band); 6777 conf->channel->hw_value, conf->channel->band);
6775 IWL_DEBUG_MAC80211("leave - invalid channel\n"); 6778 IWL_DEBUG_MAC80211("leave - invalid channel\n");
6776 spin_unlock_irqrestore(&priv->lock, flags); 6779 spin_unlock_irqrestore(&priv->lock, flags);
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index 883b42f7e998..5ed16ce78468 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -1774,7 +1774,10 @@ static int iwl4965_scan_initiate(struct iwl_priv *priv)
1774 } 1774 }
1775 1775
1776 IWL_DEBUG_INFO("Starting scan...\n"); 1776 IWL_DEBUG_INFO("Starting scan...\n");
1777 priv->scan_bands = 2; 1777 if (priv->cfg->sku & IWL_SKU_G)
1778 priv->scan_bands |= BIT(IEEE80211_BAND_2GHZ);
1779 if (priv->cfg->sku & IWL_SKU_A)
1780 priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
1778 set_bit(STATUS_SCANNING, &priv->status); 1781 set_bit(STATUS_SCANNING, &priv->status);
1779 priv->scan_start = jiffies; 1782 priv->scan_start = jiffies;
1780 priv->scan_pass_start = priv->scan_start; 1783 priv->scan_pass_start = priv->scan_start;
@@ -3023,8 +3026,9 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
3023 3026
3024 IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index); 3027 IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index);
3025 if (index != -1) { 3028 if (index != -1) {
3026 int freed = iwl4965_tx_queue_reclaim(priv, txq_id, index);
3027#ifdef CONFIG_IWL4965_HT 3029#ifdef CONFIG_IWL4965_HT
3030 int freed = iwl4965_tx_queue_reclaim(priv, txq_id, index);
3031
3028 if (tid != MAX_TID_COUNT) 3032 if (tid != MAX_TID_COUNT)
3029 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 3033 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
3030 if (iwl4965_queue_space(&txq->q) > txq->q.low_mark && 3034 if (iwl4965_queue_space(&txq->q) > txq->q.low_mark &&
@@ -3276,13 +3280,18 @@ static void iwl4965_rx_scan_complete_notif(struct iwl_priv *priv,
3276 cancel_delayed_work(&priv->scan_check); 3280 cancel_delayed_work(&priv->scan_check);
3277 3281
3278 IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n", 3282 IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n",
3279 (priv->scan_bands == 2) ? "2.4" : "5.2", 3283 (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) ?
3284 "2.4" : "5.2",
3280 jiffies_to_msecs(elapsed_jiffies 3285 jiffies_to_msecs(elapsed_jiffies
3281 (priv->scan_pass_start, jiffies))); 3286 (priv->scan_pass_start, jiffies)));
3282 3287
3283 /* Remove this scanned band from the list 3288 /* Remove this scanned band from the list of pending
3284 * of pending bands to scan */ 3289 * bands to scan, band G precedes A in order of scanning
3285 priv->scan_bands--; 3290 * as seen in iwl_bg_request_scan */
3291 if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ))
3292 priv->scan_bands &= ~BIT(IEEE80211_BAND_2GHZ);
3293 else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ))
3294 priv->scan_bands &= ~BIT(IEEE80211_BAND_5GHZ);
3286 3295
3287 /* If a request to abort was given, or the scan did not succeed 3296 /* If a request to abort was given, or the scan did not succeed
3288 * then we reset the scan state machine and terminate, 3297 * then we reset the scan state machine and terminate,
@@ -3292,7 +3301,7 @@ static void iwl4965_rx_scan_complete_notif(struct iwl_priv *priv,
3292 clear_bit(STATUS_SCAN_ABORTING, &priv->status); 3301 clear_bit(STATUS_SCAN_ABORTING, &priv->status);
3293 } else { 3302 } else {
3294 /* If there are more bands on this scan pass reschedule */ 3303 /* If there are more bands on this scan pass reschedule */
3295 if (priv->scan_bands > 0) 3304 if (priv->scan_bands)
3296 goto reschedule; 3305 goto reschedule;
3297 } 3306 }
3298 3307
@@ -4635,10 +4644,9 @@ static int iwl4965_get_channels_for_scan(struct iwl_priv *priv,
4635 4644
4636 scan_ch->channel = ieee80211_frequency_to_channel(channels[i].center_freq); 4645 scan_ch->channel = ieee80211_frequency_to_channel(channels[i].center_freq);
4637 4646
4638 ch_info = iwl_get_channel_info(priv, band, 4647 ch_info = iwl_get_channel_info(priv, band, scan_ch->channel);
4639 scan_ch->channel);
4640 if (!is_channel_valid(ch_info)) { 4648 if (!is_channel_valid(ch_info)) {
4641 IWL_DEBUG_SCAN("Channel %d is INVALID for this SKU.\n", 4649 IWL_DEBUG_SCAN("Channel %d is INVALID for this band.\n",
4642 scan_ch->channel); 4650 scan_ch->channel);
4643 continue; 4651 continue;
4644 } 4652 }
@@ -5830,8 +5838,7 @@ static void iwl4965_bg_request_scan(struct work_struct *data)
5830 scan->tx_cmd.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE; 5838 scan->tx_cmd.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE;
5831 5839
5832 5840
5833 switch (priv->scan_bands) { 5841 if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) {
5834 case 2:
5835 scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK; 5842 scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK;
5836 scan->tx_cmd.rate_n_flags = 5843 scan->tx_cmd.rate_n_flags =
5837 iwl4965_hw_set_rate_n_flags(IWL_RATE_1M_PLCP, 5844 iwl4965_hw_set_rate_n_flags(IWL_RATE_1M_PLCP,
@@ -5839,17 +5846,13 @@ static void iwl4965_bg_request_scan(struct work_struct *data)
5839 5846
5840 scan->good_CRC_th = 0; 5847 scan->good_CRC_th = 0;
5841 band = IEEE80211_BAND_2GHZ; 5848 band = IEEE80211_BAND_2GHZ;
5842 break; 5849 } else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ)) {
5843
5844 case 1:
5845 scan->tx_cmd.rate_n_flags = 5850 scan->tx_cmd.rate_n_flags =
5846 iwl4965_hw_set_rate_n_flags(IWL_RATE_6M_PLCP, 5851 iwl4965_hw_set_rate_n_flags(IWL_RATE_6M_PLCP,
5847 RATE_MCS_ANT_B_MSK); 5852 RATE_MCS_ANT_B_MSK);
5848 scan->good_CRC_th = IWL_GOOD_CRC_TH; 5853 scan->good_CRC_th = IWL_GOOD_CRC_TH;
5849 band = IEEE80211_BAND_5GHZ; 5854 band = IEEE80211_BAND_5GHZ;
5850 break; 5855 } else {
5851
5852 default:
5853 IWL_WARNING("Invalid scan band count\n"); 5856 IWL_WARNING("Invalid scan band count\n");
5854 goto done; 5857 goto done;
5855 } 5858 }
diff --git a/drivers/net/wireless/prism54/islpci_eth.c b/drivers/net/wireless/prism54/islpci_eth.c
index 762e85bef55d..e43bae97ed8f 100644
--- a/drivers/net/wireless/prism54/islpci_eth.c
+++ b/drivers/net/wireless/prism54/islpci_eth.c
@@ -290,7 +290,7 @@ islpci_monitor_rx(islpci_private *priv, struct sk_buff **skb)
290 290
291 avs->version = cpu_to_be32(P80211CAPTURE_VERSION); 291 avs->version = cpu_to_be32(P80211CAPTURE_VERSION);
292 avs->length = cpu_to_be32(sizeof (struct avs_80211_1_header)); 292 avs->length = cpu_to_be32(sizeof (struct avs_80211_1_header));
293 avs->mactime = cpu_to_be64(le64_to_cpu(clock)); 293 avs->mactime = cpu_to_be64(clock);
294 avs->hosttime = cpu_to_be64(jiffies); 294 avs->hosttime = cpu_to_be64(jiffies);
295 avs->phytype = cpu_to_be32(6); /*OFDM: 6 for (g), 8 for (a) */ 295 avs->phytype = cpu_to_be32(6); /*OFDM: 6 for (g), 8 for (a) */
296 avs->channel = cpu_to_be32(channel_of_freq(freq)); 296 avs->channel = cpu_to_be32(channel_of_freq(freq));
diff --git a/drivers/net/wireless/rt2x00/Kconfig b/drivers/net/wireless/rt2x00/Kconfig
index ab1029e79884..2d611876bbe0 100644
--- a/drivers/net/wireless/rt2x00/Kconfig
+++ b/drivers/net/wireless/rt2x00/Kconfig
@@ -32,12 +32,13 @@ config RT2X00_LIB_FIRMWARE
32config RT2X00_LIB_RFKILL 32config RT2X00_LIB_RFKILL
33 boolean 33 boolean
34 depends on RT2X00_LIB 34 depends on RT2X00_LIB
35 depends on INPUT
35 select RFKILL 36 select RFKILL
36 select INPUT_POLLDEV 37 select INPUT_POLLDEV
37 38
38config RT2X00_LIB_LEDS 39config RT2X00_LIB_LEDS
39 boolean 40 boolean
40 depends on RT2X00_LIB 41 depends on RT2X00_LIB && NEW_LEDS
41 42
42config RT2400PCI 43config RT2400PCI
43 tristate "Ralink rt2400 pci/pcmcia support" 44 tristate "Ralink rt2400 pci/pcmcia support"
@@ -51,7 +52,7 @@ config RT2400PCI
51 52
52config RT2400PCI_RFKILL 53config RT2400PCI_RFKILL
53 bool "RT2400 rfkill support" 54 bool "RT2400 rfkill support"
54 depends on RT2400PCI 55 depends on RT2400PCI && INPUT
55 select RT2X00_LIB_RFKILL 56 select RT2X00_LIB_RFKILL
56 ---help--- 57 ---help---
57 This adds support for integrated rt2400 devices that feature a 58 This adds support for integrated rt2400 devices that feature a
@@ -60,7 +61,7 @@ config RT2400PCI_RFKILL
60 61
61config RT2400PCI_LEDS 62config RT2400PCI_LEDS
62 bool "RT2400 leds support" 63 bool "RT2400 leds support"
63 depends on RT2400PCI 64 depends on RT2400PCI && NEW_LEDS
64 select LEDS_CLASS 65 select LEDS_CLASS
65 select RT2X00_LIB_LEDS 66 select RT2X00_LIB_LEDS
66 ---help--- 67 ---help---
@@ -78,7 +79,7 @@ config RT2500PCI
78 79
79config RT2500PCI_RFKILL 80config RT2500PCI_RFKILL
80 bool "RT2500 rfkill support" 81 bool "RT2500 rfkill support"
81 depends on RT2500PCI 82 depends on RT2500PCI && INPUT
82 select RT2X00_LIB_RFKILL 83 select RT2X00_LIB_RFKILL
83 ---help--- 84 ---help---
84 This adds support for integrated rt2500 devices that feature a 85 This adds support for integrated rt2500 devices that feature a
@@ -87,7 +88,7 @@ config RT2500PCI_RFKILL
87 88
88config RT2500PCI_LEDS 89config RT2500PCI_LEDS
89 bool "RT2500 leds support" 90 bool "RT2500 leds support"
90 depends on RT2500PCI 91 depends on RT2500PCI && NEW_LEDS
91 select LEDS_CLASS 92 select LEDS_CLASS
92 select RT2X00_LIB_LEDS 93 select RT2X00_LIB_LEDS
93 ---help--- 94 ---help---
@@ -107,7 +108,7 @@ config RT61PCI
107 108
108config RT61PCI_RFKILL 109config RT61PCI_RFKILL
109 bool "RT61 rfkill support" 110 bool "RT61 rfkill support"
110 depends on RT61PCI 111 depends on RT61PCI && INPUT
111 select RT2X00_LIB_RFKILL 112 select RT2X00_LIB_RFKILL
112 ---help--- 113 ---help---
113 This adds support for integrated rt61 devices that feature a 114 This adds support for integrated rt61 devices that feature a
@@ -116,7 +117,7 @@ config RT61PCI_RFKILL
116 117
117config RT61PCI_LEDS 118config RT61PCI_LEDS
118 bool "RT61 leds support" 119 bool "RT61 leds support"
119 depends on RT61PCI 120 depends on RT61PCI && NEW_LEDS
120 select LEDS_CLASS 121 select LEDS_CLASS
121 select RT2X00_LIB_LEDS 122 select RT2X00_LIB_LEDS
122 ---help--- 123 ---help---
@@ -133,7 +134,7 @@ config RT2500USB
133 134
134config RT2500USB_LEDS 135config RT2500USB_LEDS
135 bool "RT2500 leds support" 136 bool "RT2500 leds support"
136 depends on RT2500USB 137 depends on RT2500USB && NEW_LEDS
137 select LEDS_CLASS 138 select LEDS_CLASS
138 select RT2X00_LIB_LEDS 139 select RT2X00_LIB_LEDS
139 ---help--- 140 ---help---
@@ -152,7 +153,7 @@ config RT73USB
152 153
153config RT73USB_LEDS 154config RT73USB_LEDS
154 bool "RT73 leds support" 155 bool "RT73 leds support"
155 depends on RT73USB 156 depends on RT73USB && NEW_LEDS
156 select LEDS_CLASS 157 select LEDS_CLASS
157 select RT2X00_LIB_LEDS 158 select RT2X00_LIB_LEDS
158 ---help--- 159 ---help---
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index fdbd0ef2be4b..61e59c17a60a 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -138,11 +138,8 @@ static void rt2500usb_bbp_write(struct rt2x00_dev *rt2x00dev,
138 * Wait until the BBP becomes ready. 138 * Wait until the BBP becomes ready.
139 */ 139 */
140 reg = rt2500usb_bbp_check(rt2x00dev); 140 reg = rt2500usb_bbp_check(rt2x00dev);
141 if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) { 141 if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
142 ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n"); 142 goto exit_fail;
143 mutex_unlock(&rt2x00dev->usb_cache_mutex);
144 return;
145 }
146 143
147 /* 144 /*
148 * Write the data into the BBP. 145 * Write the data into the BBP.
@@ -155,6 +152,13 @@ static void rt2500usb_bbp_write(struct rt2x00_dev *rt2x00dev,
155 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg); 152 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg);
156 153
157 mutex_unlock(&rt2x00dev->usb_cache_mutex); 154 mutex_unlock(&rt2x00dev->usb_cache_mutex);
155
156 return;
157
158exit_fail:
159 mutex_unlock(&rt2x00dev->usb_cache_mutex);
160
161 ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n");
158} 162}
159 163
160static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev, 164static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev,
@@ -168,10 +172,8 @@ static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev,
168 * Wait until the BBP becomes ready. 172 * Wait until the BBP becomes ready.
169 */ 173 */
170 reg = rt2500usb_bbp_check(rt2x00dev); 174 reg = rt2500usb_bbp_check(rt2x00dev);
171 if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) { 175 if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
172 ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n"); 176 goto exit_fail;
173 return;
174 }
175 177
176 /* 178 /*
177 * Write the request into the BBP. 179 * Write the request into the BBP.
@@ -186,17 +188,21 @@ static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev,
186 * Wait until the BBP becomes ready. 188 * Wait until the BBP becomes ready.
187 */ 189 */
188 reg = rt2500usb_bbp_check(rt2x00dev); 190 reg = rt2500usb_bbp_check(rt2x00dev);
189 if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) { 191 if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
190 ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n"); 192 goto exit_fail;
191 *value = 0xff;
192 mutex_unlock(&rt2x00dev->usb_cache_mutex);
193 return;
194 }
195 193
196 rt2500usb_register_read_lock(rt2x00dev, PHY_CSR7, &reg); 194 rt2500usb_register_read_lock(rt2x00dev, PHY_CSR7, &reg);
197 *value = rt2x00_get_field16(reg, PHY_CSR7_DATA); 195 *value = rt2x00_get_field16(reg, PHY_CSR7_DATA);
198 196
199 mutex_unlock(&rt2x00dev->usb_cache_mutex); 197 mutex_unlock(&rt2x00dev->usb_cache_mutex);
198
199 return;
200
201exit_fail:
202 mutex_unlock(&rt2x00dev->usb_cache_mutex);
203
204 ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
205 *value = 0xff;
200} 206}
201 207
202static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev, 208static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev,
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 611d98320593..b4bf1e09cf9a 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -821,6 +821,7 @@ struct rt2x00_dev {
821 /* 821 /*
822 * Scheduled work. 822 * Scheduled work.
823 */ 823 */
824 struct workqueue_struct *workqueue;
824 struct work_struct intf_work; 825 struct work_struct intf_work;
825 struct work_struct filter_work; 826 struct work_struct filter_work;
826 827
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 2673d568bcac..c997d4f28ab3 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -75,7 +75,7 @@ static void rt2x00lib_start_link_tuner(struct rt2x00_dev *rt2x00dev)
75 75
76 rt2x00lib_reset_link_tuner(rt2x00dev); 76 rt2x00lib_reset_link_tuner(rt2x00dev);
77 77
78 queue_delayed_work(rt2x00dev->hw->workqueue, 78 queue_delayed_work(rt2x00dev->workqueue,
79 &rt2x00dev->link.work, LINK_TUNE_INTERVAL); 79 &rt2x00dev->link.work, LINK_TUNE_INTERVAL);
80} 80}
81 81
@@ -137,14 +137,6 @@ void rt2x00lib_disable_radio(struct rt2x00_dev *rt2x00dev)
137 return; 137 return;
138 138
139 /* 139 /*
140 * Stop all scheduled work.
141 */
142 if (work_pending(&rt2x00dev->intf_work))
143 cancel_work_sync(&rt2x00dev->intf_work);
144 if (work_pending(&rt2x00dev->filter_work))
145 cancel_work_sync(&rt2x00dev->filter_work);
146
147 /*
148 * Stop the TX queues. 140 * Stop the TX queues.
149 */ 141 */
150 ieee80211_stop_queues(rt2x00dev->hw); 142 ieee80211_stop_queues(rt2x00dev->hw);
@@ -398,8 +390,8 @@ static void rt2x00lib_link_tuner(struct work_struct *work)
398 * Increase tuner counter, and reschedule the next link tuner run. 390 * Increase tuner counter, and reschedule the next link tuner run.
399 */ 391 */
400 rt2x00dev->link.count++; 392 rt2x00dev->link.count++;
401 queue_delayed_work(rt2x00dev->hw->workqueue, &rt2x00dev->link.work, 393 queue_delayed_work(rt2x00dev->workqueue,
402 LINK_TUNE_INTERVAL); 394 &rt2x00dev->link.work, LINK_TUNE_INTERVAL);
403} 395}
404 396
405static void rt2x00lib_packetfilter_scheduled(struct work_struct *work) 397static void rt2x00lib_packetfilter_scheduled(struct work_struct *work)
@@ -433,6 +425,15 @@ static void rt2x00lib_intf_scheduled_iter(void *data, u8 *mac,
433 425
434 spin_unlock(&intf->lock); 426 spin_unlock(&intf->lock);
435 427
428 /*
429 * It is possible the radio was disabled while the work had been
430 * scheduled. If that happens we should return here immediately,
431 * note that in the spinlock protected area above the delayed_flags
432 * have been cleared correctly.
433 */
434 if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
435 return;
436
436 if (delayed_flags & DELAYED_UPDATE_BEACON) { 437 if (delayed_flags & DELAYED_UPDATE_BEACON) {
437 skb = ieee80211_beacon_get(rt2x00dev->hw, vif, &control); 438 skb = ieee80211_beacon_get(rt2x00dev->hw, vif, &control);
438 if (skb && rt2x00dev->ops->hw->beacon_update(rt2x00dev->hw, 439 if (skb && rt2x00dev->ops->hw->beacon_update(rt2x00dev->hw,
@@ -441,7 +442,7 @@ static void rt2x00lib_intf_scheduled_iter(void *data, u8 *mac,
441 } 442 }
442 443
443 if (delayed_flags & DELAYED_CONFIG_ERP) 444 if (delayed_flags & DELAYED_CONFIG_ERP)
444 rt2x00lib_config_erp(rt2x00dev, intf, &intf->conf); 445 rt2x00lib_config_erp(rt2x00dev, intf, &conf);
445 446
446 if (delayed_flags & DELAYED_LED_ASSOC) 447 if (delayed_flags & DELAYED_LED_ASSOC)
447 rt2x00leds_led_assoc(rt2x00dev, !!rt2x00dev->intf_associated); 448 rt2x00leds_led_assoc(rt2x00dev, !!rt2x00dev->intf_associated);
@@ -487,7 +488,7 @@ void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev)
487 rt2x00lib_beacondone_iter, 488 rt2x00lib_beacondone_iter,
488 rt2x00dev); 489 rt2x00dev);
489 490
490 queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work); 491 queue_work(rt2x00dev->workqueue, &rt2x00dev->intf_work);
491} 492}
492EXPORT_SYMBOL_GPL(rt2x00lib_beacondone); 493EXPORT_SYMBOL_GPL(rt2x00lib_beacondone);
493 494
@@ -1130,6 +1131,10 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
1130 /* 1131 /*
1131 * Initialize configuration work. 1132 * Initialize configuration work.
1132 */ 1133 */
1134 rt2x00dev->workqueue = create_singlethread_workqueue("rt2x00lib");
1135 if (!rt2x00dev->workqueue)
1136 goto exit;
1137
1133 INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled); 1138 INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled);
1134 INIT_WORK(&rt2x00dev->filter_work, rt2x00lib_packetfilter_scheduled); 1139 INIT_WORK(&rt2x00dev->filter_work, rt2x00lib_packetfilter_scheduled);
1135 INIT_DELAYED_WORK(&rt2x00dev->link.work, rt2x00lib_link_tuner); 1140 INIT_DELAYED_WORK(&rt2x00dev->link.work, rt2x00lib_link_tuner);
@@ -1190,6 +1195,13 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
1190 rt2x00leds_unregister(rt2x00dev); 1195 rt2x00leds_unregister(rt2x00dev);
1191 1196
1192 /* 1197 /*
1198 * Stop all queued work. Note that most tasks will already be halted
1199 * during rt2x00lib_disable_radio() and rt2x00lib_uninitialize().
1200 */
1201 flush_workqueue(rt2x00dev->workqueue);
1202 destroy_workqueue(rt2x00dev->workqueue);
1203
1204 /*
1193 * Free ieee80211_hw memory. 1205 * Free ieee80211_hw memory.
1194 */ 1206 */
1195 rt2x00lib_remove_hw(rt2x00dev); 1207 rt2x00lib_remove_hw(rt2x00dev);
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
index 87e280a21971..9cb023edd2e9 100644
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
@@ -428,7 +428,7 @@ void rt2x00mac_configure_filter(struct ieee80211_hw *hw,
428 if (!test_bit(DRIVER_REQUIRE_SCHEDULED, &rt2x00dev->flags)) 428 if (!test_bit(DRIVER_REQUIRE_SCHEDULED, &rt2x00dev->flags))
429 rt2x00dev->ops->lib->config_filter(rt2x00dev, *total_flags); 429 rt2x00dev->ops->lib->config_filter(rt2x00dev, *total_flags);
430 else 430 else
431 queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->filter_work); 431 queue_work(rt2x00dev->workqueue, &rt2x00dev->filter_work);
432} 432}
433EXPORT_SYMBOL_GPL(rt2x00mac_configure_filter); 433EXPORT_SYMBOL_GPL(rt2x00mac_configure_filter);
434 434
@@ -509,7 +509,7 @@ void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
509 memcpy(&intf->conf, bss_conf, sizeof(*bss_conf)); 509 memcpy(&intf->conf, bss_conf, sizeof(*bss_conf));
510 if (delayed) { 510 if (delayed) {
511 intf->delayed_flags |= delayed; 511 intf->delayed_flags |= delayed;
512 queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work); 512 queue_work(rt2x00dev->workqueue, &rt2x00dev->intf_work);
513 } 513 }
514 spin_unlock(&intf->lock); 514 spin_unlock(&intf->lock);
515} 515}
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
index 971af2546b59..60893de3bf8f 100644
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
@@ -412,8 +412,7 @@ int rt2x00pci_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
412 if (pci_set_mwi(pci_dev)) 412 if (pci_set_mwi(pci_dev))
413 ERROR_PROBE("MWI not available.\n"); 413 ERROR_PROBE("MWI not available.\n");
414 414
415 if (pci_set_dma_mask(pci_dev, DMA_64BIT_MASK) && 415 if (pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
416 pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
417 ERROR_PROBE("PCI DMA not supported.\n"); 416 ERROR_PROBE("PCI DMA not supported.\n");
418 retval = -EIO; 417 retval = -EIO;
419 goto exit_disable_device; 418 goto exit_disable_device;
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index 5a331674dcb2..e5ceae805b57 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -362,6 +362,12 @@ void rt2x00usb_disable_radio(struct rt2x00_dev *rt2x00dev)
362 } 362 }
363 } 363 }
364 364
365 /*
366 * Kill guardian urb (if required by driver).
367 */
368 if (!test_bit(DRIVER_REQUIRE_BEACON_GUARD, &rt2x00dev->flags))
369 return;
370
365 for (i = 0; i < rt2x00dev->bcn->limit; i++) { 371 for (i = 0; i < rt2x00dev->bcn->limit; i++) {
366 priv_bcn = rt2x00dev->bcn->entries[i].priv_data; 372 priv_bcn = rt2x00dev->bcn->entries[i].priv_data;
367 usb_kill_urb(priv_bcn->urb); 373 usb_kill_urb(priv_bcn->urb);
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index da19a3a91f4d..83cc0147f698 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -134,11 +134,8 @@ static void rt73usb_bbp_write(struct rt2x00_dev *rt2x00dev,
134 * Wait until the BBP becomes ready. 134 * Wait until the BBP becomes ready.
135 */ 135 */
136 reg = rt73usb_bbp_check(rt2x00dev); 136 reg = rt73usb_bbp_check(rt2x00dev);
137 if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) { 137 if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
138 ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n"); 138 goto exit_fail;
139 mutex_unlock(&rt2x00dev->usb_cache_mutex);
140 return;
141 }
142 139
143 /* 140 /*
144 * Write the data into the BBP. 141 * Write the data into the BBP.
@@ -151,6 +148,13 @@ static void rt73usb_bbp_write(struct rt2x00_dev *rt2x00dev,
151 148
152 rt73usb_register_write_lock(rt2x00dev, PHY_CSR3, reg); 149 rt73usb_register_write_lock(rt2x00dev, PHY_CSR3, reg);
153 mutex_unlock(&rt2x00dev->usb_cache_mutex); 150 mutex_unlock(&rt2x00dev->usb_cache_mutex);
151
152 return;
153
154exit_fail:
155 mutex_unlock(&rt2x00dev->usb_cache_mutex);
156
157 ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n");
154} 158}
155 159
156static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev, 160static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev,
@@ -164,11 +168,8 @@ static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev,
164 * Wait until the BBP becomes ready. 168 * Wait until the BBP becomes ready.
165 */ 169 */
166 reg = rt73usb_bbp_check(rt2x00dev); 170 reg = rt73usb_bbp_check(rt2x00dev);
167 if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) { 171 if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
168 ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n"); 172 goto exit_fail;
169 mutex_unlock(&rt2x00dev->usb_cache_mutex);
170 return;
171 }
172 173
173 /* 174 /*
174 * Write the request into the BBP. 175 * Write the request into the BBP.
@@ -184,14 +185,19 @@ static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev,
184 * Wait until the BBP becomes ready. 185 * Wait until the BBP becomes ready.
185 */ 186 */
186 reg = rt73usb_bbp_check(rt2x00dev); 187 reg = rt73usb_bbp_check(rt2x00dev);
187 if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) { 188 if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
188 ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n"); 189 goto exit_fail;
189 *value = 0xff;
190 return;
191 }
192 190
193 *value = rt2x00_get_field32(reg, PHY_CSR3_VALUE); 191 *value = rt2x00_get_field32(reg, PHY_CSR3_VALUE);
194 mutex_unlock(&rt2x00dev->usb_cache_mutex); 192 mutex_unlock(&rt2x00dev->usb_cache_mutex);
193
194 return;
195
196exit_fail:
197 mutex_unlock(&rt2x00dev->usb_cache_mutex);
198
199 ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
200 *value = 0xff;
195} 201}
196 202
197static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev, 203static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev,
@@ -2131,6 +2137,7 @@ static struct usb_device_id rt73usb_device_table[] = {
2131 /* D-Link */ 2137 /* D-Link */
2132 { USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) }, 2138 { USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) },
2133 { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) }, 2139 { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) },
2140 { USB_DEVICE(0x07d1, 0x3c06), USB_DEVICE_DATA(&rt73usb_ops) },
2134 { USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) }, 2141 { USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) },
2135 /* Gemtek */ 2142 /* Gemtek */
2136 { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) }, 2143 { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) },
diff --git a/drivers/pci/access.c b/drivers/pci/access.c
index ec8f7002b09d..39bb96b413ef 100644
--- a/drivers/pci/access.c
+++ b/drivers/pci/access.c
@@ -178,8 +178,7 @@ static int pci_vpd_pci22_read(struct pci_dev *dev, int pos, int size,
178 int ret; 178 int ret;
179 int begin, end, i; 179 int begin, end, i;
180 180
181 if (pos < 0 || pos > PCI_VPD_PCI22_SIZE || 181 if (pos < 0 || pos > vpd->base.len || size > vpd->base.len - pos)
182 size > PCI_VPD_PCI22_SIZE - pos)
183 return -EINVAL; 182 return -EINVAL;
184 if (size == 0) 183 if (size == 0)
185 return 0; 184 return 0;
@@ -223,8 +222,8 @@ static int pci_vpd_pci22_write(struct pci_dev *dev, int pos, int size,
223 u32 val; 222 u32 val;
224 int ret; 223 int ret;
225 224
226 if (pos < 0 || pos > PCI_VPD_PCI22_SIZE || pos & 3 || 225 if (pos < 0 || pos > vpd->base.len || pos & 3 ||
227 size > PCI_VPD_PCI22_SIZE - pos || size < 4) 226 size > vpd->base.len - pos || size < 4)
228 return -EINVAL; 227 return -EINVAL;
229 228
230 val = (u8) *buf++; 229 val = (u8) *buf++;
@@ -255,11 +254,6 @@ out:
255 return 4; 254 return 4;
256} 255}
257 256
258static int pci_vpd_pci22_get_size(struct pci_dev *dev)
259{
260 return PCI_VPD_PCI22_SIZE;
261}
262
263static void pci_vpd_pci22_release(struct pci_dev *dev) 257static void pci_vpd_pci22_release(struct pci_dev *dev)
264{ 258{
265 kfree(container_of(dev->vpd, struct pci_vpd_pci22, base)); 259 kfree(container_of(dev->vpd, struct pci_vpd_pci22, base));
@@ -268,7 +262,6 @@ static void pci_vpd_pci22_release(struct pci_dev *dev)
268static struct pci_vpd_ops pci_vpd_pci22_ops = { 262static struct pci_vpd_ops pci_vpd_pci22_ops = {
269 .read = pci_vpd_pci22_read, 263 .read = pci_vpd_pci22_read,
270 .write = pci_vpd_pci22_write, 264 .write = pci_vpd_pci22_write,
271 .get_size = pci_vpd_pci22_get_size,
272 .release = pci_vpd_pci22_release, 265 .release = pci_vpd_pci22_release,
273}; 266};
274 267
@@ -284,6 +277,7 @@ int pci_vpd_pci22_init(struct pci_dev *dev)
284 if (!vpd) 277 if (!vpd)
285 return -ENOMEM; 278 return -ENOMEM;
286 279
280 vpd->base.len = PCI_VPD_PCI22_SIZE;
287 vpd->base.ops = &pci_vpd_pci22_ops; 281 vpd->base.ops = &pci_vpd_pci22_ops;
288 spin_lock_init(&vpd->lock); 282 spin_lock_init(&vpd->lock);
289 vpd->cap = cap; 283 vpd->cap = cap;
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index 648596d469f6..91156f85a926 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -700,9 +700,10 @@ cleanup_p2p_bridge(acpi_handle handle, u32 lvl, void *context, void **rv)
700 acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, 700 acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1,
701 cleanup_p2p_bridge, NULL, NULL); 701 cleanup_p2p_bridge, NULL, NULL);
702 702
703 if (!(bridge = acpiphp_handle_to_bridge(handle))) 703 bridge = acpiphp_handle_to_bridge(handle);
704 return AE_OK; 704 if (bridge)
705 cleanup_bridge(bridge); 705 cleanup_bridge(bridge);
706
706 return AE_OK; 707 return AE_OK;
707} 708}
708 709
@@ -715,9 +716,19 @@ static void remove_bridge(acpi_handle handle)
715 acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 716 acpi_walk_namespace(ACPI_TYPE_DEVICE, handle,
716 (u32)1, cleanup_p2p_bridge, NULL, NULL); 717 (u32)1, cleanup_p2p_bridge, NULL, NULL);
717 718
719 /*
720 * On root bridges with hotplug slots directly underneath (ie,
721 * no p2p bridge inbetween), we call cleanup_bridge().
722 *
723 * The else clause cleans up root bridges that either had no
724 * hotplug slots at all, or had a p2p bridge underneath.
725 */
718 bridge = acpiphp_handle_to_bridge(handle); 726 bridge = acpiphp_handle_to_bridge(handle);
719 if (bridge) 727 if (bridge)
720 cleanup_bridge(bridge); 728 cleanup_bridge(bridge);
729 else
730 acpi_remove_notify_handler(handle, ACPI_SYSTEM_NOTIFY,
731 handle_hotplug_event_bridge);
721} 732}
722 733
723static struct pci_dev * get_apic_pci_info(acpi_handle handle) 734static struct pci_dev * get_apic_pci_info(acpi_handle handle)
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index 6f3c7446c329..9c718583a237 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -736,9 +736,9 @@ int __must_check pci_create_sysfs_dev_files (struct pci_dev *pdev)
736 attr = kzalloc(sizeof(*attr), GFP_ATOMIC); 736 attr = kzalloc(sizeof(*attr), GFP_ATOMIC);
737 if (attr) { 737 if (attr) {
738 pdev->vpd->attr = attr; 738 pdev->vpd->attr = attr;
739 attr->size = pdev->vpd->ops->get_size(pdev); 739 attr->size = pdev->vpd->len;
740 attr->attr.name = "vpd"; 740 attr->attr.name = "vpd";
741 attr->attr.mode = S_IRUGO | S_IWUSR; 741 attr->attr.mode = S_IRUSR | S_IWUSR;
742 attr->read = pci_read_vpd; 742 attr->read = pci_read_vpd;
743 attr->write = pci_write_vpd; 743 attr->write = pci_write_vpd;
744 retval = sysfs_create_bin_file(&pdev->dev.kobj, attr); 744 retval = sysfs_create_bin_file(&pdev->dev.kobj, attr);
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 0a497c1b4227..00408c97e5fc 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -21,11 +21,11 @@ extern int pci_user_write_config_dword(struct pci_dev *dev, int where, u32 val);
21struct pci_vpd_ops { 21struct pci_vpd_ops {
22 int (*read)(struct pci_dev *dev, int pos, int size, char *buf); 22 int (*read)(struct pci_dev *dev, int pos, int size, char *buf);
23 int (*write)(struct pci_dev *dev, int pos, int size, const char *buf); 23 int (*write)(struct pci_dev *dev, int pos, int size, const char *buf);
24 int (*get_size)(struct pci_dev *dev);
25 void (*release)(struct pci_dev *dev); 24 void (*release)(struct pci_dev *dev);
26}; 25};
27 26
28struct pci_vpd { 27struct pci_vpd {
28 unsigned int len;
29 struct pci_vpd_ops *ops; 29 struct pci_vpd_ops *ops;
30 struct bin_attribute *attr; /* descriptor for sysfs VPD entry */ 30 struct bin_attribute *attr; /* descriptor for sysfs VPD entry */
31}; 31};
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index dabb563f51d9..338a3f94b4d4 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1670,6 +1670,48 @@ static void __devinit quirk_via_cx700_pci_parking_caching(struct pci_dev *dev)
1670} 1670}
1671DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_VIA, 0x324e, quirk_via_cx700_pci_parking_caching); 1671DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_VIA, 0x324e, quirk_via_cx700_pci_parking_caching);
1672 1672
1673/*
1674 * For Broadcom 5706, 5708, 5709 rev. A nics, any read beyond the
1675 * VPD end tag will hang the device. This problem was initially
1676 * observed when a vpd entry was created in sysfs
1677 * ('/sys/bus/pci/devices/<id>/vpd'). A read to this sysfs entry
1678 * will dump 32k of data. Reading a full 32k will cause an access
1679 * beyond the VPD end tag causing the device to hang. Once the device
1680 * is hung, the bnx2 driver will not be able to reset the device.
1681 * We believe that it is legal to read beyond the end tag and
1682 * therefore the solution is to limit the read/write length.
1683 */
1684static void __devinit quirk_brcm_570x_limit_vpd(struct pci_dev *dev)
1685{
1686 /* Only disable the VPD capability for 5706, 5708, and 5709 rev. A */
1687 if ((dev->device == PCI_DEVICE_ID_NX2_5706) ||
1688 (dev->device == PCI_DEVICE_ID_NX2_5708) ||
1689 ((dev->device == PCI_DEVICE_ID_NX2_5709) &&
1690 (dev->revision & 0xf0) == 0x0)) {
1691 if (dev->vpd)
1692 dev->vpd->len = 0x80;
1693 }
1694}
1695
1696DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM,
1697 PCI_DEVICE_ID_NX2_5706,
1698 quirk_brcm_570x_limit_vpd);
1699DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM,
1700 PCI_DEVICE_ID_NX2_5706S,
1701 quirk_brcm_570x_limit_vpd);
1702DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM,
1703 PCI_DEVICE_ID_NX2_5708,
1704 quirk_brcm_570x_limit_vpd);
1705DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM,
1706 PCI_DEVICE_ID_NX2_5708S,
1707 quirk_brcm_570x_limit_vpd);
1708DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM,
1709 PCI_DEVICE_ID_NX2_5709,
1710 quirk_brcm_570x_limit_vpd);
1711DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM,
1712 PCI_DEVICE_ID_NX2_5709S,
1713 quirk_brcm_570x_limit_vpd);
1714
1673#ifdef CONFIG_PCI_MSI 1715#ifdef CONFIG_PCI_MSI
1674/* Some chipsets do not support MSI. We cannot easily rely on setting 1716/* Some chipsets do not support MSI. We cannot easily rely on setting
1675 * PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually 1717 * PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually
@@ -1685,6 +1727,7 @@ static void __init quirk_disable_all_msi(struct pci_dev *dev)
1685DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_disable_all_msi); 1727DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_disable_all_msi);
1686DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_all_msi); 1728DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_all_msi);
1687DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi); 1729DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi);
1730DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3336, quirk_disable_all_msi);
1688DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi); 1731DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi);
1689 1732
1690/* Disable MSI on chipsets that are known to not support it */ 1733/* Disable MSI on chipsets that are known to not support it */
diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
index 7e3ad4f3b343..58b7336640ff 100644
--- a/drivers/rtc/interface.c
+++ b/drivers/rtc/interface.c
@@ -126,12 +126,25 @@ int rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)
126 int err; 126 int err;
127 struct rtc_time before, now; 127 struct rtc_time before, now;
128 int first_time = 1; 128 int first_time = 1;
129 unsigned long t_now, t_alm;
130 enum { none, day, month, year } missing = none;
131 unsigned days;
129 132
130 /* The lower level RTC driver may not be capable of filling 133 /* The lower level RTC driver may return -1 in some fields,
131 * in all fields of the rtc_time struct (eg. rtc-cmos), 134 * creating invalid alarm->time values, for reasons like:
132 * and so might instead return -1 in some fields. 135 *
133 * We deal with that here by grabbing a current RTC timestamp 136 * - The hardware may not be capable of filling them in;
134 * and using values from that for any missing (-1) values. 137 * many alarms match only on time-of-day fields, not
138 * day/month/year calendar data.
139 *
140 * - Some hardware uses illegal values as "wildcard" match
141 * values, which non-Linux firmware (like a BIOS) may try
142 * to set up as e.g. "alarm 15 minutes after each hour".
143 * Linux uses only oneshot alarms.
144 *
145 * When we see that here, we deal with it by using values from
146 * a current RTC timestamp for any missing (-1) values. The
147 * RTC driver prevents "periodic alarm" modes.
135 * 148 *
136 * But this can be racey, because some fields of the RTC timestamp 149 * But this can be racey, because some fields of the RTC timestamp
137 * may have wrapped in the interval since we read the RTC alarm, 150 * may have wrapped in the interval since we read the RTC alarm,
@@ -174,6 +187,10 @@ int rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)
174 if (!alarm->enabled) 187 if (!alarm->enabled)
175 return 0; 188 return 0;
176 189
190 /* full-function RTCs won't have such missing fields */
191 if (rtc_valid_tm(&alarm->time) == 0)
192 return 0;
193
177 /* get the "after" timestamp, to detect wrapped fields */ 194 /* get the "after" timestamp, to detect wrapped fields */
178 err = rtc_read_time(rtc, &now); 195 err = rtc_read_time(rtc, &now);
179 if (err < 0) 196 if (err < 0)
@@ -183,22 +200,85 @@ int rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)
183 } while ( before.tm_min != now.tm_min 200 } while ( before.tm_min != now.tm_min
184 || before.tm_hour != now.tm_hour 201 || before.tm_hour != now.tm_hour
185 || before.tm_mon != now.tm_mon 202 || before.tm_mon != now.tm_mon
186 || before.tm_year != now.tm_year 203 || before.tm_year != now.tm_year);
187 || before.tm_isdst != now.tm_isdst);
188 204
189 /* Fill in any missing alarm fields using the timestamp */ 205 /* Fill in the missing alarm fields using the timestamp; we
206 * know there's at least one since alarm->time is invalid.
207 */
190 if (alarm->time.tm_sec == -1) 208 if (alarm->time.tm_sec == -1)
191 alarm->time.tm_sec = now.tm_sec; 209 alarm->time.tm_sec = now.tm_sec;
192 if (alarm->time.tm_min == -1) 210 if (alarm->time.tm_min == -1)
193 alarm->time.tm_min = now.tm_min; 211 alarm->time.tm_min = now.tm_min;
194 if (alarm->time.tm_hour == -1) 212 if (alarm->time.tm_hour == -1)
195 alarm->time.tm_hour = now.tm_hour; 213 alarm->time.tm_hour = now.tm_hour;
196 if (alarm->time.tm_mday == -1) 214
215 /* For simplicity, only support date rollover for now */
216 if (alarm->time.tm_mday == -1) {
197 alarm->time.tm_mday = now.tm_mday; 217 alarm->time.tm_mday = now.tm_mday;
198 if (alarm->time.tm_mon == -1) 218 missing = day;
219 }
220 if (alarm->time.tm_mon == -1) {
199 alarm->time.tm_mon = now.tm_mon; 221 alarm->time.tm_mon = now.tm_mon;
200 if (alarm->time.tm_year == -1) 222 if (missing == none)
223 missing = month;
224 }
225 if (alarm->time.tm_year == -1) {
201 alarm->time.tm_year = now.tm_year; 226 alarm->time.tm_year = now.tm_year;
227 if (missing == none)
228 missing = year;
229 }
230
231 /* with luck, no rollover is needed */
232 rtc_tm_to_time(&now, &t_now);
233 rtc_tm_to_time(&alarm->time, &t_alm);
234 if (t_now < t_alm)
235 goto done;
236
237 switch (missing) {
238
239 /* 24 hour rollover ... if it's now 10am Monday, an alarm that
240 * that will trigger at 5am will do so at 5am Tuesday, which
241 * could also be in the next month or year. This is a common
242 * case, especially for PCs.
243 */
244 case day:
245 dev_dbg(&rtc->dev, "alarm rollover: %s\n", "day");
246 t_alm += 24 * 60 * 60;
247 rtc_time_to_tm(t_alm, &alarm->time);
248 break;
249
250 /* Month rollover ... if it's the 31th, an alarm on the 3rd will
251 * be next month. An alarm matching on the 30th, 29th, or 28th
252 * may end up in the month after that! Many newer PCs support
253 * this type of alarm.
254 */
255 case month:
256 dev_dbg(&rtc->dev, "alarm rollover: %s\n", "month");
257 do {
258 if (alarm->time.tm_mon < 11)
259 alarm->time.tm_mon++;
260 else {
261 alarm->time.tm_mon = 0;
262 alarm->time.tm_year++;
263 }
264 days = rtc_month_days(alarm->time.tm_mon,
265 alarm->time.tm_year);
266 } while (days < alarm->time.tm_mday);
267 break;
268
269 /* Year rollover ... easy except for leap years! */
270 case year:
271 dev_dbg(&rtc->dev, "alarm rollover: %s\n", "year");
272 do {
273 alarm->time.tm_year++;
274 } while (!rtc_valid_tm(&alarm->time));
275 break;
276
277 default:
278 dev_warn(&rtc->dev, "alarm rollover not handled\n");
279 }
280
281done:
202 return 0; 282 return 0;
203} 283}
204EXPORT_SYMBOL_GPL(rtc_read_alarm); 284EXPORT_SYMBOL_GPL(rtc_read_alarm);
diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
index 82f62d25f921..67421b0d3a7b 100644
--- a/drivers/rtc/rtc-sa1100.c
+++ b/drivers/rtc/rtc-sa1100.c
@@ -331,14 +331,14 @@ static int sa1100_rtc_probe(struct platform_device *pdev)
331 RCNR = 0; 331 RCNR = 0;
332 } 332 }
333 333
334 device_init_wakeup(&pdev->dev, 1);
335
334 rtc = rtc_device_register(pdev->name, &pdev->dev, &sa1100_rtc_ops, 336 rtc = rtc_device_register(pdev->name, &pdev->dev, &sa1100_rtc_ops,
335 THIS_MODULE); 337 THIS_MODULE);
336 338
337 if (IS_ERR(rtc)) 339 if (IS_ERR(rtc))
338 return PTR_ERR(rtc); 340 return PTR_ERR(rtc);
339 341
340 device_init_wakeup(&pdev->dev, 1);
341
342 platform_set_drvdata(pdev, rtc); 342 platform_set_drvdata(pdev, rtc);
343 343
344 return 0; 344 return 0;
diff --git a/drivers/rtc/rtc-x1205.c b/drivers/rtc/rtc-x1205.c
index eaf55945f21b..7dcfba1bbfe1 100644
--- a/drivers/rtc/rtc-x1205.c
+++ b/drivers/rtc/rtc-x1205.c
@@ -71,6 +71,7 @@
71#define X1205_SR_RTCF 0x01 /* Clock failure */ 71#define X1205_SR_RTCF 0x01 /* Clock failure */
72#define X1205_SR_WEL 0x02 /* Write Enable Latch */ 72#define X1205_SR_WEL 0x02 /* Write Enable Latch */
73#define X1205_SR_RWEL 0x04 /* Register Write Enable */ 73#define X1205_SR_RWEL 0x04 /* Register Write Enable */
74#define X1205_SR_AL0 0x20 /* Alarm 0 match */
74 75
75#define X1205_DTR_DTR0 0x01 76#define X1205_DTR_DTR0 0x01
76#define X1205_DTR_DTR1 0x02 77#define X1205_DTR_DTR1 0x02
@@ -78,6 +79,8 @@
78 79
79#define X1205_HR_MIL 0x80 /* Set in ccr.hour for 24 hr mode */ 80#define X1205_HR_MIL 0x80 /* Set in ccr.hour for 24 hr mode */
80 81
82#define X1205_INT_AL0E 0x20 /* Alarm 0 enable */
83
81static struct i2c_driver x1205_driver; 84static struct i2c_driver x1205_driver;
82 85
83/* 86/*
@@ -89,8 +92,8 @@ static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm,
89 unsigned char reg_base) 92 unsigned char reg_base)
90{ 93{
91 unsigned char dt_addr[2] = { 0, reg_base }; 94 unsigned char dt_addr[2] = { 0, reg_base };
92
93 unsigned char buf[8]; 95 unsigned char buf[8];
96 int i;
94 97
95 struct i2c_msg msgs[] = { 98 struct i2c_msg msgs[] = {
96 { client->addr, 0, 2, dt_addr }, /* setup read ptr */ 99 { client->addr, 0, 2, dt_addr }, /* setup read ptr */
@@ -98,7 +101,7 @@ static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm,
98 }; 101 };
99 102
100 /* read date registers */ 103 /* read date registers */
101 if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) { 104 if (i2c_transfer(client->adapter, &msgs[0], 2) != 2) {
102 dev_err(&client->dev, "%s: read error\n", __func__); 105 dev_err(&client->dev, "%s: read error\n", __func__);
103 return -EIO; 106 return -EIO;
104 } 107 }
@@ -110,6 +113,11 @@ static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm,
110 buf[0], buf[1], buf[2], buf[3], 113 buf[0], buf[1], buf[2], buf[3],
111 buf[4], buf[5], buf[6], buf[7]); 114 buf[4], buf[5], buf[6], buf[7]);
112 115
116 /* Mask out the enable bits if these are alarm registers */
117 if (reg_base < X1205_CCR_BASE)
118 for (i = 0; i <= 4; i++)
119 buf[i] &= 0x7F;
120
113 tm->tm_sec = BCD2BIN(buf[CCR_SEC]); 121 tm->tm_sec = BCD2BIN(buf[CCR_SEC]);
114 tm->tm_min = BCD2BIN(buf[CCR_MIN]); 122 tm->tm_min = BCD2BIN(buf[CCR_MIN]);
115 tm->tm_hour = BCD2BIN(buf[CCR_HOUR] & 0x3F); /* hr is 0-23 */ 123 tm->tm_hour = BCD2BIN(buf[CCR_HOUR] & 0x3F); /* hr is 0-23 */
@@ -138,7 +146,7 @@ static int x1205_get_status(struct i2c_client *client, unsigned char *sr)
138 }; 146 };
139 147
140 /* read status register */ 148 /* read status register */
141 if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) { 149 if (i2c_transfer(client->adapter, &msgs[0], 2) != 2) {
142 dev_err(&client->dev, "%s: read error\n", __func__); 150 dev_err(&client->dev, "%s: read error\n", __func__);
143 return -EIO; 151 return -EIO;
144 } 152 }
@@ -147,10 +155,11 @@ static int x1205_get_status(struct i2c_client *client, unsigned char *sr)
147} 155}
148 156
149static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, 157static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
150 int datetoo, u8 reg_base) 158 int datetoo, u8 reg_base, unsigned char alm_enable)
151{ 159{
152 int i, xfer; 160 int i, xfer, nbytes;
153 unsigned char buf[8]; 161 unsigned char buf[8];
162 unsigned char rdata[10] = { 0, reg_base };
154 163
155 static const unsigned char wel[3] = { 0, X1205_REG_SR, 164 static const unsigned char wel[3] = { 0, X1205_REG_SR,
156 X1205_SR_WEL }; 165 X1205_SR_WEL };
@@ -189,6 +198,11 @@ static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
189 buf[CCR_Y2K] = BIN2BCD(tm->tm_year / 100); 198 buf[CCR_Y2K] = BIN2BCD(tm->tm_year / 100);
190 } 199 }
191 200
201 /* If writing alarm registers, set compare bits on registers 0-4 */
202 if (reg_base < X1205_CCR_BASE)
203 for (i = 0; i <= 4; i++)
204 buf[i] |= 0x80;
205
192 /* this sequence is required to unlock the chip */ 206 /* this sequence is required to unlock the chip */
193 if ((xfer = i2c_master_send(client, wel, 3)) != 3) { 207 if ((xfer = i2c_master_send(client, wel, 3)) != 3) {
194 dev_err(&client->dev, "%s: wel - %d\n", __func__, xfer); 208 dev_err(&client->dev, "%s: wel - %d\n", __func__, xfer);
@@ -200,19 +214,57 @@ static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
200 return -EIO; 214 return -EIO;
201 } 215 }
202 216
217
203 /* write register's data */ 218 /* write register's data */
204 for (i = 0; i < (datetoo ? 8 : 3); i++) { 219 if (datetoo)
205 unsigned char rdata[3] = { 0, reg_base + i, buf[i] }; 220 nbytes = 8;
221 else
222 nbytes = 3;
223 for (i = 0; i < nbytes; i++)
224 rdata[2+i] = buf[i];
225
226 xfer = i2c_master_send(client, rdata, nbytes+2);
227 if (xfer != nbytes+2) {
228 dev_err(&client->dev,
229 "%s: result=%d addr=%02x, data=%02x\n",
230 __func__,
231 xfer, rdata[1], rdata[2]);
232 return -EIO;
233 }
234
235 /* If we wrote to the nonvolatile region, wait 10msec for write cycle*/
236 if (reg_base < X1205_CCR_BASE) {
237 unsigned char al0e[3] = { 0, X1205_REG_INT, 0 };
238
239 msleep(10);
206 240
207 xfer = i2c_master_send(client, rdata, 3); 241 /* ...and set or clear the AL0E bit in the INT register */
242
243 /* Need to set RWEL again as the write has cleared it */
244 xfer = i2c_master_send(client, rwel, 3);
208 if (xfer != 3) { 245 if (xfer != 3) {
209 dev_err(&client->dev, 246 dev_err(&client->dev,
210 "%s: xfer=%d addr=%02x, data=%02x\n", 247 "%s: aloe rwel - %d\n",
211 __func__, 248 __func__,
212 xfer, rdata[1], rdata[2]); 249 xfer);
250 return -EIO;
251 }
252
253 if (alm_enable)
254 al0e[2] = X1205_INT_AL0E;
255
256 xfer = i2c_master_send(client, al0e, 3);
257 if (xfer != 3) {
258 dev_err(&client->dev,
259 "%s: al0e - %d\n",
260 __func__,
261 xfer);
213 return -EIO; 262 return -EIO;
214 } 263 }
215 }; 264
265 /* and wait 10msec again for this write to complete */
266 msleep(10);
267 }
216 268
217 /* disable further writes */ 269 /* disable further writes */
218 if ((xfer = i2c_master_send(client, diswe, 3)) != 3) { 270 if ((xfer = i2c_master_send(client, diswe, 3)) != 3) {
@@ -230,9 +282,9 @@ static int x1205_fix_osc(struct i2c_client *client)
230 282
231 tm.tm_hour = tm.tm_min = tm.tm_sec = 0; 283 tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
232 284
233 if ((err = x1205_set_datetime(client, &tm, 0, X1205_CCR_BASE)) < 0) 285 err = x1205_set_datetime(client, &tm, 0, X1205_CCR_BASE, 0);
234 dev_err(&client->dev, 286 if (err < 0)
235 "unable to restart the oscillator\n"); 287 dev_err(&client->dev, "unable to restart the oscillator\n");
236 288
237 return err; 289 return err;
238} 290}
@@ -248,7 +300,7 @@ static int x1205_get_dtrim(struct i2c_client *client, int *trim)
248 }; 300 };
249 301
250 /* read dtr register */ 302 /* read dtr register */
251 if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) { 303 if (i2c_transfer(client->adapter, &msgs[0], 2) != 2) {
252 dev_err(&client->dev, "%s: read error\n", __func__); 304 dev_err(&client->dev, "%s: read error\n", __func__);
253 return -EIO; 305 return -EIO;
254 } 306 }
@@ -280,7 +332,7 @@ static int x1205_get_atrim(struct i2c_client *client, int *trim)
280 }; 332 };
281 333
282 /* read atr register */ 334 /* read atr register */
283 if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) { 335 if (i2c_transfer(client->adapter, &msgs[0], 2) != 2) {
284 dev_err(&client->dev, "%s: read error\n", __func__); 336 dev_err(&client->dev, "%s: read error\n", __func__);
285 return -EIO; 337 return -EIO;
286 } 338 }
@@ -403,14 +455,33 @@ static int x1205_validate_client(struct i2c_client *client)
403 455
404static int x1205_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) 456static int x1205_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
405{ 457{
406 return x1205_get_datetime(to_i2c_client(dev), 458 int err;
407 &alrm->time, X1205_ALM0_BASE); 459 unsigned char intreg, status;
460 static unsigned char int_addr[2] = { 0, X1205_REG_INT };
461 struct i2c_client *client = to_i2c_client(dev);
462 struct i2c_msg msgs[] = {
463 { client->addr, 0, 2, int_addr }, /* setup read ptr */
464 { client->addr, I2C_M_RD, 1, &intreg }, /* read INT register */
465 };
466
467 /* read interrupt register and status register */
468 if (i2c_transfer(client->adapter, &msgs[0], 2) != 2) {
469 dev_err(&client->dev, "%s: read error\n", __func__);
470 return -EIO;
471 }
472 err = x1205_get_status(client, &status);
473 if (err == 0) {
474 alrm->pending = (status & X1205_SR_AL0) ? 1 : 0;
475 alrm->enabled = (intreg & X1205_INT_AL0E) ? 1 : 0;
476 err = x1205_get_datetime(client, &alrm->time, X1205_ALM0_BASE);
477 }
478 return err;
408} 479}
409 480
410static int x1205_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) 481static int x1205_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
411{ 482{
412 return x1205_set_datetime(to_i2c_client(dev), 483 return x1205_set_datetime(to_i2c_client(dev),
413 &alrm->time, 1, X1205_ALM0_BASE); 484 &alrm->time, 1, X1205_ALM0_BASE, alrm->enabled);
414} 485}
415 486
416static int x1205_rtc_read_time(struct device *dev, struct rtc_time *tm) 487static int x1205_rtc_read_time(struct device *dev, struct rtc_time *tm)
@@ -422,7 +493,7 @@ static int x1205_rtc_read_time(struct device *dev, struct rtc_time *tm)
422static int x1205_rtc_set_time(struct device *dev, struct rtc_time *tm) 493static int x1205_rtc_set_time(struct device *dev, struct rtc_time *tm)
423{ 494{
424 return x1205_set_datetime(to_i2c_client(dev), 495 return x1205_set_datetime(to_i2c_client(dev),
425 tm, 1, X1205_CCR_BASE); 496 tm, 1, X1205_CCR_BASE, 0);
426} 497}
427 498
428static int x1205_rtc_proc(struct device *dev, struct seq_file *seq) 499static int x1205_rtc_proc(struct device *dev, struct seq_file *seq)
diff --git a/drivers/scsi/dpt/dptsig.h b/drivers/scsi/dpt/dptsig.h
index 72c8992fdf21..a6644b332b53 100644
--- a/drivers/scsi/dpt/dptsig.h
+++ b/drivers/scsi/dpt/dptsig.h
@@ -85,7 +85,7 @@ typedef unsigned int sigINT;
85/* ------------------------------------------------------------------ */ 85/* ------------------------------------------------------------------ */
86/* What type of processor the file is meant to run on. */ 86/* What type of processor the file is meant to run on. */
87/* This will let us know whether to read sigWORDs as high/low or low/high. */ 87/* This will let us know whether to read sigWORDs as high/low or low/high. */
88#define PROC_INTEL 0x00 /* Intel 80x86 */ 88#define PROC_INTEL 0x00 /* Intel 80x86/ia64 */
89#define PROC_MOTOROLA 0x01 /* Motorola 68K */ 89#define PROC_MOTOROLA 0x01 /* Motorola 68K */
90#define PROC_MIPS4000 0x02 /* MIPS RISC 4000 */ 90#define PROC_MIPS4000 0x02 /* MIPS RISC 4000 */
91#define PROC_ALPHA 0x03 /* DEC Alpha */ 91#define PROC_ALPHA 0x03 /* DEC Alpha */
@@ -104,6 +104,7 @@ typedef unsigned int sigINT;
104#define PROC_486 0x08 /* Intel 80486 */ 104#define PROC_486 0x08 /* Intel 80486 */
105#define PROC_PENTIUM 0x10 /* Intel 586 aka P5 aka Pentium */ 105#define PROC_PENTIUM 0x10 /* Intel 586 aka P5 aka Pentium */
106#define PROC_SEXIUM 0x20 /* Intel 686 aka P6 aka Pentium Pro or MMX */ 106#define PROC_SEXIUM 0x20 /* Intel 686 aka P6 aka Pentium Pro or MMX */
107#define PROC_IA64 0x40 /* Intel IA64 processor */
107 108
108/* PROC_i960: */ 109/* PROC_i960: */
109#define PROC_960RX 0x01 /* Intel 80960RC/RD */ 110#define PROC_960RX 0x01 /* Intel 80960RC/RD */
diff --git a/drivers/scsi/esp_scsi.c b/drivers/scsi/esp_scsi.c
index a0b6d414953d..59fbef08d690 100644
--- a/drivers/scsi/esp_scsi.c
+++ b/drivers/scsi/esp_scsi.c
@@ -2359,6 +2359,24 @@ void scsi_esp_unregister(struct esp *esp)
2359} 2359}
2360EXPORT_SYMBOL(scsi_esp_unregister); 2360EXPORT_SYMBOL(scsi_esp_unregister);
2361 2361
2362static int esp_target_alloc(struct scsi_target *starget)
2363{
2364 struct esp *esp = shost_priv(dev_to_shost(&starget->dev));
2365 struct esp_target_data *tp = &esp->target[starget->id];
2366
2367 tp->starget = starget;
2368
2369 return 0;
2370}
2371
2372static void esp_target_destroy(struct scsi_target *starget)
2373{
2374 struct esp *esp = shost_priv(dev_to_shost(&starget->dev));
2375 struct esp_target_data *tp = &esp->target[starget->id];
2376
2377 tp->starget = NULL;
2378}
2379
2362static int esp_slave_alloc(struct scsi_device *dev) 2380static int esp_slave_alloc(struct scsi_device *dev)
2363{ 2381{
2364 struct esp *esp = shost_priv(dev->host); 2382 struct esp *esp = shost_priv(dev->host);
@@ -2370,8 +2388,6 @@ static int esp_slave_alloc(struct scsi_device *dev)
2370 return -ENOMEM; 2388 return -ENOMEM;
2371 dev->hostdata = lp; 2389 dev->hostdata = lp;
2372 2390
2373 tp->starget = dev->sdev_target;
2374
2375 spi_min_period(tp->starget) = esp->min_period; 2391 spi_min_period(tp->starget) = esp->min_period;
2376 spi_max_offset(tp->starget) = 15; 2392 spi_max_offset(tp->starget) = 15;
2377 2393
@@ -2608,6 +2624,8 @@ struct scsi_host_template scsi_esp_template = {
2608 .name = "esp", 2624 .name = "esp",
2609 .info = esp_info, 2625 .info = esp_info,
2610 .queuecommand = esp_queuecommand, 2626 .queuecommand = esp_queuecommand,
2627 .target_alloc = esp_target_alloc,
2628 .target_destroy = esp_target_destroy,
2611 .slave_alloc = esp_slave_alloc, 2629 .slave_alloc = esp_slave_alloc,
2612 .slave_configure = esp_slave_configure, 2630 .slave_configure = esp_slave_configure,
2613 .slave_destroy = esp_slave_destroy, 2631 .slave_destroy = esp_slave_destroy,
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index 3690360d7a79..c6457bfc8a49 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -456,6 +456,10 @@ static int __scsi_host_match(struct device *dev, void *data)
456 * 456 *
457 * Return value: 457 * Return value:
458 * A pointer to located Scsi_Host or NULL. 458 * A pointer to located Scsi_Host or NULL.
459 *
460 * The caller must do a scsi_host_put() to drop the reference
461 * that scsi_host_get() took. The put_device() below dropped
462 * the reference from class_find_device().
459 **/ 463 **/
460struct Scsi_Host *scsi_host_lookup(unsigned short hostnum) 464struct Scsi_Host *scsi_host_lookup(unsigned short hostnum)
461{ 465{
@@ -463,9 +467,10 @@ struct Scsi_Host *scsi_host_lookup(unsigned short hostnum)
463 struct Scsi_Host *shost = ERR_PTR(-ENXIO); 467 struct Scsi_Host *shost = ERR_PTR(-ENXIO);
464 468
465 cdev = class_find_device(&shost_class, &hostnum, __scsi_host_match); 469 cdev = class_find_device(&shost_class, &hostnum, __scsi_host_match);
466 if (cdev) 470 if (cdev) {
467 shost = scsi_host_get(class_to_shost(cdev)); 471 shost = scsi_host_get(class_to_shost(cdev));
468 472 put_device(cdev);
473 }
469 return shost; 474 return shost;
470} 475}
471EXPORT_SYMBOL(scsi_host_lookup); 476EXPORT_SYMBOL(scsi_host_lookup);
diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
index 45df83b9d847..0fe031f003e7 100644
--- a/drivers/scsi/ses.c
+++ b/drivers/scsi/ses.c
@@ -61,7 +61,7 @@ static int ses_probe(struct device *dev)
61 return err; 61 return err;
62} 62}
63 63
64#define SES_TIMEOUT 30 64#define SES_TIMEOUT (30 * HZ)
65#define SES_RETRIES 3 65#define SES_RETRIES 3
66 66
67static int ses_recv_diag(struct scsi_device *sdev, int page_code, 67static int ses_recv_diag(struct scsi_device *sdev, int page_code,
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 7ee86d4a7618..c82df8bd4d89 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -178,6 +178,9 @@ int sr_test_unit_ready(struct scsi_device *sdev, struct scsi_sense_hdr *sshdr)
178 the_result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 178 the_result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL,
179 0, sshdr, SR_TIMEOUT, 179 0, sshdr, SR_TIMEOUT,
180 retries--); 180 retries--);
181 if (scsi_sense_valid(sshdr) &&
182 sshdr->sense_key == UNIT_ATTENTION)
183 sdev->changed = 1;
181 184
182 } while (retries > 0 && 185 } while (retries > 0 &&
183 (!scsi_status_is_good(the_result) || 186 (!scsi_status_is_good(the_result) ||
diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
index f20952c43cb8..fd9bb777df28 100644
--- a/drivers/serial/bfin_5xx.c
+++ b/drivers/serial/bfin_5xx.c
@@ -49,6 +49,7 @@
49#define DMA_RX_YCOUNT (PAGE_SIZE / DMA_RX_XCOUNT) 49#define DMA_RX_YCOUNT (PAGE_SIZE / DMA_RX_XCOUNT)
50 50
51#define DMA_RX_FLUSH_JIFFIES (HZ / 50) 51#define DMA_RX_FLUSH_JIFFIES (HZ / 50)
52#define CTS_CHECK_JIFFIES (HZ / 50)
52 53
53#ifdef CONFIG_SERIAL_BFIN_DMA 54#ifdef CONFIG_SERIAL_BFIN_DMA
54static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart); 55static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart);
@@ -290,11 +291,6 @@ static void bfin_serial_tx_chars(struct bfin_serial_port *uart)
290{ 291{
291 struct circ_buf *xmit = &uart->port.info->xmit; 292 struct circ_buf *xmit = &uart->port.info->xmit;
292 293
293 if (uart->port.x_char) {
294 UART_PUT_CHAR(uart, uart->port.x_char);
295 uart->port.icount.tx++;
296 uart->port.x_char = 0;
297 }
298 /* 294 /*
299 * Check the modem control lines before 295 * Check the modem control lines before
300 * transmitting anything. 296 * transmitting anything.
@@ -306,6 +302,12 @@ static void bfin_serial_tx_chars(struct bfin_serial_port *uart)
306 return; 302 return;
307 } 303 }
308 304
305 if (uart->port.x_char) {
306 UART_PUT_CHAR(uart, uart->port.x_char);
307 uart->port.icount.tx++;
308 uart->port.x_char = 0;
309 }
310
309 while ((UART_GET_LSR(uart) & THRE) && xmit->tail != xmit->head) { 311 while ((UART_GET_LSR(uart) & THRE) && xmit->tail != xmit->head) {
310 UART_PUT_CHAR(uart, xmit->buf[xmit->tail]); 312 UART_PUT_CHAR(uart, xmit->buf[xmit->tail]);
311 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); 313 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
@@ -345,15 +347,6 @@ static irqreturn_t bfin_serial_tx_int(int irq, void *dev_id)
345} 347}
346#endif 348#endif
347 349
348#ifdef CONFIG_SERIAL_BFIN_CTSRTS
349static void bfin_serial_do_work(struct work_struct *work)
350{
351 struct bfin_serial_port *uart = container_of(work, struct bfin_serial_port, cts_workqueue);
352
353 bfin_serial_mctrl_check(uart);
354}
355#endif
356
357#ifdef CONFIG_SERIAL_BFIN_DMA 350#ifdef CONFIG_SERIAL_BFIN_DMA
358static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart) 351static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart)
359{ 352{
@@ -361,6 +354,12 @@ static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart)
361 354
362 uart->tx_done = 0; 355 uart->tx_done = 0;
363 356
357 /*
358 * Check the modem control lines before
359 * transmitting anything.
360 */
361 bfin_serial_mctrl_check(uart);
362
364 if (uart_circ_empty(xmit) || uart_tx_stopped(&uart->port)) { 363 if (uart_circ_empty(xmit) || uart_tx_stopped(&uart->port)) {
365 uart->tx_count = 0; 364 uart->tx_count = 0;
366 uart->tx_done = 1; 365 uart->tx_done = 1;
@@ -373,12 +372,6 @@ static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart)
373 uart->port.x_char = 0; 372 uart->port.x_char = 0;
374 } 373 }
375 374
376 /*
377 * Check the modem control lines before
378 * transmitting anything.
379 */
380 bfin_serial_mctrl_check(uart);
381
382 uart->tx_count = CIRC_CNT(xmit->head, xmit->tail, UART_XMIT_SIZE); 375 uart->tx_count = CIRC_CNT(xmit->head, xmit->tail, UART_XMIT_SIZE);
383 if (uart->tx_count > (UART_XMIT_SIZE - xmit->tail)) 376 if (uart->tx_count > (UART_XMIT_SIZE - xmit->tail))
384 uart->tx_count = UART_XMIT_SIZE - xmit->tail; 377 uart->tx_count = UART_XMIT_SIZE - xmit->tail;
@@ -565,7 +558,10 @@ static void bfin_serial_mctrl_check(struct bfin_serial_port *uart)
565 uart_handle_cts_change(&uart->port, status & TIOCM_CTS); 558 uart_handle_cts_change(&uart->port, status & TIOCM_CTS);
566 if (!(status & TIOCM_CTS)) { 559 if (!(status & TIOCM_CTS)) {
567 tty->hw_stopped = 1; 560 tty->hw_stopped = 1;
568 schedule_work(&uart->cts_workqueue); 561 uart->cts_timer.data = (unsigned long)(uart);
562 uart->cts_timer.function = (void *)bfin_serial_mctrl_check;
563 uart->cts_timer.expires = jiffies + CTS_CHECK_JIFFIES;
564 add_timer(&(uart->cts_timer));
569 } else { 565 } else {
570 tty->hw_stopped = 0; 566 tty->hw_stopped = 0;
571 } 567 }
@@ -885,7 +881,7 @@ static void __init bfin_serial_init_ports(void)
885 init_timer(&(bfin_serial_ports[i].rx_dma_timer)); 881 init_timer(&(bfin_serial_ports[i].rx_dma_timer));
886#endif 882#endif
887#ifdef CONFIG_SERIAL_BFIN_CTSRTS 883#ifdef CONFIG_SERIAL_BFIN_CTSRTS
888 INIT_WORK(&bfin_serial_ports[i].cts_workqueue, bfin_serial_do_work); 884 init_timer(&(bfin_serial_ports[i].cts_timer));
889 bfin_serial_ports[i].cts_pin = 885 bfin_serial_ports[i].cts_pin =
890 bfin_serial_resource[i].uart_cts_pin; 886 bfin_serial_resource[i].uart_cts_pin;
891 bfin_serial_ports[i].rts_pin = 887 bfin_serial_ports[i].rts_pin =
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index c9b64e73c987..42d2e108b679 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -1991,7 +1991,9 @@ struct uart_match {
1991static int serial_match_port(struct device *dev, void *data) 1991static int serial_match_port(struct device *dev, void *data)
1992{ 1992{
1993 struct uart_match *match = data; 1993 struct uart_match *match = data;
1994 dev_t devt = MKDEV(match->driver->major, match->driver->minor) + match->port->line; 1994 struct tty_driver *tty_drv = match->driver->tty_driver;
1995 dev_t devt = MKDEV(tty_drv->major, tty_drv->minor_start) +
1996 match->port->line;
1995 1997
1996 return dev->devt == devt; /* Actually, only one tty per port */ 1998 return dev->devt == devt; /* Actually, only one tty per port */
1997} 1999}
diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
index 799337f7fde1..f5b60c70389b 100644
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
@@ -167,14 +167,14 @@ spidev_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
167 167
168 mutex_lock(&spidev->buf_lock); 168 mutex_lock(&spidev->buf_lock);
169 status = spidev_sync_read(spidev, count); 169 status = spidev_sync_read(spidev, count);
170 if (status == 0) { 170 if (status > 0) {
171 unsigned long missing; 171 unsigned long missing;
172 172
173 missing = copy_to_user(buf, spidev->buffer, count); 173 missing = copy_to_user(buf, spidev->buffer, status);
174 if (count && missing == count) 174 if (missing == status)
175 status = -EFAULT; 175 status = -EFAULT;
176 else 176 else
177 status = count - missing; 177 status = status - missing;
178 } 178 }
179 mutex_unlock(&spidev->buf_lock); 179 mutex_unlock(&spidev->buf_lock);
180 180
@@ -200,8 +200,6 @@ spidev_write(struct file *filp, const char __user *buf,
200 missing = copy_from_user(spidev->buffer, buf, count); 200 missing = copy_from_user(spidev->buffer, buf, count);
201 if (missing == 0) { 201 if (missing == 0) {
202 status = spidev_sync_write(spidev, count); 202 status = spidev_sync_write(spidev, count);
203 if (status == 0)
204 status = count;
205 } else 203 } else
206 status = -EFAULT; 204 status = -EFAULT;
207 mutex_unlock(&spidev->buf_lock); 205 mutex_unlock(&spidev->buf_lock);
diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c
index 7cf8851286b5..d184f2aea78d 100644
--- a/drivers/ssb/main.c
+++ b/drivers/ssb/main.c
@@ -1168,15 +1168,21 @@ EXPORT_SYMBOL(ssb_dma_translation);
1168int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask) 1168int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask)
1169{ 1169{
1170 struct device *dma_dev = ssb_dev->dma_dev; 1170 struct device *dma_dev = ssb_dev->dma_dev;
1171 int err = 0;
1171 1172
1172#ifdef CONFIG_SSB_PCIHOST 1173#ifdef CONFIG_SSB_PCIHOST
1173 if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI) 1174 if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI) {
1174 return dma_set_mask(dma_dev, mask); 1175 err = pci_set_dma_mask(ssb_dev->bus->host_pci, mask);
1176 if (err)
1177 return err;
1178 err = pci_set_consistent_dma_mask(ssb_dev->bus->host_pci, mask);
1179 return err;
1180 }
1175#endif 1181#endif
1176 dma_dev->coherent_dma_mask = mask; 1182 dma_dev->coherent_dma_mask = mask;
1177 dma_dev->dma_mask = &dma_dev->coherent_dma_mask; 1183 dma_dev->dma_mask = &dma_dev->coherent_dma_mask;
1178 1184
1179 return 0; 1185 return err;
1180} 1186}
1181EXPORT_SYMBOL(ssb_dma_set_mask); 1187EXPORT_SYMBOL(ssb_dma_set_mask);
1182 1188
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index 4b628526df09..a86e952ed4ca 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -12,3 +12,12 @@ menuconfig THERMAL
12 cooling devices. 12 cooling devices.
13 All platforms with ACPI thermal support can use this driver. 13 All platforms with ACPI thermal support can use this driver.
14 If you want this support, you should say Y or M here. 14 If you want this support, you should say Y or M here.
15
16config THERMAL_HWMON
17 bool "Hardware monitoring support"
18 depends on HWMON=y || HWMON=THERMAL
19 help
20 The generic thermal sysfs driver's hardware monitoring support
21 requires a 2.10.7/3.0.2 or later lm-sensors userspace.
22
23 Say Y if your user-space is new enough.
diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index 6098787341f3..fe07462d5947 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -295,8 +295,8 @@ thermal_cooling_device_trip_point_show(struct device *dev,
295 295
296/* Device management */ 296/* Device management */
297 297
298#if defined(CONFIG_HWMON) || \ 298#if defined(CONFIG_THERMAL_HWMON)
299 (defined(CONFIG_HWMON_MODULE) && defined(CONFIG_THERMAL_MODULE)) 299
300/* hwmon sys I/F */ 300/* hwmon sys I/F */
301#include <linux/hwmon.h> 301#include <linux/hwmon.h>
302static LIST_HEAD(thermal_hwmon_list); 302static LIST_HEAD(thermal_hwmon_list);
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index 63c34043b4d9..c3201affa0b6 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -1125,9 +1125,6 @@ static void stop_data_traffic(struct acm *acm)
1125 for (i = 0; i < acm->rx_buflimit; i++) 1125 for (i = 0; i < acm->rx_buflimit; i++)
1126 usb_kill_urb(acm->ru[i].urb); 1126 usb_kill_urb(acm->ru[i].urb);
1127 1127
1128 INIT_LIST_HEAD(&acm->filled_read_bufs);
1129 INIT_LIST_HEAD(&acm->spare_read_bufs);
1130
1131 tasklet_enable(&acm->urb_task); 1128 tasklet_enable(&acm->urb_task);
1132 1129
1133 cancel_work_sync(&acm->work); 1130 cancel_work_sync(&acm->work);
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 09a53e7f3327..42a436478b78 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -924,6 +924,15 @@ static int register_root_hub(struct usb_hcd *hcd)
924 return retval; 924 return retval;
925} 925}
926 926
927void usb_enable_root_hub_irq (struct usb_bus *bus)
928{
929 struct usb_hcd *hcd;
930
931 hcd = container_of (bus, struct usb_hcd, self);
932 if (hcd->driver->hub_irq_enable && hcd->state != HC_STATE_HALT)
933 hcd->driver->hub_irq_enable (hcd);
934}
935
927 936
928/*-------------------------------------------------------------------------*/ 937/*-------------------------------------------------------------------------*/
929 938
@@ -1684,19 +1693,30 @@ EXPORT_SYMBOL_GPL(usb_bus_start_enum);
1684irqreturn_t usb_hcd_irq (int irq, void *__hcd) 1693irqreturn_t usb_hcd_irq (int irq, void *__hcd)
1685{ 1694{
1686 struct usb_hcd *hcd = __hcd; 1695 struct usb_hcd *hcd = __hcd;
1687 int start = hcd->state; 1696 unsigned long flags;
1697 irqreturn_t rc;
1688 1698
1689 if (unlikely(start == HC_STATE_HALT || 1699 /* IRQF_DISABLED doesn't work correctly with shared IRQs
1690 !test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags))) 1700 * when the first handler doesn't use it. So let's just
1691 return IRQ_NONE; 1701 * assume it's never used.
1692 if (hcd->driver->irq (hcd) == IRQ_NONE) 1702 */
1693 return IRQ_NONE; 1703 local_irq_save(flags);
1694 1704
1695 set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags); 1705 if (unlikely(hcd->state == HC_STATE_HALT ||
1706 !test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags))) {
1707 rc = IRQ_NONE;
1708 } else if (hcd->driver->irq(hcd) == IRQ_NONE) {
1709 rc = IRQ_NONE;
1710 } else {
1711 set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags);
1712
1713 if (unlikely(hcd->state == HC_STATE_HALT))
1714 usb_hc_died(hcd);
1715 rc = IRQ_HANDLED;
1716 }
1696 1717
1697 if (unlikely(hcd->state == HC_STATE_HALT)) 1718 local_irq_restore(flags);
1698 usb_hc_died (hcd); 1719 return rc;
1699 return IRQ_HANDLED;
1700} 1720}
1701 1721
1702/*-------------------------------------------------------------------------*/ 1722/*-------------------------------------------------------------------------*/
@@ -1860,6 +1880,13 @@ int usb_add_hcd(struct usb_hcd *hcd,
1860 1880
1861 /* enable irqs just before we start the controller */ 1881 /* enable irqs just before we start the controller */
1862 if (hcd->driver->irq) { 1882 if (hcd->driver->irq) {
1883
1884 /* IRQF_DISABLED doesn't work as advertised when used together
1885 * with IRQF_SHARED. As usb_hcd_irq() will always disable
1886 * interrupts we can remove it here.
1887 */
1888 irqflags &= ~IRQF_DISABLED;
1889
1863 snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d", 1890 snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d",
1864 hcd->driver->description, hcd->self.busnum); 1891 hcd->driver->description, hcd->self.busnum);
1865 if ((retval = request_irq(irqnum, &usb_hcd_irq, irqflags, 1892 if ((retval = request_irq(irqnum, &usb_hcd_irq, irqflags,
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h
index a0bf5df6cb6f..b9de1569b39e 100644
--- a/drivers/usb/core/hcd.h
+++ b/drivers/usb/core/hcd.h
@@ -210,6 +210,8 @@ struct hc_driver {
210 int (*bus_suspend)(struct usb_hcd *); 210 int (*bus_suspend)(struct usb_hcd *);
211 int (*bus_resume)(struct usb_hcd *); 211 int (*bus_resume)(struct usb_hcd *);
212 int (*start_port_reset)(struct usb_hcd *, unsigned port_num); 212 int (*start_port_reset)(struct usb_hcd *, unsigned port_num);
213 void (*hub_irq_enable)(struct usb_hcd *);
214 /* Needed only if port-change IRQs are level-triggered */
213 215
214 /* force handover of high-speed port to full-speed companion */ 216 /* force handover of high-speed port to full-speed companion */
215 void (*relinquish_port)(struct usb_hcd *, int); 217 void (*relinquish_port)(struct usb_hcd *, int);
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 94789be54ca3..4cfe32a16c37 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -713,18 +713,11 @@ static void hub_restart(struct usb_hub *hub, int type)
713 } 713 }
714 714
715 /* Was the power session lost while we were suspended? */ 715 /* Was the power session lost while we were suspended? */
716 switch (type) { 716 status = hub_port_status(hub, port1, &portstatus, &portchange);
717 case HUB_RESET_RESUME:
718 portstatus = 0;
719 portchange = USB_PORT_STAT_C_CONNECTION;
720 break;
721 717
722 case HUB_RESET: 718 /* If the device is gone, khubd will handle it later */
723 case HUB_RESUME: 719 if (status == 0 && !(portstatus & USB_PORT_STAT_CONNECTION))
724 status = hub_port_status(hub, port1, 720 continue;
725 &portstatus, &portchange);
726 break;
727 }
728 721
729 /* For "USB_PERSIST"-enabled children we must 722 /* For "USB_PERSIST"-enabled children we must
730 * mark the child device for reset-resume and 723 * mark the child device for reset-resume and
@@ -2080,6 +2073,8 @@ int usb_port_resume(struct usb_device *udev)
2080 } 2073 }
2081 2074
2082 clear_bit(port1, hub->busy_bits); 2075 clear_bit(port1, hub->busy_bits);
2076 if (!hub->hdev->parent && !hub->busy_bits[0])
2077 usb_enable_root_hub_irq(hub->hdev->bus);
2083 2078
2084 if (status == 0) 2079 if (status == 0)
2085 status = finish_port_resume(udev); 2080 status = finish_port_resume(udev);
@@ -3009,6 +3004,11 @@ static void hub_events(void)
3009 3004
3010 hub->activating = 0; 3005 hub->activating = 0;
3011 3006
3007 /* If this is a root hub, tell the HCD it's okay to
3008 * re-enable port-change interrupts now. */
3009 if (!hdev->parent && !hub->busy_bits[0])
3010 usb_enable_root_hub_irq(hdev->bus);
3011
3012loop_autopm: 3012loop_autopm:
3013 /* Allow autosuspend if we're not going to run again */ 3013 /* Allow autosuspend if we're not going to run again */
3014 if (list_empty(&hub->event_list)) 3014 if (list_empty(&hub->event_list))
@@ -3234,6 +3234,8 @@ int usb_reset_device(struct usb_device *udev)
3234 break; 3234 break;
3235 } 3235 }
3236 clear_bit(port1, parent_hub->busy_bits); 3236 clear_bit(port1, parent_hub->busy_bits);
3237 if (!parent_hdev->parent && !parent_hub->busy_bits[0])
3238 usb_enable_root_hub_irq(parent_hdev->bus);
3237 3239
3238 if (ret < 0) 3240 if (ret < 0)
3239 goto re_enumerate; 3241 goto re_enumerate;
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index 3da1ab4b389d..c070b34b669d 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -47,6 +47,9 @@ static const struct usb_device_id usb_quirk_list[] = {
47 /* Edirol SD-20 */ 47 /* Edirol SD-20 */
48 { USB_DEVICE(0x0582, 0x0027), .driver_info = USB_QUIRK_RESET_RESUME }, 48 { USB_DEVICE(0x0582, 0x0027), .driver_info = USB_QUIRK_RESET_RESUME },
49 49
50 /* appletouch */
51 { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME },
52
50 /* Avision AV600U */ 53 /* Avision AV600U */
51 { USB_DEVICE(0x0638, 0x0a13), .driver_info = 54 { USB_DEVICE(0x0638, 0x0a13), .driver_info =
52 USB_QUIRK_STRING_FETCH_255 }, 55 USB_QUIRK_STRING_FETCH_255 },
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 35a03095757e..90245fd8bac4 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -177,6 +177,15 @@ timer_action_done (struct ehci_hcd *ehci, enum ehci_timer_action action)
177static inline void 177static inline void
178timer_action (struct ehci_hcd *ehci, enum ehci_timer_action action) 178timer_action (struct ehci_hcd *ehci, enum ehci_timer_action action)
179{ 179{
180 /* Don't override timeouts which shrink or (later) disable
181 * the async ring; just the I/O watchdog. Note that if a
182 * SHRINK were pending, OFF would never be requested.
183 */
184 if (timer_pending(&ehci->watchdog)
185 && ((BIT(TIMER_ASYNC_SHRINK) | BIT(TIMER_ASYNC_OFF))
186 & ehci->actions))
187 return;
188
180 if (!test_and_set_bit (action, &ehci->actions)) { 189 if (!test_and_set_bit (action, &ehci->actions)) {
181 unsigned long t; 190 unsigned long t;
182 191
@@ -192,15 +201,7 @@ timer_action (struct ehci_hcd *ehci, enum ehci_timer_action action)
192 t = EHCI_SHRINK_JIFFIES; 201 t = EHCI_SHRINK_JIFFIES;
193 break; 202 break;
194 } 203 }
195 t += jiffies; 204 mod_timer(&ehci->watchdog, t + jiffies);
196 // all timings except IAA watchdog can be overridden.
197 // async queue SHRINK often precedes IAA. while it's ready
198 // to go OFF neither can matter, and afterwards the IO
199 // watchdog stops unless there's still periodic traffic.
200 if (time_before_eq(t, ehci->watchdog.expires)
201 && timer_pending (&ehci->watchdog))
202 return;
203 mod_timer (&ehci->watchdog, t);
204 } 205 }
205} 206}
206 207
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index c96db1153dcf..e534f9de0f05 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -261,6 +261,7 @@ static const struct hc_driver ohci_at91_hc_driver = {
261 */ 261 */
262 .hub_status_data = ohci_hub_status_data, 262 .hub_status_data = ohci_hub_status_data,
263 .hub_control = ohci_hub_control, 263 .hub_control = ohci_hub_control,
264 .hub_irq_enable = ohci_rhsc_enable,
264#ifdef CONFIG_PM 265#ifdef CONFIG_PM
265 .bus_suspend = ohci_bus_suspend, 266 .bus_suspend = ohci_bus_suspend,
266 .bus_resume = ohci_bus_resume, 267 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-au1xxx.c b/drivers/usb/host/ohci-au1xxx.c
index 1b9abdba920b..f90fe0c7373f 100644
--- a/drivers/usb/host/ohci-au1xxx.c
+++ b/drivers/usb/host/ohci-au1xxx.c
@@ -288,6 +288,7 @@ static const struct hc_driver ohci_au1xxx_hc_driver = {
288 */ 288 */
289 .hub_status_data = ohci_hub_status_data, 289 .hub_status_data = ohci_hub_status_data,
290 .hub_control = ohci_hub_control, 290 .hub_control = ohci_hub_control,
291 .hub_irq_enable = ohci_rhsc_enable,
291#ifdef CONFIG_PM 292#ifdef CONFIG_PM
292 .bus_suspend = ohci_bus_suspend, 293 .bus_suspend = ohci_bus_suspend,
293 .bus_resume = ohci_bus_resume, 294 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
index 06aadfb0ec29..5adaf36e47d0 100644
--- a/drivers/usb/host/ohci-ep93xx.c
+++ b/drivers/usb/host/ohci-ep93xx.c
@@ -135,6 +135,7 @@ static struct hc_driver ohci_ep93xx_hc_driver = {
135 .get_frame_number = ohci_get_frame, 135 .get_frame_number = ohci_get_frame,
136 .hub_status_data = ohci_hub_status_data, 136 .hub_status_data = ohci_hub_status_data,
137 .hub_control = ohci_hub_control, 137 .hub_control = ohci_hub_control,
138 .hub_irq_enable = ohci_rhsc_enable,
138#ifdef CONFIG_PM 139#ifdef CONFIG_PM
139 .bus_suspend = ohci_bus_suspend, 140 .bus_suspend = ohci_bus_suspend,
140 .bus_resume = ohci_bus_resume, 141 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 33f1c1c32edf..a8160d65f32b 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -1054,7 +1054,7 @@ MODULE_LICENSE ("GPL");
1054 1054
1055#ifdef CONFIG_MFD_SM501 1055#ifdef CONFIG_MFD_SM501
1056#include "ohci-sm501.c" 1056#include "ohci-sm501.c"
1057#define PLATFORM_DRIVER ohci_hcd_sm501_driver 1057#define SM501_OHCI_DRIVER ohci_hcd_sm501_driver
1058#endif 1058#endif
1059 1059
1060#if !defined(PCI_DRIVER) && \ 1060#if !defined(PCI_DRIVER) && \
@@ -1062,6 +1062,7 @@ MODULE_LICENSE ("GPL");
1062 !defined(OF_PLATFORM_DRIVER) && \ 1062 !defined(OF_PLATFORM_DRIVER) && \
1063 !defined(SA1111_DRIVER) && \ 1063 !defined(SA1111_DRIVER) && \
1064 !defined(PS3_SYSTEM_BUS_DRIVER) && \ 1064 !defined(PS3_SYSTEM_BUS_DRIVER) && \
1065 !defined(SM501_OHCI_DRIVER) && \
1065 !defined(SSB_OHCI_DRIVER) 1066 !defined(SSB_OHCI_DRIVER)
1066#error "missing bus glue for ohci-hcd" 1067#error "missing bus glue for ohci-hcd"
1067#endif 1068#endif
@@ -1121,9 +1122,18 @@ static int __init ohci_hcd_mod_init(void)
1121 goto error_ssb; 1122 goto error_ssb;
1122#endif 1123#endif
1123 1124
1125#ifdef SM501_OHCI_DRIVER
1126 retval = platform_driver_register(&SM501_OHCI_DRIVER);
1127 if (retval < 0)
1128 goto error_sm501;
1129#endif
1130
1124 return retval; 1131 return retval;
1125 1132
1126 /* Error path */ 1133 /* Error path */
1134#ifdef SM501_OHCI_DRIVER
1135 error_sm501:
1136#endif
1127#ifdef SSB_OHCI_DRIVER 1137#ifdef SSB_OHCI_DRIVER
1128 error_ssb: 1138 error_ssb:
1129#endif 1139#endif
@@ -1159,6 +1169,9 @@ module_init(ohci_hcd_mod_init);
1159 1169
1160static void __exit ohci_hcd_mod_exit(void) 1170static void __exit ohci_hcd_mod_exit(void)
1161{ 1171{
1172#ifdef SM501_OHCI_DRIVER
1173 platform_driver_unregister(&SM501_OHCI_DRIVER);
1174#endif
1162#ifdef SSB_OHCI_DRIVER 1175#ifdef SSB_OHCI_DRIVER
1163 ssb_driver_unregister(&SSB_OHCI_DRIVER); 1176 ssb_driver_unregister(&SSB_OHCI_DRIVER);
1164#endif 1177#endif
diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
index 79a78029f896..b56739221d11 100644
--- a/drivers/usb/host/ohci-hub.c
+++ b/drivers/usb/host/ohci-hub.c
@@ -36,6 +36,18 @@
36 36
37/*-------------------------------------------------------------------------*/ 37/*-------------------------------------------------------------------------*/
38 38
39/* hcd->hub_irq_enable() */
40static void ohci_rhsc_enable (struct usb_hcd *hcd)
41{
42 struct ohci_hcd *ohci = hcd_to_ohci (hcd);
43
44 spin_lock_irq(&ohci->lock);
45 if (!ohci->autostop)
46 del_timer(&hcd->rh_timer); /* Prevent next poll */
47 ohci_writel(ohci, OHCI_INTR_RHSC, &ohci->regs->intrenable);
48 spin_unlock_irq(&ohci->lock);
49}
50
39#define OHCI_SCHED_ENABLES \ 51#define OHCI_SCHED_ENABLES \
40 (OHCI_CTRL_CLE|OHCI_CTRL_BLE|OHCI_CTRL_PLE|OHCI_CTRL_IE) 52 (OHCI_CTRL_CLE|OHCI_CTRL_BLE|OHCI_CTRL_PLE|OHCI_CTRL_IE)
41 53
@@ -362,28 +374,18 @@ static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed,
362 int any_connected) 374 int any_connected)
363{ 375{
364 int poll_rh = 1; 376 int poll_rh = 1;
365 int rhsc;
366 377
367 rhsc = ohci_readl(ohci, &ohci->regs->intrenable) & OHCI_INTR_RHSC;
368 switch (ohci->hc_control & OHCI_CTRL_HCFS) { 378 switch (ohci->hc_control & OHCI_CTRL_HCFS) {
369 379
370 case OHCI_USB_OPER: 380 case OHCI_USB_OPER:
371 /* If no status changes are pending, enable status-change 381 /* keep on polling until we know a device is connected
372 * interrupts. 382 * and RHSC is enabled */
373 */
374 if (!rhsc && !changed) {
375 rhsc = OHCI_INTR_RHSC;
376 ohci_writel(ohci, rhsc, &ohci->regs->intrenable);
377 }
378
379 /* Keep on polling until we know a device is connected
380 * and RHSC is enabled, or until we autostop.
381 */
382 if (!ohci->autostop) { 383 if (!ohci->autostop) {
383 if (any_connected || 384 if (any_connected ||
384 !device_may_wakeup(&ohci_to_hcd(ohci) 385 !device_may_wakeup(&ohci_to_hcd(ohci)
385 ->self.root_hub->dev)) { 386 ->self.root_hub->dev)) {
386 if (rhsc) 387 if (ohci_readl(ohci, &ohci->regs->intrenable) &
388 OHCI_INTR_RHSC)
387 poll_rh = 0; 389 poll_rh = 0;
388 } else { 390 } else {
389 ohci->autostop = 1; 391 ohci->autostop = 1;
@@ -396,13 +398,12 @@ static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed,
396 ohci->autostop = 0; 398 ohci->autostop = 0;
397 ohci->next_statechange = jiffies + 399 ohci->next_statechange = jiffies +
398 STATECHANGE_DELAY; 400 STATECHANGE_DELAY;
399 } else if (rhsc && time_after_eq(jiffies, 401 } else if (time_after_eq(jiffies,
400 ohci->next_statechange) 402 ohci->next_statechange)
401 && !ohci->ed_rm_list 403 && !ohci->ed_rm_list
402 && !(ohci->hc_control & 404 && !(ohci->hc_control &
403 OHCI_SCHED_ENABLES)) { 405 OHCI_SCHED_ENABLES)) {
404 ohci_rh_suspend(ohci, 1); 406 ohci_rh_suspend(ohci, 1);
405 poll_rh = 0;
406 } 407 }
407 } 408 }
408 break; 409 break;
@@ -416,12 +417,6 @@ static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed,
416 else 417 else
417 usb_hcd_resume_root_hub(ohci_to_hcd(ohci)); 418 usb_hcd_resume_root_hub(ohci_to_hcd(ohci));
418 } else { 419 } else {
419 if (!rhsc && (ohci->autostop ||
420 ohci_to_hcd(ohci)->self.root_hub->
421 do_remote_wakeup))
422 ohci_writel(ohci, OHCI_INTR_RHSC,
423 &ohci->regs->intrenable);
424
425 /* everything is idle, no need for polling */ 420 /* everything is idle, no need for polling */
426 poll_rh = 0; 421 poll_rh = 0;
427 } 422 }
@@ -443,16 +438,12 @@ static inline int ohci_rh_resume(struct ohci_hcd *ohci)
443static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed, 438static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed,
444 int any_connected) 439 int any_connected)
445{ 440{
446 /* If RHSC is enabled, don't poll */ 441 int poll_rh = 1;
447 if (ohci_readl(ohci, &ohci->regs->intrenable) & OHCI_INTR_RHSC)
448 return 0;
449 442
450 /* If no status changes are pending, enable status-change interrupts */ 443 /* keep on polling until RHSC is enabled */
451 if (!changed) { 444 if (ohci_readl(ohci, &ohci->regs->intrenable) & OHCI_INTR_RHSC)
452 ohci_writel(ohci, OHCI_INTR_RHSC, &ohci->regs->intrenable); 445 poll_rh = 0;
453 return 0; 446 return poll_rh;
454 }
455 return 1;
456} 447}
457 448
458#endif /* CONFIG_PM */ 449#endif /* CONFIG_PM */
diff --git a/drivers/usb/host/ohci-lh7a404.c b/drivers/usb/host/ohci-lh7a404.c
index 96d14fa1d833..13c12ed22252 100644
--- a/drivers/usb/host/ohci-lh7a404.c
+++ b/drivers/usb/host/ohci-lh7a404.c
@@ -193,6 +193,7 @@ static const struct hc_driver ohci_lh7a404_hc_driver = {
193 */ 193 */
194 .hub_status_data = ohci_hub_status_data, 194 .hub_status_data = ohci_hub_status_data,
195 .hub_control = ohci_hub_control, 195 .hub_control = ohci_hub_control,
196 .hub_irq_enable = ohci_rhsc_enable,
196#ifdef CONFIG_PM 197#ifdef CONFIG_PM
197 .bus_suspend = ohci_bus_suspend, 198 .bus_suspend = ohci_bus_suspend,
198 .bus_resume = ohci_bus_resume, 199 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
index 6859fb5f1d6f..3a7c24c03671 100644
--- a/drivers/usb/host/ohci-omap.c
+++ b/drivers/usb/host/ohci-omap.c
@@ -466,6 +466,7 @@ static const struct hc_driver ohci_omap_hc_driver = {
466 */ 466 */
467 .hub_status_data = ohci_hub_status_data, 467 .hub_status_data = ohci_hub_status_data,
468 .hub_control = ohci_hub_control, 468 .hub_control = ohci_hub_control,
469 .hub_irq_enable = ohci_rhsc_enable,
469#ifdef CONFIG_PM 470#ifdef CONFIG_PM
470 .bus_suspend = ohci_bus_suspend, 471 .bus_suspend = ohci_bus_suspend,
471 .bus_resume = ohci_bus_resume, 472 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
index 3bf175d95a23..4696cc912e16 100644
--- a/drivers/usb/host/ohci-pci.c
+++ b/drivers/usb/host/ohci-pci.c
@@ -327,6 +327,7 @@ static const struct hc_driver ohci_pci_hc_driver = {
327 */ 327 */
328 .hub_status_data = ohci_hub_status_data, 328 .hub_status_data = ohci_hub_status_data,
329 .hub_control = ohci_hub_control, 329 .hub_control = ohci_hub_control,
330 .hub_irq_enable = ohci_rhsc_enable,
330#ifdef CONFIG_PM 331#ifdef CONFIG_PM
331 .bus_suspend = ohci_bus_suspend, 332 .bus_suspend = ohci_bus_suspend,
332 .bus_resume = ohci_bus_resume, 333 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-pnx4008.c b/drivers/usb/host/ohci-pnx4008.c
index 664f07ee8732..28b458f20cc3 100644
--- a/drivers/usb/host/ohci-pnx4008.c
+++ b/drivers/usb/host/ohci-pnx4008.c
@@ -280,6 +280,7 @@ static const struct hc_driver ohci_pnx4008_hc_driver = {
280 */ 280 */
281 .hub_status_data = ohci_hub_status_data, 281 .hub_status_data = ohci_hub_status_data,
282 .hub_control = ohci_hub_control, 282 .hub_control = ohci_hub_control,
283 .hub_irq_enable = ohci_rhsc_enable,
283#ifdef CONFIG_PM 284#ifdef CONFIG_PM
284 .bus_suspend = ohci_bus_suspend, 285 .bus_suspend = ohci_bus_suspend,
285 .bus_resume = ohci_bus_resume, 286 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-pnx8550.c b/drivers/usb/host/ohci-pnx8550.c
index 28467e288a93..605d59cba28e 100644
--- a/drivers/usb/host/ohci-pnx8550.c
+++ b/drivers/usb/host/ohci-pnx8550.c
@@ -201,6 +201,7 @@ static const struct hc_driver ohci_pnx8550_hc_driver = {
201 */ 201 */
202 .hub_status_data = ohci_hub_status_data, 202 .hub_status_data = ohci_hub_status_data,
203 .hub_control = ohci_hub_control, 203 .hub_control = ohci_hub_control,
204 .hub_irq_enable = ohci_rhsc_enable,
204#ifdef CONFIG_PM 205#ifdef CONFIG_PM
205 .bus_suspend = ohci_bus_suspend, 206 .bus_suspend = ohci_bus_suspend,
206 .bus_resume = ohci_bus_resume, 207 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-ppc-of.c b/drivers/usb/host/ohci-ppc-of.c
index 50e55db13636..a67252791223 100644
--- a/drivers/usb/host/ohci-ppc-of.c
+++ b/drivers/usb/host/ohci-ppc-of.c
@@ -72,6 +72,7 @@ static const struct hc_driver ohci_ppc_of_hc_driver = {
72 */ 72 */
73 .hub_status_data = ohci_hub_status_data, 73 .hub_status_data = ohci_hub_status_data,
74 .hub_control = ohci_hub_control, 74 .hub_control = ohci_hub_control,
75 .hub_irq_enable = ohci_rhsc_enable,
75#ifdef CONFIG_PM 76#ifdef CONFIG_PM
76 .bus_suspend = ohci_bus_suspend, 77 .bus_suspend = ohci_bus_suspend,
77 .bus_resume = ohci_bus_resume, 78 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-ppc-soc.c b/drivers/usb/host/ohci-ppc-soc.c
index cd3398b675b2..523c30125577 100644
--- a/drivers/usb/host/ohci-ppc-soc.c
+++ b/drivers/usb/host/ohci-ppc-soc.c
@@ -172,6 +172,7 @@ static const struct hc_driver ohci_ppc_soc_hc_driver = {
172 */ 172 */
173 .hub_status_data = ohci_hub_status_data, 173 .hub_status_data = ohci_hub_status_data,
174 .hub_control = ohci_hub_control, 174 .hub_control = ohci_hub_control,
175 .hub_irq_enable = ohci_rhsc_enable,
175#ifdef CONFIG_PM 176#ifdef CONFIG_PM
176 .bus_suspend = ohci_bus_suspend, 177 .bus_suspend = ohci_bus_suspend,
177 .bus_resume = ohci_bus_resume, 178 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-ps3.c b/drivers/usb/host/ohci-ps3.c
index bfdeb0d22d05..c1935ae537f8 100644
--- a/drivers/usb/host/ohci-ps3.c
+++ b/drivers/usb/host/ohci-ps3.c
@@ -68,6 +68,7 @@ static const struct hc_driver ps3_ohci_hc_driver = {
68 .get_frame_number = ohci_get_frame, 68 .get_frame_number = ohci_get_frame,
69 .hub_status_data = ohci_hub_status_data, 69 .hub_status_data = ohci_hub_status_data,
70 .hub_control = ohci_hub_control, 70 .hub_control = ohci_hub_control,
71 .hub_irq_enable = ohci_rhsc_enable,
71 .start_port_reset = ohci_start_port_reset, 72 .start_port_reset = ohci_start_port_reset,
72#if defined(CONFIG_PM) 73#if defined(CONFIG_PM)
73 .bus_suspend = ohci_bus_suspend, 74 .bus_suspend = ohci_bus_suspend,
diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c
index 70b0d4b459e7..d4ee27d92be8 100644
--- a/drivers/usb/host/ohci-pxa27x.c
+++ b/drivers/usb/host/ohci-pxa27x.c
@@ -298,6 +298,7 @@ static const struct hc_driver ohci_pxa27x_hc_driver = {
298 */ 298 */
299 .hub_status_data = ohci_hub_status_data, 299 .hub_status_data = ohci_hub_status_data,
300 .hub_control = ohci_hub_control, 300 .hub_control = ohci_hub_control,
301 .hub_irq_enable = ohci_rhsc_enable,
301#ifdef CONFIG_PM 302#ifdef CONFIG_PM
302 .bus_suspend = ohci_bus_suspend, 303 .bus_suspend = ohci_bus_suspend,
303 .bus_resume = ohci_bus_resume, 304 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c
index 9c9f3b59186f..9b547407c934 100644
--- a/drivers/usb/host/ohci-q.c
+++ b/drivers/usb/host/ohci-q.c
@@ -952,6 +952,7 @@ rescan_this:
952 struct urb *urb; 952 struct urb *urb;
953 urb_priv_t *urb_priv; 953 urb_priv_t *urb_priv;
954 __hc32 savebits; 954 __hc32 savebits;
955 u32 tdINFO;
955 956
956 td = list_entry (entry, struct td, td_list); 957 td = list_entry (entry, struct td, td_list);
957 urb = td->urb; 958 urb = td->urb;
@@ -966,6 +967,17 @@ rescan_this:
966 savebits = *prev & ~cpu_to_hc32 (ohci, TD_MASK); 967 savebits = *prev & ~cpu_to_hc32 (ohci, TD_MASK);
967 *prev = td->hwNextTD | savebits; 968 *prev = td->hwNextTD | savebits;
968 969
970 /* If this was unlinked, the TD may not have been
971 * retired ... so manually save the data toggle.
972 * The controller ignores the value we save for
973 * control and ISO endpoints.
974 */
975 tdINFO = hc32_to_cpup(ohci, &td->hwINFO);
976 if ((tdINFO & TD_T) == TD_T_DATA0)
977 ed->hwHeadP &= ~cpu_to_hc32(ohci, ED_C);
978 else if ((tdINFO & TD_T) == TD_T_DATA1)
979 ed->hwHeadP |= cpu_to_hc32(ohci, ED_C);
980
969 /* HC may have partly processed this TD */ 981 /* HC may have partly processed this TD */
970 td_done (ohci, urb, td); 982 td_done (ohci, urb, td);
971 urb_priv->td_cnt++; 983 urb_priv->td_cnt++;
diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
index a73d2ff322e2..ead4772f0f27 100644
--- a/drivers/usb/host/ohci-s3c2410.c
+++ b/drivers/usb/host/ohci-s3c2410.c
@@ -466,6 +466,7 @@ static const struct hc_driver ohci_s3c2410_hc_driver = {
466 */ 466 */
467 .hub_status_data = ohci_s3c2410_hub_status_data, 467 .hub_status_data = ohci_s3c2410_hub_status_data,
468 .hub_control = ohci_s3c2410_hub_control, 468 .hub_control = ohci_s3c2410_hub_control,
469 .hub_irq_enable = ohci_rhsc_enable,
469#ifdef CONFIG_PM 470#ifdef CONFIG_PM
470 .bus_suspend = ohci_bus_suspend, 471 .bus_suspend = ohci_bus_suspend,
471 .bus_resume = ohci_bus_resume, 472 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-sa1111.c b/drivers/usb/host/ohci-sa1111.c
index 99438c65981b..0f48f2d99226 100644
--- a/drivers/usb/host/ohci-sa1111.c
+++ b/drivers/usb/host/ohci-sa1111.c
@@ -231,6 +231,7 @@ static const struct hc_driver ohci_sa1111_hc_driver = {
231 */ 231 */
232 .hub_status_data = ohci_hub_status_data, 232 .hub_status_data = ohci_hub_status_data,
233 .hub_control = ohci_hub_control, 233 .hub_control = ohci_hub_control,
234 .hub_irq_enable = ohci_rhsc_enable,
234#ifdef CONFIG_PM 235#ifdef CONFIG_PM
235 .bus_suspend = ohci_bus_suspend, 236 .bus_suspend = ohci_bus_suspend,
236 .bus_resume = ohci_bus_resume, 237 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-sh.c b/drivers/usb/host/ohci-sh.c
index 60f03cc7ec4f..e7ee607278fe 100644
--- a/drivers/usb/host/ohci-sh.c
+++ b/drivers/usb/host/ohci-sh.c
@@ -68,6 +68,7 @@ static const struct hc_driver ohci_sh_hc_driver = {
68 */ 68 */
69 .hub_status_data = ohci_hub_status_data, 69 .hub_status_data = ohci_hub_status_data,
70 .hub_control = ohci_hub_control, 70 .hub_control = ohci_hub_control,
71 .hub_irq_enable = ohci_rhsc_enable,
71#ifdef CONFIG_PM 72#ifdef CONFIG_PM
72 .bus_suspend = ohci_bus_suspend, 73 .bus_suspend = ohci_bus_suspend,
73 .bus_resume = ohci_bus_resume, 74 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-sm501.c b/drivers/usb/host/ohci-sm501.c
index e899a77dfb83..e610698c6b60 100644
--- a/drivers/usb/host/ohci-sm501.c
+++ b/drivers/usb/host/ohci-sm501.c
@@ -75,6 +75,7 @@ static const struct hc_driver ohci_sm501_hc_driver = {
75 */ 75 */
76 .hub_status_data = ohci_hub_status_data, 76 .hub_status_data = ohci_hub_status_data,
77 .hub_control = ohci_hub_control, 77 .hub_control = ohci_hub_control,
78 .hub_irq_enable = ohci_rhsc_enable,
78#ifdef CONFIG_PM 79#ifdef CONFIG_PM
79 .bus_suspend = ohci_bus_suspend, 80 .bus_suspend = ohci_bus_suspend,
80 .bus_resume = ohci_bus_resume, 81 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/ohci-ssb.c b/drivers/usb/host/ohci-ssb.c
index c4265caec780..7275186db315 100644
--- a/drivers/usb/host/ohci-ssb.c
+++ b/drivers/usb/host/ohci-ssb.c
@@ -81,6 +81,7 @@ static const struct hc_driver ssb_ohci_hc_driver = {
81 81
82 .hub_status_data = ohci_hub_status_data, 82 .hub_status_data = ohci_hub_status_data,
83 .hub_control = ohci_hub_control, 83 .hub_control = ohci_hub_control,
84 .hub_irq_enable = ohci_rhsc_enable,
84#ifdef CONFIG_PM 85#ifdef CONFIG_PM
85 .bus_suspend = ohci_bus_suspend, 86 .bus_suspend = ohci_bus_suspend,
86 .bus_resume = ohci_bus_resume, 87 .bus_resume = ohci_bus_resume,
diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c
index f29307405bb3..9b6323f768b2 100644
--- a/drivers/usb/host/u132-hcd.c
+++ b/drivers/usb/host/u132-hcd.c
@@ -2934,6 +2934,16 @@ static int u132_start_port_reset(struct usb_hcd *hcd, unsigned port_num)
2934 return 0; 2934 return 0;
2935} 2935}
2936 2936
2937static void u132_hub_irq_enable(struct usb_hcd *hcd)
2938{
2939 struct u132 *u132 = hcd_to_u132(hcd);
2940 if (u132->going > 1) {
2941 dev_err(&u132->platform_dev->dev, "device has been removed %d\n"
2942 , u132->going);
2943 } else if (u132->going > 0)
2944 dev_err(&u132->platform_dev->dev, "device is being removed\n");
2945}
2946
2937 2947
2938#ifdef CONFIG_PM 2948#ifdef CONFIG_PM
2939static int u132_bus_suspend(struct usb_hcd *hcd) 2949static int u132_bus_suspend(struct usb_hcd *hcd)
@@ -2985,6 +2995,7 @@ static struct hc_driver u132_hc_driver = {
2985 .bus_suspend = u132_bus_suspend, 2995 .bus_suspend = u132_bus_suspend,
2986 .bus_resume = u132_bus_resume, 2996 .bus_resume = u132_bus_resume,
2987 .start_port_reset = u132_start_port_reset, 2997 .start_port_reset = u132_start_port_reset,
2998 .hub_irq_enable = u132_hub_irq_enable,
2988}; 2999};
2989 3000
2990/* 3001/*
diff --git a/drivers/usb/misc/sisusbvga/sisusb.c b/drivers/usb/misc/sisusbvga/sisusb.c
index cb7fa0eaf3ae..33182f4c2267 100644
--- a/drivers/usb/misc/sisusbvga/sisusb.c
+++ b/drivers/usb/misc/sisusbvga/sisusb.c
@@ -3264,8 +3264,6 @@ static void sisusb_disconnect(struct usb_interface *intf)
3264 3264
3265 /* decrement our usage count */ 3265 /* decrement our usage count */
3266 kref_put(&sisusb->kref, sisusb_delete); 3266 kref_put(&sisusb->kref, sisusb_delete);
3267
3268 dev_info(&sisusb->sisusb_dev->dev, "Disconnected\n");
3269} 3267}
3270 3268
3271static struct usb_device_id sisusb_table [] = { 3269static struct usb_device_id sisusb_table [] = {
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 5234e7a3bd2c..0ff4a3971e45 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -637,6 +637,7 @@ static struct usb_device_id id_table_combined [] = {
637 { USB_DEVICE(FTDI_VID, FTDI_OOCDLINK_PID), 637 { USB_DEVICE(FTDI_VID, FTDI_OOCDLINK_PID),
638 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, 638 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
639 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) }, 639 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
640 { USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },
640 { }, /* Optional parameter entry */ 641 { }, /* Optional parameter entry */
641 { } /* Terminating entry */ 642 { } /* Terminating entry */
642}; 643};
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index 06e0ecabb3eb..8302eca893ea 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -828,6 +828,9 @@
828/* Propox devices */ 828/* Propox devices */
829#define FTDI_PROPOX_JTAGCABLEII_PID 0xD738 829#define FTDI_PROPOX_JTAGCABLEII_PID 0xD738
830 830
831/* Rig Expert Ukraine devices */
832#define FTDI_REU_TINY_PID 0xED22 /* RigExpert Tiny */
833
831/* Commands */ 834/* Commands */
832#define FTDI_SIO_RESET 0 /* Reset the port */ 835#define FTDI_SIO_RESET 0 /* Reset the port */
833#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */ 836#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */
diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c
index ea924dc48496..d9fb3768a2d7 100644
--- a/drivers/usb/serial/ipaq.c
+++ b/drivers/usb/serial/ipaq.c
@@ -570,7 +570,12 @@ static struct usb_serial_driver ipaq_device = {
570 .description = "PocketPC PDA", 570 .description = "PocketPC PDA",
571 .usb_driver = &ipaq_driver, 571 .usb_driver = &ipaq_driver,
572 .id_table = ipaq_id_table, 572 .id_table = ipaq_id_table,
573 .num_ports = 2, 573 /*
574 * some devices have an extra endpoint, which
575 * must be ignored as it would make the core
576 * create a second port which oopses when used
577 */
578 .num_ports = 1,
574 .open = ipaq_open, 579 .open = ipaq_open,
575 .close = ipaq_close, 580 .close = ipaq_close,
576 .attach = ipaq_startup, 581 .attach = ipaq_startup,
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 43cfde83a93b..a73420dd052a 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -306,6 +306,7 @@ static struct usb_device_id option_ids[] = {
306 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) }, 306 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
307 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, 307 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
308 { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, 308 { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
309 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */
309 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ 310 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
310 { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ 311 { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
311 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, 312 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index 103195abd417..2a0dd1b50dc4 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -57,6 +57,7 @@ static struct usb_device_id id_table [] = {
57 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_PHAROS) }, 57 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_PHAROS) },
58 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ALDIGA) }, 58 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ALDIGA) },
59 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_MMX) }, 59 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_MMX) },
60 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_GPRS) },
60 { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, 61 { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) },
61 { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, 62 { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) },
62 { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) }, 63 { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) },
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
index cff160abb130..6ac3bbcf7a22 100644
--- a/drivers/usb/serial/pl2303.h
+++ b/drivers/usb/serial/pl2303.h
@@ -15,6 +15,7 @@
15#define PL2303_PRODUCT_ID_RSAQ3 0xaaa2 15#define PL2303_PRODUCT_ID_RSAQ3 0xaaa2
16#define PL2303_PRODUCT_ID_ALDIGA 0x0611 16#define PL2303_PRODUCT_ID_ALDIGA 0x0611
17#define PL2303_PRODUCT_ID_MMX 0x0612 17#define PL2303_PRODUCT_ID_MMX 0x0612
18#define PL2303_PRODUCT_ID_GPRS 0x0609
18 19
19#define ATEN_VENDOR_ID 0x0557 20#define ATEN_VENDOR_ID 0x0557
20#define ATEN_VENDOR_ID2 0x0547 21#define ATEN_VENDOR_ID2 0x0547
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index 45fe3663fa7f..39a7c11795c4 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -402,11 +402,19 @@ UNUSUAL_DEV( 0x04a5, 0x3010, 0x0100, 0x0100,
402 US_FL_IGNORE_RESIDUE ), 402 US_FL_IGNORE_RESIDUE ),
403 403
404#ifdef CONFIG_USB_STORAGE_CYPRESS_ATACB 404#ifdef CONFIG_USB_STORAGE_CYPRESS_ATACB
405/* CY7C68300 : support atacb */
405UNUSUAL_DEV( 0x04b4, 0x6830, 0x0000, 0x9999, 406UNUSUAL_DEV( 0x04b4, 0x6830, 0x0000, 0x9999,
406 "Cypress", 407 "Cypress",
407 "Cypress AT2LP", 408 "Cypress AT2LP",
408 US_SC_CYP_ATACB, US_PR_DEVICE, NULL, 409 US_SC_CYP_ATACB, US_PR_DEVICE, NULL,
409 0), 410 0),
411
412/* CY7C68310 : support atacb and atacb2 */
413UNUSUAL_DEV( 0x04b4, 0x6831, 0x0000, 0x9999,
414 "Cypress",
415 "Cypress ISD-300LP",
416 US_SC_CYP_ATACB, US_PR_DEVICE, NULL,
417 0),
410#endif 418#endif
411 419
412/* Reported by Simon Levitt <simon@whattf.com> 420/* Reported by Simon Levitt <simon@whattf.com>
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 002b61b4f0f6..e0c5f96b273d 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -1825,12 +1825,13 @@ config FB_FSL_DIU
1825 1825
1826config FB_W100 1826config FB_W100
1827 tristate "W100 frame buffer support" 1827 tristate "W100 frame buffer support"
1828 depends on FB && PXA_SHARPSL 1828 depends on FB && ARCH_PXA
1829 select FB_CFB_FILLRECT 1829 select FB_CFB_FILLRECT
1830 select FB_CFB_COPYAREA 1830 select FB_CFB_COPYAREA
1831 select FB_CFB_IMAGEBLIT 1831 select FB_CFB_IMAGEBLIT
1832 ---help--- 1832 ---help---
1833 Frame buffer driver for the w100 as found on the Sharp SL-Cxx series. 1833 Frame buffer driver for the w100 as found on the Sharp SL-Cxx series.
1834 It can also drive the w3220 chip found on iPAQ hx4700.
1834 1835
1835 This driver is also available as a module ( = code which can be 1836 This driver is also available as a module ( = code which can be
1836 inserted and removed from the running kernel whenever you want). The 1837 inserted and removed from the running kernel whenever you want). The
diff --git a/drivers/video/fsl-diu-fb.c b/drivers/video/fsl-diu-fb.c
index 0a2785361ca3..712dabc6269f 100644
--- a/drivers/video/fsl-diu-fb.c
+++ b/drivers/video/fsl-diu-fb.c
@@ -286,7 +286,7 @@ static struct diu_pool pool;
286 * rheap and make the furture large allocation fail. 286 * rheap and make the furture large allocation fail.
287 */ 287 */
288 288
289void *fsl_diu_alloc(unsigned long size, phys_addr_t *phys) 289static void *fsl_diu_alloc(unsigned long size, phys_addr_t *phys)
290{ 290{
291 void *virt; 291 void *virt;
292 292
@@ -311,12 +311,12 @@ void *fsl_diu_alloc(unsigned long size, phys_addr_t *phys)
311 memset(virt, 0, size); 311 memset(virt, 0, size);
312 } 312 }
313 313
314 pr_debug("rh virt=%p phys=%lx\n", virt, *phys); 314 pr_debug("rh virt=%p phys=%llx\n", virt, (unsigned long long)*phys);
315 315
316 return virt; 316 return virt;
317} 317}
318 318
319void fsl_diu_free(void *p, unsigned long size) 319static void fsl_diu_free(void *p, unsigned long size)
320{ 320{
321 pr_debug("p=%p size=%lu\n", p, size); 321 pr_debug("p=%p size=%lu\n", p, size);
322 322
@@ -770,7 +770,7 @@ static int map_video_memory(struct fb_info *info)
770 info->fix.smem_len = info->fix.line_length * info->var.yres_virtual; 770 info->fix.smem_len = info->fix.line_length * info->var.yres_virtual;
771 pr_debug("MAP_VIDEO_MEMORY: smem_len = %d\n", info->fix.smem_len); 771 pr_debug("MAP_VIDEO_MEMORY: smem_len = %d\n", info->fix.smem_len);
772 info->screen_base = fsl_diu_alloc(info->fix.smem_len, &phys); 772 info->screen_base = fsl_diu_alloc(info->fix.smem_len, &phys);
773 if (info->screen_base == 0) { 773 if (info->screen_base == NULL) {
774 printk(KERN_ERR "Unable to allocate fb memory\n"); 774 printk(KERN_ERR "Unable to allocate fb memory\n");
775 return -ENOMEM; 775 return -ENOMEM;
776 } 776 }
@@ -788,7 +788,7 @@ static int map_video_memory(struct fb_info *info)
788static void unmap_video_memory(struct fb_info *info) 788static void unmap_video_memory(struct fb_info *info)
789{ 789{
790 fsl_diu_free(info->screen_base, info->fix.smem_len); 790 fsl_diu_free(info->screen_base, info->fix.smem_len);
791 info->screen_base = 0; 791 info->screen_base = NULL;
792 info->fix.smem_start = 0; 792 info->fix.smem_start = 0;
793 info->fix.smem_len = 0; 793 info->fix.smem_len = 0;
794} 794}
@@ -1158,7 +1158,7 @@ static int init_fbinfo(struct fb_info *info)
1158 return 0; 1158 return 0;
1159} 1159}
1160 1160
1161static int install_fb(struct fb_info *info) 1161static int __devinit install_fb(struct fb_info *info)
1162{ 1162{
1163 int rc; 1163 int rc;
1164 struct mfb_info *mfbi = info->par; 1164 struct mfb_info *mfbi = info->par;
@@ -1233,7 +1233,7 @@ static int install_fb(struct fb_info *info)
1233 return 0; 1233 return 0;
1234} 1234}
1235 1235
1236static void __exit uninstall_fb(struct fb_info *info) 1236static void uninstall_fb(struct fb_info *info)
1237{ 1237{
1238 struct mfb_info *mfbi = info->par; 1238 struct mfb_info *mfbi = info->par;
1239 1239
@@ -1287,7 +1287,7 @@ static int request_irq_local(int irq)
1287 /* Read to clear the status */ 1287 /* Read to clear the status */
1288 status = in_be32(&hw->int_status); 1288 status = in_be32(&hw->int_status);
1289 1289
1290 ret = request_irq(irq, fsl_diu_isr, 0, "diu", 0); 1290 ret = request_irq(irq, fsl_diu_isr, 0, "diu", NULL);
1291 if (ret) 1291 if (ret)
1292 pr_info("Request diu IRQ failed.\n"); 1292 pr_info("Request diu IRQ failed.\n");
1293 else { 1293 else {
@@ -1312,7 +1312,7 @@ static void free_irq_local(int irq)
1312 /* Disable all LCDC interrupt */ 1312 /* Disable all LCDC interrupt */
1313 out_be32(&hw->int_mask, 0x1f); 1313 out_be32(&hw->int_mask, 0x1f);
1314 1314
1315 free_irq(irq, 0); 1315 free_irq(irq, NULL);
1316} 1316}
1317 1317
1318#ifdef CONFIG_PM 1318#ifdef CONFIG_PM
@@ -1324,7 +1324,7 @@ static int fsl_diu_suspend(struct of_device *ofdev, pm_message_t state)
1324{ 1324{
1325 struct fsl_diu_data *machine_data; 1325 struct fsl_diu_data *machine_data;
1326 1326
1327 machine_data = dev_get_drvdata(&ofdev->dev); 1327 machine_data = dev_get_drvdata(&dev->dev);
1328 disable_lcdc(machine_data->fsl_diu_info[0]); 1328 disable_lcdc(machine_data->fsl_diu_info[0]);
1329 1329
1330 return 0; 1330 return 0;
@@ -1334,7 +1334,7 @@ static int fsl_diu_resume(struct of_device *ofdev)
1334{ 1334{
1335 struct fsl_diu_data *machine_data; 1335 struct fsl_diu_data *machine_data;
1336 1336
1337 machine_data = dev_get_drvdata(&ofdev->dev); 1337 machine_data = dev_get_drvdata(&dev->dev);
1338 enable_lcdc(machine_data->fsl_diu_info[0]); 1338 enable_lcdc(machine_data->fsl_diu_info[0]);
1339 1339
1340 return 0; 1340 return 0;
@@ -1353,7 +1353,8 @@ static int allocate_buf(struct diu_addr *buf, u32 size, u32 bytes_align)
1353 dma_addr_t paddr = 0; 1353 dma_addr_t paddr = 0;
1354 1354
1355 ssize = size + bytes_align; 1355 ssize = size + bytes_align;
1356 buf->vaddr = dma_alloc_coherent(0, ssize, &paddr, GFP_DMA | __GFP_ZERO); 1356 buf->vaddr = dma_alloc_coherent(NULL, ssize, &paddr, GFP_DMA |
1357 __GFP_ZERO);
1357 if (!buf->vaddr) 1358 if (!buf->vaddr)
1358 return -ENOMEM; 1359 return -ENOMEM;
1359 1360
@@ -1371,7 +1372,7 @@ static int allocate_buf(struct diu_addr *buf, u32 size, u32 bytes_align)
1371 1372
1372static void free_buf(struct diu_addr *buf, u32 size, u32 bytes_align) 1373static void free_buf(struct diu_addr *buf, u32 size, u32 bytes_align)
1373{ 1374{
1374 dma_free_coherent(0, size + bytes_align, 1375 dma_free_coherent(NULL, size + bytes_align,
1375 buf->vaddr, (buf->paddr - buf->offset)); 1376 buf->vaddr, (buf->paddr - buf->offset));
1376 return; 1377 return;
1377} 1378}
@@ -1411,7 +1412,7 @@ static ssize_t show_monitor(struct device *device,
1411 return diu_ops.show_monitor_port(machine_data->monitor_port, buf); 1412 return diu_ops.show_monitor_port(machine_data->monitor_port, buf);
1412} 1413}
1413 1414
1414static int fsl_diu_probe(struct of_device *ofdev, 1415static int __devinit fsl_diu_probe(struct of_device *ofdev,
1415 const struct of_device_id *match) 1416 const struct of_device_id *match)
1416{ 1417{
1417 struct device_node *np = ofdev->node; 1418 struct device_node *np = ofdev->node;
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c
index 7dcda187d9ba..fafe7db20d6d 100644
--- a/drivers/video/pxafb.c
+++ b/drivers/video/pxafb.c
@@ -1246,7 +1246,7 @@ static int pxafb_resume(struct platform_device *dev)
1246 * cache. Once this area is remapped, all virtual memory 1246 * cache. Once this area is remapped, all virtual memory
1247 * access to the video memory should occur at the new region. 1247 * access to the video memory should occur at the new region.
1248 */ 1248 */
1249static int __init pxafb_map_video_memory(struct pxafb_info *fbi) 1249static int __devinit pxafb_map_video_memory(struct pxafb_info *fbi)
1250{ 1250{
1251 /* 1251 /*
1252 * We reserve one page for the palette, plus the size 1252 * We reserve one page for the palette, plus the size
@@ -1348,7 +1348,7 @@ decode_mode:
1348 pxafb_decode_mode_info(fbi, inf->modes, inf->num_modes); 1348 pxafb_decode_mode_info(fbi, inf->modes, inf->num_modes);
1349} 1349}
1350 1350
1351static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev) 1351static struct pxafb_info * __devinit pxafb_init_fbinfo(struct device *dev)
1352{ 1352{
1353 struct pxafb_info *fbi; 1353 struct pxafb_info *fbi;
1354 void *addr; 1354 void *addr;
@@ -1410,7 +1410,7 @@ static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev)
1410} 1410}
1411 1411
1412#ifdef CONFIG_FB_PXA_PARAMETERS 1412#ifdef CONFIG_FB_PXA_PARAMETERS
1413static int __init parse_opt_mode(struct device *dev, const char *this_opt) 1413static int __devinit parse_opt_mode(struct device *dev, const char *this_opt)
1414{ 1414{
1415 struct pxafb_mach_info *inf = dev->platform_data; 1415 struct pxafb_mach_info *inf = dev->platform_data;
1416 1416
@@ -1469,7 +1469,7 @@ done:
1469 return 0; 1469 return 0;
1470} 1470}
1471 1471
1472static int __init parse_opt(struct device *dev, char *this_opt) 1472static int __devinit parse_opt(struct device *dev, char *this_opt)
1473{ 1473{
1474 struct pxafb_mach_info *inf = dev->platform_data; 1474 struct pxafb_mach_info *inf = dev->platform_data;
1475 struct pxafb_mode_info *mode = &inf->modes[0]; 1475 struct pxafb_mode_info *mode = &inf->modes[0];
@@ -1567,7 +1567,7 @@ static int __init parse_opt(struct device *dev, char *this_opt)
1567 return 0; 1567 return 0;
1568} 1568}
1569 1569
1570static int __init pxafb_parse_options(struct device *dev, char *options) 1570static int __devinit pxafb_parse_options(struct device *dev, char *options)
1571{ 1571{
1572 char *this_opt; 1572 char *this_opt;
1573 int ret; 1573 int ret;
@@ -1588,8 +1588,8 @@ static int __init pxafb_parse_options(struct device *dev, char *options)
1588 1588
1589static char g_options[256] __devinitdata = ""; 1589static char g_options[256] __devinitdata = "";
1590 1590
1591#ifndef CONFIG_MODULES 1591#ifndef MODULE
1592static int __devinit pxafb_setup_options(void) 1592static int __init pxafb_setup_options(void)
1593{ 1593{
1594 char *options = NULL; 1594 char *options = NULL;
1595 1595
@@ -1613,7 +1613,7 @@ MODULE_PARM_DESC(options, "LCD parameters (see Documentation/fb/pxafb.txt)");
1613#define pxafb_setup_options() (0) 1613#define pxafb_setup_options() (0)
1614#endif 1614#endif
1615 1615
1616static int __init pxafb_probe(struct platform_device *dev) 1616static int __devinit pxafb_probe(struct platform_device *dev)
1617{ 1617{
1618 struct pxafb_info *fbi; 1618 struct pxafb_info *fbi;
1619 struct pxafb_mach_info *inf; 1619 struct pxafb_mach_info *inf;
@@ -1685,14 +1685,14 @@ static int __init pxafb_probe(struct platform_device *dev)
1685 if (r == NULL) { 1685 if (r == NULL) {
1686 dev_err(&dev->dev, "no I/O memory resource defined\n"); 1686 dev_err(&dev->dev, "no I/O memory resource defined\n");
1687 ret = -ENODEV; 1687 ret = -ENODEV;
1688 goto failed; 1688 goto failed_fbi;
1689 } 1689 }
1690 1690
1691 r = request_mem_region(r->start, r->end - r->start + 1, dev->name); 1691 r = request_mem_region(r->start, r->end - r->start + 1, dev->name);
1692 if (r == NULL) { 1692 if (r == NULL) {
1693 dev_err(&dev->dev, "failed to request I/O memory\n"); 1693 dev_err(&dev->dev, "failed to request I/O memory\n");
1694 ret = -EBUSY; 1694 ret = -EBUSY;
1695 goto failed; 1695 goto failed_fbi;
1696 } 1696 }
1697 1697
1698 fbi->mmio_base = ioremap(r->start, r->end - r->start + 1); 1698 fbi->mmio_base = ioremap(r->start, r->end - r->start + 1);
@@ -1735,8 +1735,17 @@ static int __init pxafb_probe(struct platform_device *dev)
1735 * This makes sure that our colour bitfield 1735 * This makes sure that our colour bitfield
1736 * descriptors are correctly initialised. 1736 * descriptors are correctly initialised.
1737 */ 1737 */
1738 pxafb_check_var(&fbi->fb.var, &fbi->fb); 1738 ret = pxafb_check_var(&fbi->fb.var, &fbi->fb);
1739 pxafb_set_par(&fbi->fb); 1739 if (ret) {
1740 dev_err(&dev->dev, "failed to get suitable mode\n");
1741 goto failed_free_irq;
1742 }
1743
1744 ret = pxafb_set_par(&fbi->fb);
1745 if (ret) {
1746 dev_err(&dev->dev, "Failed to set parameters\n");
1747 goto failed_free_irq;
1748 }
1740 1749
1741 platform_set_drvdata(dev, fbi); 1750 platform_set_drvdata(dev, fbi);
1742 1751
@@ -1744,7 +1753,7 @@ static int __init pxafb_probe(struct platform_device *dev)
1744 if (ret < 0) { 1753 if (ret < 0) {
1745 dev_err(&dev->dev, 1754 dev_err(&dev->dev,
1746 "Failed to register framebuffer device: %d\n", ret); 1755 "Failed to register framebuffer device: %d\n", ret);
1747 goto failed_free_irq; 1756 goto failed_free_cmap;
1748 } 1757 }
1749 1758
1750#ifdef CONFIG_CPU_FREQ 1759#ifdef CONFIG_CPU_FREQ
@@ -1763,18 +1772,23 @@ static int __init pxafb_probe(struct platform_device *dev)
1763 1772
1764 return 0; 1773 return 0;
1765 1774
1775failed_free_cmap:
1776 if (fbi->fb.cmap.len)
1777 fb_dealloc_cmap(&fbi->fb.cmap);
1766failed_free_irq: 1778failed_free_irq:
1767 free_irq(irq, fbi); 1779 free_irq(irq, fbi);
1768failed_free_res:
1769 release_mem_region(r->start, r->end - r->start + 1);
1770failed_free_io:
1771 iounmap(fbi->mmio_base);
1772failed_free_mem: 1780failed_free_mem:
1773 dma_free_writecombine(&dev->dev, fbi->map_size, 1781 dma_free_writecombine(&dev->dev, fbi->map_size,
1774 fbi->map_cpu, fbi->map_dma); 1782 fbi->map_cpu, fbi->map_dma);
1775failed: 1783failed_free_io:
1784 iounmap(fbi->mmio_base);
1785failed_free_res:
1786 release_mem_region(r->start, r->end - r->start + 1);
1787failed_fbi:
1788 clk_put(fbi->clk);
1776 platform_set_drvdata(dev, NULL); 1789 platform_set_drvdata(dev, NULL);
1777 kfree(fbi); 1790 kfree(fbi);
1791failed:
1778 return ret; 1792 return ret;
1779} 1793}
1780 1794
@@ -1787,7 +1801,7 @@ static struct platform_driver pxafb_driver = {
1787 }, 1801 },
1788}; 1802};
1789 1803
1790static int __devinit pxafb_init(void) 1804static int __init pxafb_init(void)
1791{ 1805{
1792 if (pxafb_setup_options()) 1806 if (pxafb_setup_options())
1793 return -EINVAL; 1807 return -EINVAL;
diff --git a/drivers/video/w100fb.c b/drivers/video/w100fb.c
index 30469bf906e5..d0674f1e3f10 100644
--- a/drivers/video/w100fb.c
+++ b/drivers/video/w100fb.c
@@ -1003,6 +1003,7 @@ static struct w100_pll_info xtal_14318000[] = {
1003static struct w100_pll_info xtal_16000000[] = { 1003static struct w100_pll_info xtal_16000000[] = {
1004 /*freq M N_int N_fac tfgoal lock_time */ 1004 /*freq M N_int N_fac tfgoal lock_time */
1005 { 72, 1, 8, 0, 0xe0, 48}, /* tfgoal guessed */ 1005 { 72, 1, 8, 0, 0xe0, 48}, /* tfgoal guessed */
1006 { 80, 1, 9, 0, 0xe0, 13}, /* tfgoal guessed */
1006 { 95, 1, 10, 7, 0xe0, 38}, /* tfgoal guessed */ 1007 { 95, 1, 10, 7, 0xe0, 38}, /* tfgoal guessed */
1007 { 96, 1, 11, 0, 0xe0, 36}, /* tfgoal guessed */ 1008 { 96, 1, 11, 0, 0xe0, 36}, /* tfgoal guessed */
1008 { 0, 0, 0, 0, 0, 0}, 1009 { 0, 0, 0, 0, 0, 0},
diff --git a/drivers/video/xen-fbfront.c b/drivers/video/xen-fbfront.c
index 619a6f8d65a2..47ed39b52f9c 100644
--- a/drivers/video/xen-fbfront.c
+++ b/drivers/video/xen-fbfront.c
@@ -18,6 +18,7 @@
18 * frame buffer. 18 * frame buffer.
19 */ 19 */
20 20
21#include <linux/console.h>
21#include <linux/kernel.h> 22#include <linux/kernel.h>
22#include <linux/errno.h> 23#include <linux/errno.h>
23#include <linux/fb.h> 24#include <linux/fb.h>
@@ -42,37 +43,68 @@ struct xenfb_info {
42 struct xenfb_page *page; 43 struct xenfb_page *page;
43 unsigned long *mfns; 44 unsigned long *mfns;
44 int update_wanted; /* XENFB_TYPE_UPDATE wanted */ 45 int update_wanted; /* XENFB_TYPE_UPDATE wanted */
46 int feature_resize; /* XENFB_TYPE_RESIZE ok */
47 struct xenfb_resize resize; /* protected by resize_lock */
48 int resize_dpy; /* ditto */
49 spinlock_t resize_lock;
45 50
46 struct xenbus_device *xbdev; 51 struct xenbus_device *xbdev;
47}; 52};
48 53
49static u32 xenfb_mem_len = XENFB_WIDTH * XENFB_HEIGHT * XENFB_DEPTH / 8; 54#define XENFB_DEFAULT_FB_LEN (XENFB_WIDTH * XENFB_HEIGHT * XENFB_DEPTH / 8)
50 55
56enum { KPARAM_MEM, KPARAM_WIDTH, KPARAM_HEIGHT, KPARAM_CNT };
57static int video[KPARAM_CNT] = { 2, XENFB_WIDTH, XENFB_HEIGHT };
58module_param_array(video, int, NULL, 0);
59MODULE_PARM_DESC(video,
60 "Video memory size in MB, width, height in pixels (default 2,800,600)");
61
62static void xenfb_make_preferred_console(void);
51static int xenfb_remove(struct xenbus_device *); 63static int xenfb_remove(struct xenbus_device *);
52static void xenfb_init_shared_page(struct xenfb_info *); 64static void xenfb_init_shared_page(struct xenfb_info *, struct fb_info *);
53static int xenfb_connect_backend(struct xenbus_device *, struct xenfb_info *); 65static int xenfb_connect_backend(struct xenbus_device *, struct xenfb_info *);
54static void xenfb_disconnect_backend(struct xenfb_info *); 66static void xenfb_disconnect_backend(struct xenfb_info *);
55 67
68static void xenfb_send_event(struct xenfb_info *info,
69 union xenfb_out_event *event)
70{
71 u32 prod;
72
73 prod = info->page->out_prod;
74 /* caller ensures !xenfb_queue_full() */
75 mb(); /* ensure ring space available */
76 XENFB_OUT_RING_REF(info->page, prod) = *event;
77 wmb(); /* ensure ring contents visible */
78 info->page->out_prod = prod + 1;
79
80 notify_remote_via_irq(info->irq);
81}
82
56static void xenfb_do_update(struct xenfb_info *info, 83static void xenfb_do_update(struct xenfb_info *info,
57 int x, int y, int w, int h) 84 int x, int y, int w, int h)
58{ 85{
59 union xenfb_out_event event; 86 union xenfb_out_event event;
60 u32 prod;
61 87
88 memset(&event, 0, sizeof(event));
62 event.type = XENFB_TYPE_UPDATE; 89 event.type = XENFB_TYPE_UPDATE;
63 event.update.x = x; 90 event.update.x = x;
64 event.update.y = y; 91 event.update.y = y;
65 event.update.width = w; 92 event.update.width = w;
66 event.update.height = h; 93 event.update.height = h;
67 94
68 prod = info->page->out_prod;
69 /* caller ensures !xenfb_queue_full() */ 95 /* caller ensures !xenfb_queue_full() */
70 mb(); /* ensure ring space available */ 96 xenfb_send_event(info, &event);
71 XENFB_OUT_RING_REF(info->page, prod) = event; 97}
72 wmb(); /* ensure ring contents visible */
73 info->page->out_prod = prod + 1;
74 98
75 notify_remote_via_irq(info->irq); 99static void xenfb_do_resize(struct xenfb_info *info)
100{
101 union xenfb_out_event event;
102
103 memset(&event, 0, sizeof(event));
104 event.resize = info->resize;
105
106 /* caller ensures !xenfb_queue_full() */
107 xenfb_send_event(info, &event);
76} 108}
77 109
78static int xenfb_queue_full(struct xenfb_info *info) 110static int xenfb_queue_full(struct xenfb_info *info)
@@ -84,12 +116,28 @@ static int xenfb_queue_full(struct xenfb_info *info)
84 return prod - cons == XENFB_OUT_RING_LEN; 116 return prod - cons == XENFB_OUT_RING_LEN;
85} 117}
86 118
119static void xenfb_handle_resize_dpy(struct xenfb_info *info)
120{
121 unsigned long flags;
122
123 spin_lock_irqsave(&info->resize_lock, flags);
124 if (info->resize_dpy) {
125 if (!xenfb_queue_full(info)) {
126 info->resize_dpy = 0;
127 xenfb_do_resize(info);
128 }
129 }
130 spin_unlock_irqrestore(&info->resize_lock, flags);
131}
132
87static void xenfb_refresh(struct xenfb_info *info, 133static void xenfb_refresh(struct xenfb_info *info,
88 int x1, int y1, int w, int h) 134 int x1, int y1, int w, int h)
89{ 135{
90 unsigned long flags; 136 unsigned long flags;
91 int y2 = y1 + h - 1;
92 int x2 = x1 + w - 1; 137 int x2 = x1 + w - 1;
138 int y2 = y1 + h - 1;
139
140 xenfb_handle_resize_dpy(info);
93 141
94 if (!info->update_wanted) 142 if (!info->update_wanted)
95 return; 143 return;
@@ -222,6 +270,57 @@ static ssize_t xenfb_write(struct fb_info *p, const char __user *buf,
222 return res; 270 return res;
223} 271}
224 272
273static int
274xenfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
275{
276 struct xenfb_info *xenfb_info;
277 int required_mem_len;
278
279 xenfb_info = info->par;
280
281 if (!xenfb_info->feature_resize) {
282 if (var->xres == video[KPARAM_WIDTH] &&
283 var->yres == video[KPARAM_HEIGHT] &&
284 var->bits_per_pixel == xenfb_info->page->depth) {
285 return 0;
286 }
287 return -EINVAL;
288 }
289
290 /* Can't resize past initial width and height */
291 if (var->xres > video[KPARAM_WIDTH] || var->yres > video[KPARAM_HEIGHT])
292 return -EINVAL;
293
294 required_mem_len = var->xres * var->yres * xenfb_info->page->depth / 8;
295 if (var->bits_per_pixel == xenfb_info->page->depth &&
296 var->xres <= info->fix.line_length / (XENFB_DEPTH / 8) &&
297 required_mem_len <= info->fix.smem_len) {
298 var->xres_virtual = var->xres;
299 var->yres_virtual = var->yres;
300 return 0;
301 }
302 return -EINVAL;
303}
304
305static int xenfb_set_par(struct fb_info *info)
306{
307 struct xenfb_info *xenfb_info;
308 unsigned long flags;
309
310 xenfb_info = info->par;
311
312 spin_lock_irqsave(&xenfb_info->resize_lock, flags);
313 xenfb_info->resize.type = XENFB_TYPE_RESIZE;
314 xenfb_info->resize.width = info->var.xres;
315 xenfb_info->resize.height = info->var.yres;
316 xenfb_info->resize.stride = info->fix.line_length;
317 xenfb_info->resize.depth = info->var.bits_per_pixel;
318 xenfb_info->resize.offset = 0;
319 xenfb_info->resize_dpy = 1;
320 spin_unlock_irqrestore(&xenfb_info->resize_lock, flags);
321 return 0;
322}
323
225static struct fb_ops xenfb_fb_ops = { 324static struct fb_ops xenfb_fb_ops = {
226 .owner = THIS_MODULE, 325 .owner = THIS_MODULE,
227 .fb_read = fb_sys_read, 326 .fb_read = fb_sys_read,
@@ -230,6 +329,8 @@ static struct fb_ops xenfb_fb_ops = {
230 .fb_fillrect = xenfb_fillrect, 329 .fb_fillrect = xenfb_fillrect,
231 .fb_copyarea = xenfb_copyarea, 330 .fb_copyarea = xenfb_copyarea,
232 .fb_imageblit = xenfb_imageblit, 331 .fb_imageblit = xenfb_imageblit,
332 .fb_check_var = xenfb_check_var,
333 .fb_set_par = xenfb_set_par,
233}; 334};
234 335
235static irqreturn_t xenfb_event_handler(int rq, void *dev_id) 336static irqreturn_t xenfb_event_handler(int rq, void *dev_id)
@@ -258,6 +359,8 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
258{ 359{
259 struct xenfb_info *info; 360 struct xenfb_info *info;
260 struct fb_info *fb_info; 361 struct fb_info *fb_info;
362 int fb_size;
363 int val;
261 int ret; 364 int ret;
262 365
263 info = kzalloc(sizeof(*info), GFP_KERNEL); 366 info = kzalloc(sizeof(*info), GFP_KERNEL);
@@ -265,18 +368,35 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
265 xenbus_dev_fatal(dev, -ENOMEM, "allocating info structure"); 368 xenbus_dev_fatal(dev, -ENOMEM, "allocating info structure");
266 return -ENOMEM; 369 return -ENOMEM;
267 } 370 }
371
372 /* Limit kernel param videoram amount to what is in xenstore */
373 if (xenbus_scanf(XBT_NIL, dev->otherend, "videoram", "%d", &val) == 1) {
374 if (val < video[KPARAM_MEM])
375 video[KPARAM_MEM] = val;
376 }
377
378 /* If requested res does not fit in available memory, use default */
379 fb_size = video[KPARAM_MEM] * 1024 * 1024;
380 if (video[KPARAM_WIDTH] * video[KPARAM_HEIGHT] * XENFB_DEPTH / 8
381 > fb_size) {
382 video[KPARAM_WIDTH] = XENFB_WIDTH;
383 video[KPARAM_HEIGHT] = XENFB_HEIGHT;
384 fb_size = XENFB_DEFAULT_FB_LEN;
385 }
386
268 dev->dev.driver_data = info; 387 dev->dev.driver_data = info;
269 info->xbdev = dev; 388 info->xbdev = dev;
270 info->irq = -1; 389 info->irq = -1;
271 info->x1 = info->y1 = INT_MAX; 390 info->x1 = info->y1 = INT_MAX;
272 spin_lock_init(&info->dirty_lock); 391 spin_lock_init(&info->dirty_lock);
392 spin_lock_init(&info->resize_lock);
273 393
274 info->fb = vmalloc(xenfb_mem_len); 394 info->fb = vmalloc(fb_size);
275 if (info->fb == NULL) 395 if (info->fb == NULL)
276 goto error_nomem; 396 goto error_nomem;
277 memset(info->fb, 0, xenfb_mem_len); 397 memset(info->fb, 0, fb_size);
278 398
279 info->nr_pages = (xenfb_mem_len + PAGE_SIZE - 1) >> PAGE_SHIFT; 399 info->nr_pages = (fb_size + PAGE_SIZE - 1) >> PAGE_SHIFT;
280 400
281 info->mfns = vmalloc(sizeof(unsigned long) * info->nr_pages); 401 info->mfns = vmalloc(sizeof(unsigned long) * info->nr_pages);
282 if (!info->mfns) 402 if (!info->mfns)
@@ -287,8 +407,6 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
287 if (!info->page) 407 if (!info->page)
288 goto error_nomem; 408 goto error_nomem;
289 409
290 xenfb_init_shared_page(info);
291
292 /* abusing framebuffer_alloc() to allocate pseudo_palette */ 410 /* abusing framebuffer_alloc() to allocate pseudo_palette */
293 fb_info = framebuffer_alloc(sizeof(u32) * 256, NULL); 411 fb_info = framebuffer_alloc(sizeof(u32) * 256, NULL);
294 if (fb_info == NULL) 412 if (fb_info == NULL)
@@ -301,9 +419,9 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
301 fb_info->screen_base = info->fb; 419 fb_info->screen_base = info->fb;
302 420
303 fb_info->fbops = &xenfb_fb_ops; 421 fb_info->fbops = &xenfb_fb_ops;
304 fb_info->var.xres_virtual = fb_info->var.xres = info->page->width; 422 fb_info->var.xres_virtual = fb_info->var.xres = video[KPARAM_WIDTH];
305 fb_info->var.yres_virtual = fb_info->var.yres = info->page->height; 423 fb_info->var.yres_virtual = fb_info->var.yres = video[KPARAM_HEIGHT];
306 fb_info->var.bits_per_pixel = info->page->depth; 424 fb_info->var.bits_per_pixel = XENFB_DEPTH;
307 425
308 fb_info->var.red = (struct fb_bitfield){16, 8, 0}; 426 fb_info->var.red = (struct fb_bitfield){16, 8, 0};
309 fb_info->var.green = (struct fb_bitfield){8, 8, 0}; 427 fb_info->var.green = (struct fb_bitfield){8, 8, 0};
@@ -315,9 +433,9 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
315 fb_info->var.vmode = FB_VMODE_NONINTERLACED; 433 fb_info->var.vmode = FB_VMODE_NONINTERLACED;
316 434
317 fb_info->fix.visual = FB_VISUAL_TRUECOLOR; 435 fb_info->fix.visual = FB_VISUAL_TRUECOLOR;
318 fb_info->fix.line_length = info->page->line_length; 436 fb_info->fix.line_length = fb_info->var.xres * XENFB_DEPTH / 8;
319 fb_info->fix.smem_start = 0; 437 fb_info->fix.smem_start = 0;
320 fb_info->fix.smem_len = xenfb_mem_len; 438 fb_info->fix.smem_len = fb_size;
321 strcpy(fb_info->fix.id, "xen"); 439 strcpy(fb_info->fix.id, "xen");
322 fb_info->fix.type = FB_TYPE_PACKED_PIXELS; 440 fb_info->fix.type = FB_TYPE_PACKED_PIXELS;
323 fb_info->fix.accel = FB_ACCEL_NONE; 441 fb_info->fix.accel = FB_ACCEL_NONE;
@@ -334,6 +452,8 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
334 fb_info->fbdefio = &xenfb_defio; 452 fb_info->fbdefio = &xenfb_defio;
335 fb_deferred_io_init(fb_info); 453 fb_deferred_io_init(fb_info);
336 454
455 xenfb_init_shared_page(info, fb_info);
456
337 ret = register_framebuffer(fb_info); 457 ret = register_framebuffer(fb_info);
338 if (ret) { 458 if (ret) {
339 fb_deferred_io_cleanup(fb_info); 459 fb_deferred_io_cleanup(fb_info);
@@ -348,6 +468,7 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
348 if (ret < 0) 468 if (ret < 0)
349 goto error; 469 goto error;
350 470
471 xenfb_make_preferred_console();
351 return 0; 472 return 0;
352 473
353 error_nomem: 474 error_nomem:
@@ -358,12 +479,34 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
358 return ret; 479 return ret;
359} 480}
360 481
482static __devinit void
483xenfb_make_preferred_console(void)
484{
485 struct console *c;
486
487 if (console_set_on_cmdline)
488 return;
489
490 acquire_console_sem();
491 for (c = console_drivers; c; c = c->next) {
492 if (!strcmp(c->name, "tty") && c->index == 0)
493 break;
494 }
495 release_console_sem();
496 if (c) {
497 unregister_console(c);
498 c->flags |= CON_CONSDEV;
499 c->flags &= ~CON_PRINTBUFFER; /* don't print again */
500 register_console(c);
501 }
502}
503
361static int xenfb_resume(struct xenbus_device *dev) 504static int xenfb_resume(struct xenbus_device *dev)
362{ 505{
363 struct xenfb_info *info = dev->dev.driver_data; 506 struct xenfb_info *info = dev->dev.driver_data;
364 507
365 xenfb_disconnect_backend(info); 508 xenfb_disconnect_backend(info);
366 xenfb_init_shared_page(info); 509 xenfb_init_shared_page(info, info->fb_info);
367 return xenfb_connect_backend(dev, info); 510 return xenfb_connect_backend(dev, info);
368} 511}
369 512
@@ -391,20 +534,23 @@ static unsigned long vmalloc_to_mfn(void *address)
391 return pfn_to_mfn(vmalloc_to_pfn(address)); 534 return pfn_to_mfn(vmalloc_to_pfn(address));
392} 535}
393 536
394static void xenfb_init_shared_page(struct xenfb_info *info) 537static void xenfb_init_shared_page(struct xenfb_info *info,
538 struct fb_info *fb_info)
395{ 539{
396 int i; 540 int i;
541 int epd = PAGE_SIZE / sizeof(info->mfns[0]);
397 542
398 for (i = 0; i < info->nr_pages; i++) 543 for (i = 0; i < info->nr_pages; i++)
399 info->mfns[i] = vmalloc_to_mfn(info->fb + i * PAGE_SIZE); 544 info->mfns[i] = vmalloc_to_mfn(info->fb + i * PAGE_SIZE);
400 545
401 info->page->pd[0] = vmalloc_to_mfn(info->mfns); 546 for (i = 0; i * epd < info->nr_pages; i++)
402 info->page->pd[1] = 0; 547 info->page->pd[i] = vmalloc_to_mfn(&info->mfns[i * epd]);
403 info->page->width = XENFB_WIDTH; 548
404 info->page->height = XENFB_HEIGHT; 549 info->page->width = fb_info->var.xres;
405 info->page->depth = XENFB_DEPTH; 550 info->page->height = fb_info->var.yres;
406 info->page->line_length = (info->page->depth / 8) * info->page->width; 551 info->page->depth = fb_info->var.bits_per_pixel;
407 info->page->mem_length = xenfb_mem_len; 552 info->page->line_length = fb_info->fix.line_length;
553 info->page->mem_length = fb_info->fix.smem_len;
408 info->page->in_cons = info->page->in_prod = 0; 554 info->page->in_cons = info->page->in_prod = 0;
409 info->page->out_cons = info->page->out_prod = 0; 555 info->page->out_cons = info->page->out_prod = 0;
410} 556}
@@ -504,6 +650,11 @@ InitWait:
504 val = 0; 650 val = 0;
505 if (val) 651 if (val)
506 info->update_wanted = 1; 652 info->update_wanted = 1;
653
654 if (xenbus_scanf(XBT_NIL, dev->otherend,
655 "feature-resize", "%d", &val) < 0)
656 val = 0;
657 info->feature_resize = val;
507 break; 658 break;
508 659
509 case XenbusStateClosing: 660 case XenbusStateClosing:
@@ -547,4 +698,6 @@ static void __exit xenfb_cleanup(void)
547module_init(xenfb_init); 698module_init(xenfb_init);
548module_exit(xenfb_cleanup); 699module_exit(xenfb_cleanup);
549 700
701MODULE_DESCRIPTION("Xen virtual framebuffer device frontend");
550MODULE_LICENSE("GPL"); 702MODULE_LICENSE("GPL");
703MODULE_ALIAS("xen:vfb");
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
index 6a63535fc04d..eaa3f2a79ff5 100644
--- a/drivers/watchdog/hpwdt.c
+++ b/drivers/watchdog/hpwdt.c
@@ -140,49 +140,53 @@ static struct pci_device_id hpwdt_devices[] = {
140}; 140};
141MODULE_DEVICE_TABLE(pci, hpwdt_devices); 141MODULE_DEVICE_TABLE(pci, hpwdt_devices);
142 142
143extern asmlinkage void asminline_call(struct cmn_registers *pi86Regs, unsigned long *pRomEntry);
144
143#ifndef CONFIG_X86_64 145#ifndef CONFIG_X86_64
144/* --32 Bit Bios------------------------------------------------------------ */ 146/* --32 Bit Bios------------------------------------------------------------ */
145 147
146#define HPWDT_ARCH 32 148#define HPWDT_ARCH 32
147 149
148static void asminline_call(struct cmn_registers *pi86Regs, 150asm(".text \n\t"
149 unsigned long *pRomEntry) 151 ".align 4 \n"
150{ 152 "asminline_call: \n\t"
151 asm("pushl %ebp \n\t" 153 "pushl %ebp \n\t"
152 "movl %esp, %ebp \n\t" 154 "movl %esp, %ebp \n\t"
153 "pusha \n\t" 155 "pusha \n\t"
154 "pushf \n\t" 156 "pushf \n\t"
155 "push %es \n\t" 157 "push %es \n\t"
156 "push %ds \n\t" 158 "push %ds \n\t"
157 "pop %es \n\t" 159 "pop %es \n\t"
158 "movl 8(%ebp),%eax \n\t" 160 "movl 8(%ebp),%eax \n\t"
159 "movl 4(%eax),%ebx \n\t" 161 "movl 4(%eax),%ebx \n\t"
160 "movl 8(%eax),%ecx \n\t" 162 "movl 8(%eax),%ecx \n\t"
161 "movl 12(%eax),%edx \n\t" 163 "movl 12(%eax),%edx \n\t"
162 "movl 16(%eax),%esi \n\t" 164 "movl 16(%eax),%esi \n\t"
163 "movl 20(%eax),%edi \n\t" 165 "movl 20(%eax),%edi \n\t"
164 "movl (%eax),%eax \n\t" 166 "movl (%eax),%eax \n\t"
165 "push %cs \n\t" 167 "push %cs \n\t"
166 "call *12(%ebp) \n\t" 168 "call *12(%ebp) \n\t"
167 "pushf \n\t" 169 "pushf \n\t"
168 "pushl %eax \n\t" 170 "pushl %eax \n\t"
169 "movl 8(%ebp),%eax \n\t" 171 "movl 8(%ebp),%eax \n\t"
170 "movl %ebx,4(%eax) \n\t" 172 "movl %ebx,4(%eax) \n\t"
171 "movl %ecx,8(%eax) \n\t" 173 "movl %ecx,8(%eax) \n\t"
172 "movl %edx,12(%eax) \n\t" 174 "movl %edx,12(%eax) \n\t"
173 "movl %esi,16(%eax) \n\t" 175 "movl %esi,16(%eax) \n\t"
174 "movl %edi,20(%eax) \n\t" 176 "movl %edi,20(%eax) \n\t"
175 "movw %ds,24(%eax) \n\t" 177 "movw %ds,24(%eax) \n\t"
176 "movw %es,26(%eax) \n\t" 178 "movw %es,26(%eax) \n\t"
177 "popl %ebx \n\t" 179 "popl %ebx \n\t"
178 "movl %ebx,(%eax) \n\t" 180 "movl %ebx,(%eax) \n\t"
179 "popl %ebx \n\t" 181 "popl %ebx \n\t"
180 "movl %ebx,28(%eax) \n\t" 182 "movl %ebx,28(%eax) \n\t"
181 "pop %es \n\t" 183 "pop %es \n\t"
182 "popf \n\t" 184 "popf \n\t"
183 "popa \n\t" 185 "popa \n\t"
184 "leave \n\t" "ret"); 186 "leave \n\t"
185} 187 "ret \n\t"
188 ".previous");
189
186 190
187/* 191/*
188 * cru_detect 192 * cru_detect
@@ -333,43 +337,44 @@ static int __devinit detect_cru_service(void)
333 337
334#define HPWDT_ARCH 64 338#define HPWDT_ARCH 64
335 339
336static void asminline_call(struct cmn_registers *pi86Regs, 340asm(".text \n\t"
337 unsigned long *pRomEntry) 341 ".align 4 \n"
338{ 342 "asminline_call: \n\t"
339 asm("pushq %rbp \n\t" 343 "pushq %rbp \n\t"
340 "movq %rsp, %rbp \n\t" 344 "movq %rsp, %rbp \n\t"
341 "pushq %rax \n\t" 345 "pushq %rax \n\t"
342 "pushq %rbx \n\t" 346 "pushq %rbx \n\t"
343 "pushq %rdx \n\t" 347 "pushq %rdx \n\t"
344 "pushq %r12 \n\t" 348 "pushq %r12 \n\t"
345 "pushq %r9 \n\t" 349 "pushq %r9 \n\t"
346 "movq %rsi, %r12 \n\t" 350 "movq %rsi, %r12 \n\t"
347 "movq %rdi, %r9 \n\t" 351 "movq %rdi, %r9 \n\t"
348 "movl 4(%r9),%ebx \n\t" 352 "movl 4(%r9),%ebx \n\t"
349 "movl 8(%r9),%ecx \n\t" 353 "movl 8(%r9),%ecx \n\t"
350 "movl 12(%r9),%edx \n\t" 354 "movl 12(%r9),%edx \n\t"
351 "movl 16(%r9),%esi \n\t" 355 "movl 16(%r9),%esi \n\t"
352 "movl 20(%r9),%edi \n\t" 356 "movl 20(%r9),%edi \n\t"
353 "movl (%r9),%eax \n\t" 357 "movl (%r9),%eax \n\t"
354 "call *%r12 \n\t" 358 "call *%r12 \n\t"
355 "pushfq \n\t" 359 "pushfq \n\t"
356 "popq %r12 \n\t" 360 "popq %r12 \n\t"
357 "popfq \n\t" 361 "popfq \n\t"
358 "movl %eax, (%r9) \n\t" 362 "movl %eax, (%r9) \n\t"
359 "movl %ebx, 4(%r9) \n\t" 363 "movl %ebx, 4(%r9) \n\t"
360 "movl %ecx, 8(%r9) \n\t" 364 "movl %ecx, 8(%r9) \n\t"
361 "movl %edx, 12(%r9) \n\t" 365 "movl %edx, 12(%r9) \n\t"
362 "movl %esi, 16(%r9) \n\t" 366 "movl %esi, 16(%r9) \n\t"
363 "movl %edi, 20(%r9) \n\t" 367 "movl %edi, 20(%r9) \n\t"
364 "movq %r12, %rax \n\t" 368 "movq %r12, %rax \n\t"
365 "movl %eax, 28(%r9) \n\t" 369 "movl %eax, 28(%r9) \n\t"
366 "popq %r9 \n\t" 370 "popq %r9 \n\t"
367 "popq %r12 \n\t" 371 "popq %r12 \n\t"
368 "popq %rdx \n\t" 372 "popq %rdx \n\t"
369 "popq %rbx \n\t" 373 "popq %rbx \n\t"
370 "popq %rax \n\t" 374 "popq %rax \n\t"
371 "leave \n\t" "ret"); 375 "leave \n\t"
372} 376 "ret \n\t"
377 ".previous");
373 378
374/* 379/*
375 * dmi_find_cru 380 * dmi_find_cru
@@ -418,20 +423,23 @@ static int hpwdt_pretimeout(struct notifier_block *nb, unsigned long ulReason,
418 static unsigned long rom_pl; 423 static unsigned long rom_pl;
419 static int die_nmi_called; 424 static int die_nmi_called;
420 425
421 if (ulReason == DIE_NMI || ulReason == DIE_NMI_IPI) { 426 if (ulReason != DIE_NMI && ulReason != DIE_NMI_IPI)
422 spin_lock_irqsave(&rom_lock, rom_pl); 427 return NOTIFY_OK;
423 if (!die_nmi_called) 428
424 asminline_call(&cmn_regs, cru_rom_addr); 429 spin_lock_irqsave(&rom_lock, rom_pl);
425 die_nmi_called = 1; 430 if (!die_nmi_called)
426 spin_unlock_irqrestore(&rom_lock, rom_pl); 431 asminline_call(&cmn_regs, cru_rom_addr);
427 if (cmn_regs.u1.ral != 0) { 432 die_nmi_called = 1;
428 panic("An NMI occurred, please see the Integrated " 433 spin_unlock_irqrestore(&rom_lock, rom_pl);
429 "Management Log for details.\n"); 434 if (cmn_regs.u1.ral == 0) {
430 } 435 printk(KERN_WARNING "hpwdt: An NMI occurred, "
436 "but unable to determine source.\n");
437 } else {
438 panic("An NMI occurred, please see the Integrated "
439 "Management Log for details.\n");
431 } 440 }
432 441
433 die_nmi_called = 0; 442 return NOTIFY_STOP;
434 return NOTIFY_DONE;
435} 443}
436 444
437/* 445/*
diff --git a/drivers/xen/Makefile b/drivers/xen/Makefile
index 37af04f1ffd9..363286c54290 100644
--- a/drivers/xen/Makefile
+++ b/drivers/xen/Makefile
@@ -1,4 +1,4 @@
1obj-y += grant-table.o features.o events.o 1obj-y += grant-table.o features.o events.o manage.o
2obj-y += xenbus/ 2obj-y += xenbus/
3obj-$(CONFIG_XEN_XENCOMM) += xencomm.o 3obj-$(CONFIG_XEN_XENCOMM) += xencomm.o
4obj-$(CONFIG_XEN_BALLOON) += balloon.o 4obj-$(CONFIG_XEN_BALLOON) += balloon.o
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
index ab25ba6cbbb9..591bc29b55f5 100644
--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -225,7 +225,7 @@ static int increase_reservation(unsigned long nr_pages)
225 page = balloon_next_page(page); 225 page = balloon_next_page(page);
226 } 226 }
227 227
228 reservation.extent_start = (unsigned long)frame_list; 228 set_xen_guest_handle(reservation.extent_start, frame_list);
229 reservation.nr_extents = nr_pages; 229 reservation.nr_extents = nr_pages;
230 rc = HYPERVISOR_memory_op( 230 rc = HYPERVISOR_memory_op(
231 XENMEM_populate_physmap, &reservation); 231 XENMEM_populate_physmap, &reservation);
@@ -321,7 +321,7 @@ static int decrease_reservation(unsigned long nr_pages)
321 balloon_append(pfn_to_page(pfn)); 321 balloon_append(pfn_to_page(pfn));
322 } 322 }
323 323
324 reservation.extent_start = (unsigned long)frame_list; 324 set_xen_guest_handle(reservation.extent_start, frame_list);
325 reservation.nr_extents = nr_pages; 325 reservation.nr_extents = nr_pages;
326 ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation); 326 ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation);
327 BUG_ON(ret != nr_pages); 327 BUG_ON(ret != nr_pages);
@@ -368,7 +368,7 @@ static void balloon_process(struct work_struct *work)
368} 368}
369 369
370/* Resets the Xen limit, sets new target, and kicks off processing. */ 370/* Resets the Xen limit, sets new target, and kicks off processing. */
371void balloon_set_new_target(unsigned long target) 371static void balloon_set_new_target(unsigned long target)
372{ 372{
373 /* No need for lock. Not read-modify-write updates. */ 373 /* No need for lock. Not read-modify-write updates. */
374 balloon_stats.hard_limit = ~0UL; 374 balloon_stats.hard_limit = ~0UL;
@@ -483,7 +483,7 @@ static int dealloc_pte_fn(
483 .extent_order = 0, 483 .extent_order = 0,
484 .domid = DOMID_SELF 484 .domid = DOMID_SELF
485 }; 485 };
486 reservation.extent_start = (unsigned long)&mfn; 486 set_xen_guest_handle(reservation.extent_start, &mfn);
487 set_pte_at(&init_mm, addr, pte, __pte_ma(0ull)); 487 set_pte_at(&init_mm, addr, pte, __pte_ma(0ull));
488 set_phys_to_machine(__pa(addr) >> PAGE_SHIFT, INVALID_P2M_ENTRY); 488 set_phys_to_machine(__pa(addr) >> PAGE_SHIFT, INVALID_P2M_ENTRY);
489 ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation); 489 ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation);
@@ -519,7 +519,7 @@ static struct page **alloc_empty_pages_and_pagevec(int nr_pages)
519 .extent_order = 0, 519 .extent_order = 0,
520 .domid = DOMID_SELF 520 .domid = DOMID_SELF
521 }; 521 };
522 reservation.extent_start = (unsigned long)&gmfn; 522 set_xen_guest_handle(reservation.extent_start, &gmfn);
523 ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation, 523 ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation,
524 &reservation); 524 &reservation);
525 if (ret == 1) 525 if (ret == 1)
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index 4f0f22b020ea..332dd63750a0 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -355,7 +355,7 @@ static void unbind_from_irq(unsigned int irq)
355 355
356 spin_lock(&irq_mapping_update_lock); 356 spin_lock(&irq_mapping_update_lock);
357 357
358 if (VALID_EVTCHN(evtchn) && (--irq_bindcount[irq] == 0)) { 358 if ((--irq_bindcount[irq] == 0) && VALID_EVTCHN(evtchn)) {
359 close.port = evtchn; 359 close.port = evtchn;
360 if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close) != 0) 360 if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close) != 0)
361 BUG(); 361 BUG();
@@ -375,7 +375,7 @@ static void unbind_from_irq(unsigned int irq)
375 evtchn_to_irq[evtchn] = -1; 375 evtchn_to_irq[evtchn] = -1;
376 irq_info[irq] = IRQ_UNBOUND; 376 irq_info[irq] = IRQ_UNBOUND;
377 377
378 dynamic_irq_init(irq); 378 dynamic_irq_cleanup(irq);
379 } 379 }
380 380
381 spin_unlock(&irq_mapping_update_lock); 381 spin_unlock(&irq_mapping_update_lock);
@@ -529,7 +529,7 @@ void xen_evtchn_do_upcall(struct pt_regs *regs)
529 529
530#ifndef CONFIG_X86 /* No need for a barrier -- XCHG is a barrier on x86. */ 530#ifndef CONFIG_X86 /* No need for a barrier -- XCHG is a barrier on x86. */
531 /* Clear master flag /before/ clearing selector flag. */ 531 /* Clear master flag /before/ clearing selector flag. */
532 rmb(); 532 wmb();
533#endif 533#endif
534 pending_words = xchg(&vcpu_info->evtchn_pending_sel, 0); 534 pending_words = xchg(&vcpu_info->evtchn_pending_sel, 0);
535 while (pending_words != 0) { 535 while (pending_words != 0) {
@@ -557,6 +557,33 @@ out:
557 put_cpu(); 557 put_cpu();
558} 558}
559 559
560/* Rebind a new event channel to an existing irq. */
561void rebind_evtchn_irq(int evtchn, int irq)
562{
563 /* Make sure the irq is masked, since the new event channel
564 will also be masked. */
565 disable_irq(irq);
566
567 spin_lock(&irq_mapping_update_lock);
568
569 /* After resume the irq<->evtchn mappings are all cleared out */
570 BUG_ON(evtchn_to_irq[evtchn] != -1);
571 /* Expect irq to have been bound before,
572 so the bindcount should be non-0 */
573 BUG_ON(irq_bindcount[irq] == 0);
574
575 evtchn_to_irq[evtchn] = irq;
576 irq_info[irq] = mk_irq_info(IRQT_EVTCHN, 0, evtchn);
577
578 spin_unlock(&irq_mapping_update_lock);
579
580 /* new event channels are always bound to cpu 0 */
581 irq_set_affinity(irq, cpumask_of_cpu(0));
582
583 /* Unmask the event channel. */
584 enable_irq(irq);
585}
586
560/* Rebind an evtchn so that it gets delivered to a specific cpu */ 587/* Rebind an evtchn so that it gets delivered to a specific cpu */
561static void rebind_irq_to_cpu(unsigned irq, unsigned tcpu) 588static void rebind_irq_to_cpu(unsigned irq, unsigned tcpu)
562{ 589{
@@ -647,6 +674,89 @@ static int retrigger_dynirq(unsigned int irq)
647 return ret; 674 return ret;
648} 675}
649 676
677static void restore_cpu_virqs(unsigned int cpu)
678{
679 struct evtchn_bind_virq bind_virq;
680 int virq, irq, evtchn;
681
682 for (virq = 0; virq < NR_VIRQS; virq++) {
683 if ((irq = per_cpu(virq_to_irq, cpu)[virq]) == -1)
684 continue;
685
686 BUG_ON(irq_info[irq].type != IRQT_VIRQ);
687 BUG_ON(irq_info[irq].index != virq);
688
689 /* Get a new binding from Xen. */
690 bind_virq.virq = virq;
691 bind_virq.vcpu = cpu;
692 if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq,
693 &bind_virq) != 0)
694 BUG();
695 evtchn = bind_virq.port;
696
697 /* Record the new mapping. */
698 evtchn_to_irq[evtchn] = irq;
699 irq_info[irq] = mk_irq_info(IRQT_VIRQ, virq, evtchn);
700 bind_evtchn_to_cpu(evtchn, cpu);
701
702 /* Ready for use. */
703 unmask_evtchn(evtchn);
704 }
705}
706
707static void restore_cpu_ipis(unsigned int cpu)
708{
709 struct evtchn_bind_ipi bind_ipi;
710 int ipi, irq, evtchn;
711
712 for (ipi = 0; ipi < XEN_NR_IPIS; ipi++) {
713 if ((irq = per_cpu(ipi_to_irq, cpu)[ipi]) == -1)
714 continue;
715
716 BUG_ON(irq_info[irq].type != IRQT_IPI);
717 BUG_ON(irq_info[irq].index != ipi);
718
719 /* Get a new binding from Xen. */
720 bind_ipi.vcpu = cpu;
721 if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi,
722 &bind_ipi) != 0)
723 BUG();
724 evtchn = bind_ipi.port;
725
726 /* Record the new mapping. */
727 evtchn_to_irq[evtchn] = irq;
728 irq_info[irq] = mk_irq_info(IRQT_IPI, ipi, evtchn);
729 bind_evtchn_to_cpu(evtchn, cpu);
730
731 /* Ready for use. */
732 unmask_evtchn(evtchn);
733
734 }
735}
736
737void xen_irq_resume(void)
738{
739 unsigned int cpu, irq, evtchn;
740
741 init_evtchn_cpu_bindings();
742
743 /* New event-channel space is not 'live' yet. */
744 for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++)
745 mask_evtchn(evtchn);
746
747 /* No IRQ <-> event-channel mappings. */
748 for (irq = 0; irq < NR_IRQS; irq++)
749 irq_info[irq].evtchn = 0; /* zap event-channel binding */
750
751 for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++)
752 evtchn_to_irq[evtchn] = -1;
753
754 for_each_possible_cpu(cpu) {
755 restore_cpu_virqs(cpu);
756 restore_cpu_ipis(cpu);
757 }
758}
759
650static struct irq_chip xen_dynamic_chip __read_mostly = { 760static struct irq_chip xen_dynamic_chip __read_mostly = {
651 .name = "xen-dyn", 761 .name = "xen-dyn",
652 .mask = disable_dynirq, 762 .mask = disable_dynirq,
diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
index 52b6b41b909d..e9e11168616a 100644
--- a/drivers/xen/grant-table.c
+++ b/drivers/xen/grant-table.c
@@ -471,14 +471,14 @@ static int gnttab_map(unsigned int start_idx, unsigned int end_idx)
471 return 0; 471 return 0;
472} 472}
473 473
474static int gnttab_resume(void) 474int gnttab_resume(void)
475{ 475{
476 if (max_nr_grant_frames() < nr_grant_frames) 476 if (max_nr_grant_frames() < nr_grant_frames)
477 return -ENOSYS; 477 return -ENOSYS;
478 return gnttab_map(0, nr_grant_frames - 1); 478 return gnttab_map(0, nr_grant_frames - 1);
479} 479}
480 480
481static int gnttab_suspend(void) 481int gnttab_suspend(void)
482{ 482{
483 arch_gnttab_unmap_shared(shared, nr_grant_frames); 483 arch_gnttab_unmap_shared(shared, nr_grant_frames);
484 return 0; 484 return 0;
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c
new file mode 100644
index 000000000000..5b546e365f00
--- /dev/null
+++ b/drivers/xen/manage.c
@@ -0,0 +1,252 @@
1/*
2 * Handle extern requests for shutdown, reboot and sysrq
3 */
4#include <linux/kernel.h>
5#include <linux/err.h>
6#include <linux/reboot.h>
7#include <linux/sysrq.h>
8#include <linux/stop_machine.h>
9#include <linux/freezer.h>
10
11#include <xen/xenbus.h>
12#include <xen/grant_table.h>
13#include <xen/events.h>
14#include <xen/hvc-console.h>
15#include <xen/xen-ops.h>
16
17#include <asm/xen/hypercall.h>
18#include <asm/xen/page.h>
19
20enum shutdown_state {
21 SHUTDOWN_INVALID = -1,
22 SHUTDOWN_POWEROFF = 0,
23 SHUTDOWN_SUSPEND = 2,
24 /* Code 3 is SHUTDOWN_CRASH, which we don't use because the domain can only
25 report a crash, not be instructed to crash!
26 HALT is the same as POWEROFF, as far as we're concerned. The tools use
27 the distinction when we return the reason code to them. */
28 SHUTDOWN_HALT = 4,
29};
30
31/* Ignore multiple shutdown requests. */
32static enum shutdown_state shutting_down = SHUTDOWN_INVALID;
33
34#ifdef CONFIG_PM_SLEEP
35static int xen_suspend(void *data)
36{
37 int *cancelled = data;
38 int err;
39
40 BUG_ON(!irqs_disabled());
41
42 load_cr3(swapper_pg_dir);
43
44 err = device_power_down(PMSG_SUSPEND);
45 if (err) {
46 printk(KERN_ERR "xen_suspend: device_power_down failed: %d\n",
47 err);
48 return err;
49 }
50
51 xen_mm_pin_all();
52 gnttab_suspend();
53 xen_pre_suspend();
54
55 /*
56 * This hypercall returns 1 if suspend was cancelled
57 * or the domain was merely checkpointed, and 0 if it
58 * is resuming in a new domain.
59 */
60 *cancelled = HYPERVISOR_suspend(virt_to_mfn(xen_start_info));
61
62 xen_post_suspend(*cancelled);
63 gnttab_resume();
64 xen_mm_unpin_all();
65
66 device_power_up();
67
68 if (!*cancelled) {
69 xen_irq_resume();
70 xen_console_resume();
71 }
72
73 return 0;
74}
75
76static void do_suspend(void)
77{
78 int err;
79 int cancelled = 1;
80
81 shutting_down = SHUTDOWN_SUSPEND;
82
83#ifdef CONFIG_PREEMPT
84 /* If the kernel is preemptible, we need to freeze all the processes
85 to prevent them from being in the middle of a pagetable update
86 during suspend. */
87 err = freeze_processes();
88 if (err) {
89 printk(KERN_ERR "xen suspend: freeze failed %d\n", err);
90 return;
91 }
92#endif
93
94 err = device_suspend(PMSG_SUSPEND);
95 if (err) {
96 printk(KERN_ERR "xen suspend: device_suspend %d\n", err);
97 goto out;
98 }
99
100 printk("suspending xenbus...\n");
101 /* XXX use normal device tree? */
102 xenbus_suspend();
103
104 err = stop_machine_run(xen_suspend, &cancelled, 0);
105 if (err) {
106 printk(KERN_ERR "failed to start xen_suspend: %d\n", err);
107 goto out;
108 }
109
110 if (!cancelled)
111 xenbus_resume();
112 else
113 xenbus_suspend_cancel();
114
115 device_resume();
116
117 /* Make sure timer events get retriggered on all CPUs */
118 clock_was_set();
119out:
120#ifdef CONFIG_PREEMPT
121 thaw_processes();
122#endif
123 shutting_down = SHUTDOWN_INVALID;
124}
125#endif /* CONFIG_PM_SLEEP */
126
127static void shutdown_handler(struct xenbus_watch *watch,
128 const char **vec, unsigned int len)
129{
130 char *str;
131 struct xenbus_transaction xbt;
132 int err;
133
134 if (shutting_down != SHUTDOWN_INVALID)
135 return;
136
137 again:
138 err = xenbus_transaction_start(&xbt);
139 if (err)
140 return;
141
142 str = (char *)xenbus_read(xbt, "control", "shutdown", NULL);
143 /* Ignore read errors and empty reads. */
144 if (XENBUS_IS_ERR_READ(str)) {
145 xenbus_transaction_end(xbt, 1);
146 return;
147 }
148
149 xenbus_write(xbt, "control", "shutdown", "");
150
151 err = xenbus_transaction_end(xbt, 0);
152 if (err == -EAGAIN) {
153 kfree(str);
154 goto again;
155 }
156
157 if (strcmp(str, "poweroff") == 0 ||
158 strcmp(str, "halt") == 0) {
159 shutting_down = SHUTDOWN_POWEROFF;
160 orderly_poweroff(false);
161 } else if (strcmp(str, "reboot") == 0) {
162 shutting_down = SHUTDOWN_POWEROFF; /* ? */
163 ctrl_alt_del();
164#ifdef CONFIG_PM_SLEEP
165 } else if (strcmp(str, "suspend") == 0) {
166 do_suspend();
167#endif
168 } else {
169 printk(KERN_INFO "Ignoring shutdown request: %s\n", str);
170 shutting_down = SHUTDOWN_INVALID;
171 }
172
173 kfree(str);
174}
175
176static void sysrq_handler(struct xenbus_watch *watch, const char **vec,
177 unsigned int len)
178{
179 char sysrq_key = '\0';
180 struct xenbus_transaction xbt;
181 int err;
182
183 again:
184 err = xenbus_transaction_start(&xbt);
185 if (err)
186 return;
187 if (!xenbus_scanf(xbt, "control", "sysrq", "%c", &sysrq_key)) {
188 printk(KERN_ERR "Unable to read sysrq code in "
189 "control/sysrq\n");
190 xenbus_transaction_end(xbt, 1);
191 return;
192 }
193
194 if (sysrq_key != '\0')
195 xenbus_printf(xbt, "control", "sysrq", "%c", '\0');
196
197 err = xenbus_transaction_end(xbt, 0);
198 if (err == -EAGAIN)
199 goto again;
200
201 if (sysrq_key != '\0')
202 handle_sysrq(sysrq_key, NULL);
203}
204
205static struct xenbus_watch shutdown_watch = {
206 .node = "control/shutdown",
207 .callback = shutdown_handler
208};
209
210static struct xenbus_watch sysrq_watch = {
211 .node = "control/sysrq",
212 .callback = sysrq_handler
213};
214
215static int setup_shutdown_watcher(void)
216{
217 int err;
218
219 err = register_xenbus_watch(&shutdown_watch);
220 if (err) {
221 printk(KERN_ERR "Failed to set shutdown watcher\n");
222 return err;
223 }
224
225 err = register_xenbus_watch(&sysrq_watch);
226 if (err) {
227 printk(KERN_ERR "Failed to set sysrq watcher\n");
228 return err;
229 }
230
231 return 0;
232}
233
234static int shutdown_event(struct notifier_block *notifier,
235 unsigned long event,
236 void *data)
237{
238 setup_shutdown_watcher();
239 return NOTIFY_DONE;
240}
241
242static int __init setup_shutdown_event(void)
243{
244 static struct notifier_block xenstore_notifier = {
245 .notifier_call = shutdown_event
246 };
247 register_xenstore_notifier(&xenstore_notifier);
248
249 return 0;
250}
251
252subsys_initcall(setup_shutdown_event);
diff --git a/drivers/xen/xenbus/xenbus_comms.c b/drivers/xen/xenbus/xenbus_comms.c
index 6efbe3f29ca5..090c61ee8fd0 100644
--- a/drivers/xen/xenbus/xenbus_comms.c
+++ b/drivers/xen/xenbus/xenbus_comms.c
@@ -203,7 +203,6 @@ int xb_read(void *data, unsigned len)
203int xb_init_comms(void) 203int xb_init_comms(void)
204{ 204{
205 struct xenstore_domain_interface *intf = xen_store_interface; 205 struct xenstore_domain_interface *intf = xen_store_interface;
206 int err;
207 206
208 if (intf->req_prod != intf->req_cons) 207 if (intf->req_prod != intf->req_cons)
209 printk(KERN_ERR "XENBUS request ring is not quiescent " 208 printk(KERN_ERR "XENBUS request ring is not quiescent "
@@ -216,18 +215,20 @@ int xb_init_comms(void)
216 intf->rsp_cons = intf->rsp_prod; 215 intf->rsp_cons = intf->rsp_prod;
217 } 216 }
218 217
219 if (xenbus_irq) 218 if (xenbus_irq) {
220 unbind_from_irqhandler(xenbus_irq, &xb_waitq); 219 /* Already have an irq; assume we're resuming */
220 rebind_evtchn_irq(xen_store_evtchn, xenbus_irq);
221 } else {
222 int err;
223 err = bind_evtchn_to_irqhandler(xen_store_evtchn, wake_waiting,
224 0, "xenbus", &xb_waitq);
225 if (err <= 0) {
226 printk(KERN_ERR "XENBUS request irq failed %i\n", err);
227 return err;
228 }
221 229
222 err = bind_evtchn_to_irqhandler( 230 xenbus_irq = err;
223 xen_store_evtchn, wake_waiting,
224 0, "xenbus", &xb_waitq);
225 if (err <= 0) {
226 printk(KERN_ERR "XENBUS request irq failed %i\n", err);
227 return err;
228 } 231 }
229 232
230 xenbus_irq = err;
231
232 return 0; 233 return 0;
233} 234}
diff --git a/fs/9p/v9fs_vfs.h b/fs/9p/v9fs_vfs.h
index fd01d90cada5..57997fa14e69 100644
--- a/fs/9p/v9fs_vfs.h
+++ b/fs/9p/v9fs_vfs.h
@@ -51,4 +51,4 @@ int v9fs_dir_release(struct inode *inode, struct file *filp);
51int v9fs_file_open(struct inode *inode, struct file *file); 51int v9fs_file_open(struct inode *inode, struct file *file);
52void v9fs_inode2stat(struct inode *inode, struct p9_stat *stat); 52void v9fs_inode2stat(struct inode *inode, struct p9_stat *stat);
53void v9fs_dentry_release(struct dentry *); 53void v9fs_dentry_release(struct dentry *);
54int v9fs_uflags2omode(int uflags); 54int v9fs_uflags2omode(int uflags, int extended);
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
index 0d55affe37d4..52944d2249a4 100644
--- a/fs/9p/vfs_file.c
+++ b/fs/9p/vfs_file.c
@@ -59,7 +59,7 @@ int v9fs_file_open(struct inode *inode, struct file *file)
59 59
60 P9_DPRINTK(P9_DEBUG_VFS, "inode: %p file: %p \n", inode, file); 60 P9_DPRINTK(P9_DEBUG_VFS, "inode: %p file: %p \n", inode, file);
61 v9ses = v9fs_inode2v9ses(inode); 61 v9ses = v9fs_inode2v9ses(inode);
62 omode = v9fs_uflags2omode(file->f_flags); 62 omode = v9fs_uflags2omode(file->f_flags, v9fs_extended(v9ses));
63 fid = file->private_data; 63 fid = file->private_data;
64 if (!fid) { 64 if (!fid) {
65 fid = v9fs_fid_clone(file->f_path.dentry); 65 fid = v9fs_fid_clone(file->f_path.dentry);
@@ -75,6 +75,8 @@ int v9fs_file_open(struct inode *inode, struct file *file)
75 inode->i_size = 0; 75 inode->i_size = 0;
76 inode->i_blocks = 0; 76 inode->i_blocks = 0;
77 } 77 }
78 if ((file->f_flags & O_APPEND) && (!v9fs_extended(v9ses)))
79 generic_file_llseek(file, 0, SEEK_END);
78 } 80 }
79 81
80 file->private_data = fid; 82 file->private_data = fid;
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 40fa807bd929..c95295c65045 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -132,10 +132,10 @@ static int p9mode2unixmode(struct v9fs_session_info *v9ses, int mode)
132/** 132/**
133 * v9fs_uflags2omode- convert posix open flags to plan 9 mode bits 133 * v9fs_uflags2omode- convert posix open flags to plan 9 mode bits
134 * @uflags: flags to convert 134 * @uflags: flags to convert
135 * 135 * @extended: if .u extensions are active
136 */ 136 */
137 137
138int v9fs_uflags2omode(int uflags) 138int v9fs_uflags2omode(int uflags, int extended)
139{ 139{
140 int ret; 140 int ret;
141 141
@@ -155,14 +155,16 @@ int v9fs_uflags2omode(int uflags)
155 break; 155 break;
156 } 156 }
157 157
158 if (uflags & O_EXCL)
159 ret |= P9_OEXCL;
160
161 if (uflags & O_TRUNC) 158 if (uflags & O_TRUNC)
162 ret |= P9_OTRUNC; 159 ret |= P9_OTRUNC;
163 160
164 if (uflags & O_APPEND) 161 if (extended) {
165 ret |= P9_OAPPEND; 162 if (uflags & O_EXCL)
163 ret |= P9_OEXCL;
164
165 if (uflags & O_APPEND)
166 ret |= P9_OAPPEND;
167 }
166 168
167 return ret; 169 return ret;
168} 170}
@@ -506,7 +508,7 @@ v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode,
506 flags = O_RDWR; 508 flags = O_RDWR;
507 509
508 fid = v9fs_create(v9ses, dir, dentry, NULL, perm, 510 fid = v9fs_create(v9ses, dir, dentry, NULL, perm,
509 v9fs_uflags2omode(flags)); 511 v9fs_uflags2omode(flags, v9fs_extended(v9ses)));
510 if (IS_ERR(fid)) { 512 if (IS_ERR(fid)) {
511 err = PTR_ERR(fid); 513 err = PTR_ERR(fid);
512 fid = NULL; 514 fid = NULL;
diff --git a/fs/Kconfig b/fs/Kconfig
index cf12c403b8c7..2694648cbd1b 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -830,7 +830,7 @@ config NTFS_FS
830 from the project web site. 830 from the project web site.
831 831
832 For more information see <file:Documentation/filesystems/ntfs.txt> 832 For more information see <file:Documentation/filesystems/ntfs.txt>
833 and <http://linux-ntfs.sourceforge.net/>. 833 and <http://www.linux-ntfs.org/>.
834 834
835 To compile this file system support as a module, choose M here: the 835 To compile this file system support as a module, choose M here: the
836 module will be called ntfs. 836 module will be called ntfs.
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 0fa95b198e6e..d48ff5f370f4 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -16,7 +16,6 @@
16#include <linux/time.h> 16#include <linux/time.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/mman.h> 18#include <linux/mman.h>
19#include <linux/a.out.h>
20#include <linux/errno.h> 19#include <linux/errno.h>
21#include <linux/signal.h> 20#include <linux/signal.h>
22#include <linux/binfmts.h> 21#include <linux/binfmts.h>
@@ -548,7 +547,6 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
548 struct { 547 struct {
549 struct elfhdr elf_ex; 548 struct elfhdr elf_ex;
550 struct elfhdr interp_elf_ex; 549 struct elfhdr interp_elf_ex;
551 struct exec interp_ex;
552 } *loc; 550 } *loc;
553 551
554 loc = kmalloc(sizeof(*loc), GFP_KERNEL); 552 loc = kmalloc(sizeof(*loc), GFP_KERNEL);
@@ -680,7 +678,6 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
680 } 678 }
681 679
682 /* Get the exec headers */ 680 /* Get the exec headers */
683 loc->interp_ex = *((struct exec *)bprm->buf);
684 loc->interp_elf_ex = *((struct elfhdr *)bprm->buf); 681 loc->interp_elf_ex = *((struct elfhdr *)bprm->buf);
685 break; 682 break;
686 } 683 }
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 470c10ceb0fb..10d8a0aa871a 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -931,8 +931,16 @@ static int do_open(struct block_device *bdev, struct file *file, int for_part)
931 struct gendisk *disk; 931 struct gendisk *disk;
932 int ret; 932 int ret;
933 int part; 933 int part;
934 int perm = 0;
934 935
935 ret = devcgroup_inode_permission(bdev->bd_inode, file->f_mode); 936 if (file->f_mode & FMODE_READ)
937 perm |= MAY_READ;
938 if (file->f_mode & FMODE_WRITE)
939 perm |= MAY_WRITE;
940 /*
941 * hooks: /n/, see "layering violations".
942 */
943 ret = devcgroup_inode_permission(bdev->bd_inode, perm);
936 if (ret != 0) 944 if (ret != 0)
937 return ret; 945 return ret;
938 946
diff --git a/fs/buffer.c b/fs/buffer.c
index a073f3f4f013..0f51c0f7c266 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -821,7 +821,7 @@ static int fsync_buffers_list(spinlock_t *lock, struct list_head *list)
821 * contents - it is a noop if I/O is still in 821 * contents - it is a noop if I/O is still in
822 * flight on potentially older contents. 822 * flight on potentially older contents.
823 */ 823 */
824 ll_rw_block(SWRITE, 1, &bh); 824 ll_rw_block(SWRITE_SYNC, 1, &bh);
825 brelse(bh); 825 brelse(bh);
826 spin_lock(lock); 826 spin_lock(lock);
827 } 827 }
@@ -2940,16 +2940,19 @@ void ll_rw_block(int rw, int nr, struct buffer_head *bhs[])
2940 for (i = 0; i < nr; i++) { 2940 for (i = 0; i < nr; i++) {
2941 struct buffer_head *bh = bhs[i]; 2941 struct buffer_head *bh = bhs[i];
2942 2942
2943 if (rw == SWRITE) 2943 if (rw == SWRITE || rw == SWRITE_SYNC)
2944 lock_buffer(bh); 2944 lock_buffer(bh);
2945 else if (test_set_buffer_locked(bh)) 2945 else if (test_set_buffer_locked(bh))
2946 continue; 2946 continue;
2947 2947
2948 if (rw == WRITE || rw == SWRITE) { 2948 if (rw == WRITE || rw == SWRITE || rw == SWRITE_SYNC) {
2949 if (test_clear_buffer_dirty(bh)) { 2949 if (test_clear_buffer_dirty(bh)) {
2950 bh->b_end_io = end_buffer_write_sync; 2950 bh->b_end_io = end_buffer_write_sync;
2951 get_bh(bh); 2951 get_bh(bh);
2952 submit_bh(WRITE, bh); 2952 if (rw == SWRITE_SYNC)
2953 submit_bh(WRITE_SYNC, bh);
2954 else
2955 submit_bh(WRITE, bh);
2953 continue; 2956 continue;
2954 } 2957 }
2955 } else { 2958 } else {
@@ -2978,7 +2981,7 @@ int sync_dirty_buffer(struct buffer_head *bh)
2978 if (test_clear_buffer_dirty(bh)) { 2981 if (test_clear_buffer_dirty(bh)) {
2979 get_bh(bh); 2982 get_bh(bh);
2980 bh->b_end_io = end_buffer_write_sync; 2983 bh->b_end_io = end_buffer_write_sync;
2981 ret = submit_bh(WRITE, bh); 2984 ret = submit_bh(WRITE_SYNC, bh);
2982 wait_on_buffer(bh); 2985 wait_on_buffer(bh);
2983 if (buffer_eopnotsupp(bh)) { 2986 if (buffer_eopnotsupp(bh)) {
2984 clear_buffer_eopnotsupp(bh); 2987 clear_buffer_eopnotsupp(bh);
diff --git a/fs/dcache.c b/fs/dcache.c
index 3ee588d5f585..6068c25b393c 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -17,6 +17,7 @@
17#include <linux/syscalls.h> 17#include <linux/syscalls.h>
18#include <linux/string.h> 18#include <linux/string.h>
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/fdtable.h>
20#include <linux/fs.h> 21#include <linux/fs.h>
21#include <linux/fsnotify.h> 22#include <linux/fsnotify.h>
22#include <linux/slab.h> 23#include <linux/slab.h>
@@ -106,9 +107,10 @@ static void dentry_lru_remove(struct dentry *dentry)
106/* 107/*
107 * Release the dentry's inode, using the filesystem 108 * Release the dentry's inode, using the filesystem
108 * d_iput() operation if defined. 109 * d_iput() operation if defined.
109 * Called with dcache_lock and per dentry lock held, drops both.
110 */ 110 */
111static void dentry_iput(struct dentry * dentry) 111static void dentry_iput(struct dentry * dentry)
112 __releases(dentry->d_lock)
113 __releases(dcache_lock)
112{ 114{
113 struct inode *inode = dentry->d_inode; 115 struct inode *inode = dentry->d_inode;
114 if (inode) { 116 if (inode) {
@@ -132,12 +134,13 @@ static void dentry_iput(struct dentry * dentry)
132 * d_kill - kill dentry and return parent 134 * d_kill - kill dentry and return parent
133 * @dentry: dentry to kill 135 * @dentry: dentry to kill
134 * 136 *
135 * Called with dcache_lock and d_lock, releases both. The dentry must 137 * The dentry must already be unhashed and removed from the LRU.
136 * already be unhashed and removed from the LRU.
137 * 138 *
138 * If this is the root of the dentry tree, return NULL. 139 * If this is the root of the dentry tree, return NULL.
139 */ 140 */
140static struct dentry *d_kill(struct dentry *dentry) 141static struct dentry *d_kill(struct dentry *dentry)
142 __releases(dentry->d_lock)
143 __releases(dcache_lock)
141{ 144{
142 struct dentry *parent; 145 struct dentry *parent;
143 146
@@ -383,11 +386,11 @@ restart:
383 * Try to prune ancestors as well. This is necessary to prevent 386 * Try to prune ancestors as well. This is necessary to prevent
384 * quadratic behavior of shrink_dcache_parent(), but is also expected 387 * quadratic behavior of shrink_dcache_parent(), but is also expected
385 * to be beneficial in reducing dentry cache fragmentation. 388 * to be beneficial in reducing dentry cache fragmentation.
386 *
387 * Called with dcache_lock, drops it and then regains.
388 * Called with dentry->d_lock held, drops it.
389 */ 389 */
390static void prune_one_dentry(struct dentry * dentry) 390static void prune_one_dentry(struct dentry * dentry)
391 __releases(dentry->d_lock)
392 __releases(dcache_lock)
393 __acquires(dcache_lock)
391{ 394{
392 __d_drop(dentry); 395 __d_drop(dentry);
393 dentry = d_kill(dentry); 396 dentry = d_kill(dentry);
@@ -1604,10 +1607,9 @@ static int d_isparent(struct dentry *p1, struct dentry *p2)
1604 * 1607 *
1605 * Note: If ever the locking in lock_rename() changes, then please 1608 * Note: If ever the locking in lock_rename() changes, then please
1606 * remember to update this too... 1609 * remember to update this too...
1607 *
1608 * On return, dcache_lock will have been unlocked.
1609 */ 1610 */
1610static struct dentry *__d_unalias(struct dentry *dentry, struct dentry *alias) 1611static struct dentry *__d_unalias(struct dentry *dentry, struct dentry *alias)
1612 __releases(dcache_lock)
1611{ 1613{
1612 struct mutex *m1 = NULL, *m2 = NULL; 1614 struct mutex *m1 = NULL, *m2 = NULL;
1613 struct dentry *ret; 1615 struct dentry *ret;
@@ -1743,11 +1745,9 @@ out_nolock:
1743shouldnt_be_hashed: 1745shouldnt_be_hashed:
1744 spin_unlock(&dcache_lock); 1746 spin_unlock(&dcache_lock);
1745 BUG(); 1747 BUG();
1746 goto shouldnt_be_hashed;
1747} 1748}
1748 1749
1749static int prepend(char **buffer, int *buflen, const char *str, 1750static int prepend(char **buffer, int *buflen, const char *str, int namelen)
1750 int namelen)
1751{ 1751{
1752 *buflen -= namelen; 1752 *buflen -= namelen;
1753 if (*buflen < 0) 1753 if (*buflen < 0)
@@ -1757,8 +1757,13 @@ static int prepend(char **buffer, int *buflen, const char *str,
1757 return 0; 1757 return 0;
1758} 1758}
1759 1759
1760static int prepend_name(char **buffer, int *buflen, struct qstr *name)
1761{
1762 return prepend(buffer, buflen, name->name, name->len);
1763}
1764
1760/** 1765/**
1761 * d_path - return the path of a dentry 1766 * __d_path - return the path of a dentry
1762 * @path: the dentry/vfsmount to report 1767 * @path: the dentry/vfsmount to report
1763 * @root: root vfsmnt/dentry (may be modified by this function) 1768 * @root: root vfsmnt/dentry (may be modified by this function)
1764 * @buffer: buffer to return value in 1769 * @buffer: buffer to return value in
@@ -1779,9 +1784,10 @@ char *__d_path(const struct path *path, struct path *root,
1779{ 1784{
1780 struct dentry *dentry = path->dentry; 1785 struct dentry *dentry = path->dentry;
1781 struct vfsmount *vfsmnt = path->mnt; 1786 struct vfsmount *vfsmnt = path->mnt;
1782 char * end = buffer+buflen; 1787 char *end = buffer + buflen;
1783 char * retval; 1788 char *retval;
1784 1789
1790 spin_lock(&vfsmount_lock);
1785 prepend(&end, &buflen, "\0", 1); 1791 prepend(&end, &buflen, "\0", 1);
1786 if (!IS_ROOT(dentry) && d_unhashed(dentry) && 1792 if (!IS_ROOT(dentry) && d_unhashed(dentry) &&
1787 (prepend(&end, &buflen, " (deleted)", 10) != 0)) 1793 (prepend(&end, &buflen, " (deleted)", 10) != 0))
@@ -1800,38 +1806,37 @@ char *__d_path(const struct path *path, struct path *root,
1800 break; 1806 break;
1801 if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) { 1807 if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) {
1802 /* Global root? */ 1808 /* Global root? */
1803 spin_lock(&vfsmount_lock);
1804 if (vfsmnt->mnt_parent == vfsmnt) { 1809 if (vfsmnt->mnt_parent == vfsmnt) {
1805 spin_unlock(&vfsmount_lock);
1806 goto global_root; 1810 goto global_root;
1807 } 1811 }
1808 dentry = vfsmnt->mnt_mountpoint; 1812 dentry = vfsmnt->mnt_mountpoint;
1809 vfsmnt = vfsmnt->mnt_parent; 1813 vfsmnt = vfsmnt->mnt_parent;
1810 spin_unlock(&vfsmount_lock);
1811 continue; 1814 continue;
1812 } 1815 }
1813 parent = dentry->d_parent; 1816 parent = dentry->d_parent;
1814 prefetch(parent); 1817 prefetch(parent);
1815 if ((prepend(&end, &buflen, dentry->d_name.name, 1818 if ((prepend_name(&end, &buflen, &dentry->d_name) != 0) ||
1816 dentry->d_name.len) != 0) ||
1817 (prepend(&end, &buflen, "/", 1) != 0)) 1819 (prepend(&end, &buflen, "/", 1) != 0))
1818 goto Elong; 1820 goto Elong;
1819 retval = end; 1821 retval = end;
1820 dentry = parent; 1822 dentry = parent;
1821 } 1823 }
1822 1824
1825out:
1826 spin_unlock(&vfsmount_lock);
1823 return retval; 1827 return retval;
1824 1828
1825global_root: 1829global_root:
1826 retval += 1; /* hit the slash */ 1830 retval += 1; /* hit the slash */
1827 if (prepend(&retval, &buflen, dentry->d_name.name, 1831 if (prepend_name(&retval, &buflen, &dentry->d_name) != 0)
1828 dentry->d_name.len) != 0)
1829 goto Elong; 1832 goto Elong;
1830 root->mnt = vfsmnt; 1833 root->mnt = vfsmnt;
1831 root->dentry = dentry; 1834 root->dentry = dentry;
1832 return retval; 1835 goto out;
1836
1833Elong: 1837Elong:
1834 return ERR_PTR(-ENAMETOOLONG); 1838 retval = ERR_PTR(-ENAMETOOLONG);
1839 goto out;
1835} 1840}
1836 1841
1837/** 1842/**
@@ -1845,9 +1850,9 @@ Elong:
1845 * 1850 *
1846 * Returns the buffer or an error code if the path was too long. 1851 * Returns the buffer or an error code if the path was too long.
1847 * 1852 *
1848 * "buflen" should be positive. Caller holds the dcache_lock. 1853 * "buflen" should be positive.
1849 */ 1854 */
1850char *d_path(struct path *path, char *buf, int buflen) 1855char *d_path(const struct path *path, char *buf, int buflen)
1851{ 1856{
1852 char *res; 1857 char *res;
1853 struct path root; 1858 struct path root;
@@ -1915,16 +1920,11 @@ char *dentry_path(struct dentry *dentry, char *buf, int buflen)
1915 retval = end-1; 1920 retval = end-1;
1916 *retval = '/'; 1921 *retval = '/';
1917 1922
1918 for (;;) { 1923 while (!IS_ROOT(dentry)) {
1919 struct dentry *parent; 1924 struct dentry *parent = dentry->d_parent;
1920 if (IS_ROOT(dentry))
1921 break;
1922 1925
1923 parent = dentry->d_parent;
1924 prefetch(parent); 1926 prefetch(parent);
1925 1927 if ((prepend_name(&end, &buflen, &dentry->d_name) != 0) ||
1926 if ((prepend(&end, &buflen, dentry->d_name.name,
1927 dentry->d_name.len) != 0) ||
1928 (prepend(&end, &buflen, "/", 1) != 0)) 1928 (prepend(&end, &buflen, "/", 1) != 0))
1929 goto Elong; 1929 goto Elong;
1930 1930
@@ -1975,7 +1975,7 @@ asmlinkage long sys_getcwd(char __user *buf, unsigned long size)
1975 error = -ENOENT; 1975 error = -ENOENT;
1976 /* Has the current directory has been unlinked? */ 1976 /* Has the current directory has been unlinked? */
1977 spin_lock(&dcache_lock); 1977 spin_lock(&dcache_lock);
1978 if (pwd.dentry->d_parent == pwd.dentry || !d_unhashed(pwd.dentry)) { 1978 if (IS_ROOT(pwd.dentry) || !d_unhashed(pwd.dentry)) {
1979 unsigned long len; 1979 unsigned long len;
1980 struct path tmp = root; 1980 struct path tmp = root;
1981 char * cwd; 1981 char * cwd;
diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
index 50c994a249a5..09a4522f65e6 100644
--- a/fs/ecryptfs/miscdev.c
+++ b/fs/ecryptfs/miscdev.c
@@ -575,13 +575,11 @@ int ecryptfs_init_ecryptfs_miscdev(void)
575 int rc; 575 int rc;
576 576
577 atomic_set(&ecryptfs_num_miscdev_opens, 0); 577 atomic_set(&ecryptfs_num_miscdev_opens, 0);
578 mutex_lock(&ecryptfs_daemon_hash_mux);
579 rc = misc_register(&ecryptfs_miscdev); 578 rc = misc_register(&ecryptfs_miscdev);
580 if (rc) 579 if (rc)
581 printk(KERN_ERR "%s: Failed to register miscellaneous device " 580 printk(KERN_ERR "%s: Failed to register miscellaneous device "
582 "for communications with userspace daemons; rc = [%d]\n", 581 "for communications with userspace daemons; rc = [%d]\n",
583 __func__, rc); 582 __func__, rc);
584 mutex_unlock(&ecryptfs_daemon_hash_mux);
585 return rc; 583 return rc;
586} 584}
587 585
diff --git a/fs/exec.c b/fs/exec.c
index 9448f1b50b4a..da94a6f05df3 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -26,7 +26,6 @@
26#include <linux/file.h> 26#include <linux/file.h>
27#include <linux/fdtable.h> 27#include <linux/fdtable.h>
28#include <linux/mman.h> 28#include <linux/mman.h>
29#include <linux/a.out.h>
30#include <linux/stat.h> 29#include <linux/stat.h>
31#include <linux/fcntl.h> 30#include <linux/fcntl.h>
32#include <linux/smp_lock.h> 31#include <linux/smp_lock.h>
@@ -61,6 +60,11 @@
61#include <linux/kmod.h> 60#include <linux/kmod.h>
62#endif 61#endif
63 62
63#ifdef __alpha__
64/* for /sbin/loader handling in search_binary_handler() */
65#include <linux/a.out.h>
66#endif
67
64int core_uses_pid; 68int core_uses_pid;
65char core_pattern[CORENAME_MAX_SIZE] = "core"; 69char core_pattern[CORENAME_MAX_SIZE] = "core";
66int suid_dumpable = 0; 70int suid_dumpable = 0;
@@ -1155,7 +1159,7 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)
1155{ 1159{
1156 int try,retval; 1160 int try,retval;
1157 struct linux_binfmt *fmt; 1161 struct linux_binfmt *fmt;
1158#if defined(__alpha__) && defined(CONFIG_ARCH_SUPPORTS_AOUT) 1162#ifdef __alpha__
1159 /* handle /sbin/loader.. */ 1163 /* handle /sbin/loader.. */
1160 { 1164 {
1161 struct exec * eh = (struct exec *) bprm->buf; 1165 struct exec * eh = (struct exec *) bprm->buf;
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index fe3119a71ada..2845425077e8 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -2875,8 +2875,10 @@ static ssize_t ext3_quota_write(struct super_block *sb, int type,
2875 blk++; 2875 blk++;
2876 } 2876 }
2877out: 2877out:
2878 if (len == towrite) 2878 if (len == towrite) {
2879 mutex_unlock(&inode->i_mutex);
2879 return err; 2880 return err;
2881 }
2880 if (inode->i_size < off+len-towrite) { 2882 if (inode->i_size < off+len-towrite) {
2881 i_size_write(inode, off+len-towrite); 2883 i_size_write(inode, off+len-towrite);
2882 EXT3_I(inode)->i_disksize = inode->i_size; 2884 EXT3_I(inode)->i_disksize = inode->i_size;
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index 9ecb92f68543..9ff7b1c04239 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -855,7 +855,8 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
855 */ 855 */
856 856
857 /* Update group descriptor block for new group */ 857 /* Update group descriptor block for new group */
858 gdp = (struct ext4_group_desc *)primary->b_data + gdb_off; 858 gdp = (struct ext4_group_desc *)((char *)primary->b_data +
859 gdb_off * EXT4_DESC_SIZE(sb));
859 860
860 ext4_block_bitmap_set(sb, gdp, input->block_bitmap); /* LV FIXME */ 861 ext4_block_bitmap_set(sb, gdp, input->block_bitmap); /* LV FIXME */
861 ext4_inode_bitmap_set(sb, gdp, input->inode_bitmap); /* LV FIXME */ 862 ext4_inode_bitmap_set(sb, gdp, input->inode_bitmap); /* LV FIXME */
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index cb96f127c366..02bf24343979 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3337,8 +3337,10 @@ static ssize_t ext4_quota_write(struct super_block *sb, int type,
3337 blk++; 3337 blk++;
3338 } 3338 }
3339out: 3339out:
3340 if (len == towrite) 3340 if (len == towrite) {
3341 mutex_unlock(&inode->i_mutex);
3341 return err; 3342 return err;
3343 }
3342 if (inode->i_size < off+len-towrite) { 3344 if (inode->i_size < off+len-towrite) {
3343 i_size_write(inode, off+len-towrite); 3345 i_size_write(inode, off+len-towrite);
3344 EXT4_I(inode)->i_disksize = inode->i_size; 3346 EXT4_I(inode)->i_disksize = inode->i_size;
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 43e99513334a..3141690558c8 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -591,7 +591,7 @@ static void process_init_reply(struct fuse_conn *fc, struct fuse_req *req)
591 fc->bdi.ra_pages = min(fc->bdi.ra_pages, ra_pages); 591 fc->bdi.ra_pages = min(fc->bdi.ra_pages, ra_pages);
592 fc->minor = arg->minor; 592 fc->minor = arg->minor;
593 fc->max_write = arg->minor < 5 ? 4096 : arg->max_write; 593 fc->max_write = arg->minor < 5 ? 4096 : arg->max_write;
594 fc->max_write = min_t(unsigned, 4096, fc->max_write); 594 fc->max_write = max_t(unsigned, 4096, fc->max_write);
595 fc->conn_init = 1; 595 fc->conn_init = 1;
596 } 596 }
597 fuse_put_request(fc, req); 597 fuse_put_request(fc, req);
@@ -667,7 +667,7 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
667 fc->flags = d.flags; 667 fc->flags = d.flags;
668 fc->user_id = d.user_id; 668 fc->user_id = d.user_id;
669 fc->group_id = d.group_id; 669 fc->group_id = d.group_id;
670 fc->max_read = min_t(unsigned, 4096, d.max_read); 670 fc->max_read = max_t(unsigned, 4096, d.max_read);
671 671
672 /* Used by get_root_inode() */ 672 /* Used by get_root_inode() */
673 sb->s_fs_info = fc; 673 sb->s_fs_info = fc;
diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c
index c19184f2e70e..bec76b1c2bb0 100644
--- a/fs/gfs2/bmap.c
+++ b/fs/gfs2/bmap.c
@@ -246,15 +246,11 @@ static void find_metapath(const struct gfs2_sbd *sdp, u64 block,
246 246
247} 247}
248 248
249static inline unsigned int zero_metapath_length(const struct metapath *mp, 249static inline unsigned int metapath_branch_start(const struct metapath *mp)
250 unsigned height)
251{ 250{
252 unsigned int i; 251 if (mp->mp_list[0] == 0)
253 for (i = 0; i < height - 1; i++) { 252 return 2;
254 if (mp->mp_list[i] != 0) 253 return 1;
255 return i;
256 }
257 return height;
258} 254}
259 255
260/** 256/**
@@ -436,7 +432,7 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
436 struct gfs2_sbd *sdp = GFS2_SB(inode); 432 struct gfs2_sbd *sdp = GFS2_SB(inode);
437 struct buffer_head *dibh = mp->mp_bh[0]; 433 struct buffer_head *dibh = mp->mp_bh[0];
438 u64 bn, dblock = 0; 434 u64 bn, dblock = 0;
439 unsigned n, i, blks, alloced = 0, iblks = 0, zmpl = 0; 435 unsigned n, i, blks, alloced = 0, iblks = 0, branch_start = 0;
440 unsigned dblks = 0; 436 unsigned dblks = 0;
441 unsigned ptrs_per_blk; 437 unsigned ptrs_per_blk;
442 const unsigned end_of_metadata = height - 1; 438 const unsigned end_of_metadata = height - 1;
@@ -471,9 +467,8 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
471 /* Building up tree height */ 467 /* Building up tree height */
472 state = ALLOC_GROW_HEIGHT; 468 state = ALLOC_GROW_HEIGHT;
473 iblks = height - ip->i_height; 469 iblks = height - ip->i_height;
474 zmpl = zero_metapath_length(mp, height); 470 branch_start = metapath_branch_start(mp);
475 iblks -= zmpl; 471 iblks += (height - branch_start);
476 iblks += height;
477 } 472 }
478 } 473 }
479 474
@@ -509,13 +504,13 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
509 sizeof(struct gfs2_meta_header)); 504 sizeof(struct gfs2_meta_header));
510 *ptr = zero_bn; 505 *ptr = zero_bn;
511 state = ALLOC_GROW_DEPTH; 506 state = ALLOC_GROW_DEPTH;
512 for(i = zmpl; i < height; i++) { 507 for(i = branch_start; i < height; i++) {
513 if (mp->mp_bh[i] == NULL) 508 if (mp->mp_bh[i] == NULL)
514 break; 509 break;
515 brelse(mp->mp_bh[i]); 510 brelse(mp->mp_bh[i]);
516 mp->mp_bh[i] = NULL; 511 mp->mp_bh[i] = NULL;
517 } 512 }
518 i = zmpl; 513 i = branch_start;
519 } 514 }
520 if (n == 0) 515 if (n == 0)
521 break; 516 break;
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 6387523a3153..3401628d742b 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -195,7 +195,7 @@ ulong_aligned:
195 depending on architecture. I've experimented with several ways 195 depending on architecture. I've experimented with several ways
196 of writing this section such as using an else before the goto 196 of writing this section such as using an else before the goto
197 but this one seems to be the fastest. */ 197 but this one seems to be the fastest. */
198 while ((unsigned char *)plong < end - 1) { 198 while ((unsigned char *)plong < end - sizeof(unsigned long)) {
199 prefetch(plong + 1); 199 prefetch(plong + 1);
200 if (((*plong) & LBITMASK) != lskipval) 200 if (((*plong) & LBITMASK) != lskipval)
201 break; 201 break;
diff --git a/fs/libfs.c b/fs/libfs.c
index 892d41cb3382..baeb71ee1cde 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -512,6 +512,20 @@ void simple_release_fs(struct vfsmount **mount, int *count)
512 mntput(mnt); 512 mntput(mnt);
513} 513}
514 514
515/**
516 * simple_read_from_buffer - copy data from the buffer to user space
517 * @to: the user space buffer to read to
518 * @count: the maximum number of bytes to read
519 * @ppos: the current position in the buffer
520 * @from: the buffer to read from
521 * @available: the size of the buffer
522 *
523 * The simple_read_from_buffer() function reads up to @count bytes from the
524 * buffer @from at offset @ppos into the user space address starting at @to.
525 *
526 * On success, the number of bytes read is returned and the offset @ppos is
527 * advanced by this number, or negative value is returned on error.
528 **/
515ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos, 529ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos,
516 const void *from, size_t available) 530 const void *from, size_t available)
517{ 531{
@@ -528,6 +542,20 @@ ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos,
528 return count; 542 return count;
529} 543}
530 544
545/**
546 * memory_read_from_buffer - copy data from the buffer
547 * @to: the kernel space buffer to read to
548 * @count: the maximum number of bytes to read
549 * @ppos: the current position in the buffer
550 * @from: the buffer to read from
551 * @available: the size of the buffer
552 *
553 * The memory_read_from_buffer() function reads up to @count bytes from the
554 * buffer @from at offset @ppos into the kernel space address starting at @to.
555 *
556 * On success, the number of bytes read is returned and the offset @ppos is
557 * advanced by this number, or negative value is returned on error.
558 **/
531ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos, 559ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos,
532 const void *from, size_t available) 560 const void *from, size_t available)
533{ 561{
diff --git a/fs/locks.c b/fs/locks.c
index 11dbf08651b7..dce8c747371c 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -561,9 +561,6 @@ static void locks_insert_lock(struct file_lock **pos, struct file_lock *fl)
561 /* insert into file's list */ 561 /* insert into file's list */
562 fl->fl_next = *pos; 562 fl->fl_next = *pos;
563 *pos = fl; 563 *pos = fl;
564
565 if (fl->fl_ops && fl->fl_ops->fl_insert)
566 fl->fl_ops->fl_insert(fl);
567} 564}
568 565
569/* 566/*
@@ -586,9 +583,6 @@ static void locks_delete_lock(struct file_lock **thisfl_p)
586 fl->fl_fasync = NULL; 583 fl->fl_fasync = NULL;
587 } 584 }
588 585
589 if (fl->fl_ops && fl->fl_ops->fl_remove)
590 fl->fl_ops->fl_remove(fl);
591
592 if (fl->fl_nspid) { 586 if (fl->fl_nspid) {
593 put_pid(fl->fl_nspid); 587 put_pid(fl->fl_nspid);
594 fl->fl_nspid = NULL; 588 fl->fl_nspid = NULL;
diff --git a/fs/namei.c b/fs/namei.c
index c7e43536c49a..01e67dddcc3d 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -581,15 +581,13 @@ static __always_inline int link_path_walk(const char *name, struct nameidata *nd
581 int result; 581 int result;
582 582
583 /* make sure the stuff we saved doesn't go away */ 583 /* make sure the stuff we saved doesn't go away */
584 dget(save.dentry); 584 path_get(&save);
585 mntget(save.mnt);
586 585
587 result = __link_path_walk(name, nd); 586 result = __link_path_walk(name, nd);
588 if (result == -ESTALE) { 587 if (result == -ESTALE) {
589 /* nd->path had been dropped */ 588 /* nd->path had been dropped */
590 nd->path = save; 589 nd->path = save;
591 dget(nd->path.dentry); 590 path_get(&nd->path);
592 mntget(nd->path.mnt);
593 nd->flags |= LOOKUP_REVAL; 591 nd->flags |= LOOKUP_REVAL;
594 result = __link_path_walk(name, nd); 592 result = __link_path_walk(name, nd);
595 } 593 }
@@ -1216,8 +1214,9 @@ int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt,
1216 nd->flags = flags; 1214 nd->flags = flags;
1217 nd->depth = 0; 1215 nd->depth = 0;
1218 1216
1219 nd->path.mnt = mntget(mnt); 1217 nd->path.dentry = dentry;
1220 nd->path.dentry = dget(dentry); 1218 nd->path.mnt = mnt;
1219 path_get(&nd->path);
1221 1220
1222 retval = path_walk(name, nd); 1221 retval = path_walk(name, nd);
1223 if (unlikely(!retval && !audit_dummy_context() && nd->path.dentry && 1222 if (unlikely(!retval && !audit_dummy_context() && nd->path.dentry &&
@@ -2857,16 +2856,17 @@ int generic_readlink(struct dentry *dentry, char __user *buffer, int buflen)
2857{ 2856{
2858 struct nameidata nd; 2857 struct nameidata nd;
2859 void *cookie; 2858 void *cookie;
2859 int res;
2860 2860
2861 nd.depth = 0; 2861 nd.depth = 0;
2862 cookie = dentry->d_inode->i_op->follow_link(dentry, &nd); 2862 cookie = dentry->d_inode->i_op->follow_link(dentry, &nd);
2863 if (!IS_ERR(cookie)) { 2863 if (IS_ERR(cookie))
2864 int res = vfs_readlink(dentry, buffer, buflen, nd_get_link(&nd)); 2864 return PTR_ERR(cookie);
2865 if (dentry->d_inode->i_op->put_link) 2865
2866 dentry->d_inode->i_op->put_link(dentry, &nd, cookie); 2866 res = vfs_readlink(dentry, buffer, buflen, nd_get_link(&nd));
2867 cookie = ERR_PTR(res); 2867 if (dentry->d_inode->i_op->put_link)
2868 } 2868 dentry->d_inode->i_op->put_link(dentry, &nd, cookie);
2869 return PTR_ERR(cookie); 2869 return res;
2870} 2870}
2871 2871
2872int vfs_follow_link(struct nameidata *nd, const char *link) 2872int vfs_follow_link(struct nameidata *nd, const char *link)
diff --git a/fs/nfs/mount_clnt.c b/fs/nfs/mount_clnt.c
index 49c7cd0502cc..779d2eb649c5 100644
--- a/fs/nfs/mount_clnt.c
+++ b/fs/nfs/mount_clnt.c
@@ -130,10 +130,11 @@ static int xdr_decode_fhstatus3(struct rpc_rqst *req, __be32 *p,
130 struct mnt_fhstatus *res) 130 struct mnt_fhstatus *res)
131{ 131{
132 struct nfs_fh *fh = res->fh; 132 struct nfs_fh *fh = res->fh;
133 unsigned size;
133 134
134 if ((res->status = ntohl(*p++)) == 0) { 135 if ((res->status = ntohl(*p++)) == 0) {
135 int size = ntohl(*p++); 136 size = ntohl(*p++);
136 if (size <= NFS3_FHSIZE) { 137 if (size <= NFS3_FHSIZE && size != 0) {
137 fh->size = size; 138 fh->size = size;
138 memcpy(fh->data, p, size); 139 memcpy(fh->data, p, size);
139 } else 140 } else
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 2a4a024a4e7b..614efeed5437 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1216,8 +1216,6 @@ static int nfs_validate_mount_data(void *options,
1216{ 1216{
1217 struct nfs_mount_data *data = (struct nfs_mount_data *)options; 1217 struct nfs_mount_data *data = (struct nfs_mount_data *)options;
1218 1218
1219 memset(args, 0, sizeof(*args));
1220
1221 if (data == NULL) 1219 if (data == NULL)
1222 goto out_no_data; 1220 goto out_no_data;
1223 1221
@@ -1251,13 +1249,13 @@ static int nfs_validate_mount_data(void *options,
1251 case 5: 1249 case 5:
1252 memset(data->context, 0, sizeof(data->context)); 1250 memset(data->context, 0, sizeof(data->context));
1253 case 6: 1251 case 6:
1254 if (data->flags & NFS_MOUNT_VER3) 1252 if (data->flags & NFS_MOUNT_VER3) {
1253 if (data->root.size > NFS3_FHSIZE || data->root.size == 0)
1254 goto out_invalid_fh;
1255 mntfh->size = data->root.size; 1255 mntfh->size = data->root.size;
1256 else 1256 } else
1257 mntfh->size = NFS2_FHSIZE; 1257 mntfh->size = NFS2_FHSIZE;
1258 1258
1259 if (mntfh->size > sizeof(mntfh->data))
1260 goto out_invalid_fh;
1261 1259
1262 memcpy(mntfh->data, data->root.data, mntfh->size); 1260 memcpy(mntfh->data, data->root.data, mntfh->size);
1263 if (mntfh->size < sizeof(mntfh->data)) 1261 if (mntfh->size < sizeof(mntfh->data))
@@ -1585,24 +1583,29 @@ static int nfs_get_sb(struct file_system_type *fs_type,
1585{ 1583{
1586 struct nfs_server *server = NULL; 1584 struct nfs_server *server = NULL;
1587 struct super_block *s; 1585 struct super_block *s;
1588 struct nfs_fh mntfh; 1586 struct nfs_parsed_mount_data *data;
1589 struct nfs_parsed_mount_data data; 1587 struct nfs_fh *mntfh;
1590 struct dentry *mntroot; 1588 struct dentry *mntroot;
1591 int (*compare_super)(struct super_block *, void *) = nfs_compare_super; 1589 int (*compare_super)(struct super_block *, void *) = nfs_compare_super;
1592 struct nfs_sb_mountdata sb_mntdata = { 1590 struct nfs_sb_mountdata sb_mntdata = {
1593 .mntflags = flags, 1591 .mntflags = flags,
1594 }; 1592 };
1595 int error; 1593 int error = -ENOMEM;
1594
1595 data = kzalloc(sizeof(*data), GFP_KERNEL);
1596 mntfh = kzalloc(sizeof(*mntfh), GFP_KERNEL);
1597 if (data == NULL || mntfh == NULL)
1598 goto out_free_fh;
1596 1599
1597 security_init_mnt_opts(&data.lsm_opts); 1600 security_init_mnt_opts(&data->lsm_opts);
1598 1601
1599 /* Validate the mount data */ 1602 /* Validate the mount data */
1600 error = nfs_validate_mount_data(raw_data, &data, &mntfh, dev_name); 1603 error = nfs_validate_mount_data(raw_data, data, mntfh, dev_name);
1601 if (error < 0) 1604 if (error < 0)
1602 goto out; 1605 goto out;
1603 1606
1604 /* Get a volume representation */ 1607 /* Get a volume representation */
1605 server = nfs_create_server(&data, &mntfh); 1608 server = nfs_create_server(data, mntfh);
1606 if (IS_ERR(server)) { 1609 if (IS_ERR(server)) {
1607 error = PTR_ERR(server); 1610 error = PTR_ERR(server);
1608 goto out; 1611 goto out;
@@ -1630,16 +1633,16 @@ static int nfs_get_sb(struct file_system_type *fs_type,
1630 1633
1631 if (!s->s_root) { 1634 if (!s->s_root) {
1632 /* initial superblock/root creation */ 1635 /* initial superblock/root creation */
1633 nfs_fill_super(s, &data); 1636 nfs_fill_super(s, data);
1634 } 1637 }
1635 1638
1636 mntroot = nfs_get_root(s, &mntfh); 1639 mntroot = nfs_get_root(s, mntfh);
1637 if (IS_ERR(mntroot)) { 1640 if (IS_ERR(mntroot)) {
1638 error = PTR_ERR(mntroot); 1641 error = PTR_ERR(mntroot);
1639 goto error_splat_super; 1642 goto error_splat_super;
1640 } 1643 }
1641 1644
1642 error = security_sb_set_mnt_opts(s, &data.lsm_opts); 1645 error = security_sb_set_mnt_opts(s, &data->lsm_opts);
1643 if (error) 1646 if (error)
1644 goto error_splat_root; 1647 goto error_splat_root;
1645 1648
@@ -1649,9 +1652,12 @@ static int nfs_get_sb(struct file_system_type *fs_type,
1649 error = 0; 1652 error = 0;
1650 1653
1651out: 1654out:
1652 kfree(data.nfs_server.hostname); 1655 kfree(data->nfs_server.hostname);
1653 kfree(data.mount_server.hostname); 1656 kfree(data->mount_server.hostname);
1654 security_free_mnt_opts(&data.lsm_opts); 1657 security_free_mnt_opts(&data->lsm_opts);
1658out_free_fh:
1659 kfree(mntfh);
1660 kfree(data);
1655 return error; 1661 return error;
1656 1662
1657out_err_nosb: 1663out_err_nosb:
@@ -1800,8 +1806,6 @@ static int nfs4_validate_mount_data(void *options,
1800 struct nfs4_mount_data *data = (struct nfs4_mount_data *)options; 1806 struct nfs4_mount_data *data = (struct nfs4_mount_data *)options;
1801 char *c; 1807 char *c;
1802 1808
1803 memset(args, 0, sizeof(*args));
1804
1805 if (data == NULL) 1809 if (data == NULL)
1806 goto out_no_data; 1810 goto out_no_data;
1807 1811
@@ -1959,26 +1963,31 @@ out_no_client_address:
1959static int nfs4_get_sb(struct file_system_type *fs_type, 1963static int nfs4_get_sb(struct file_system_type *fs_type,
1960 int flags, const char *dev_name, void *raw_data, struct vfsmount *mnt) 1964 int flags, const char *dev_name, void *raw_data, struct vfsmount *mnt)
1961{ 1965{
1962 struct nfs_parsed_mount_data data; 1966 struct nfs_parsed_mount_data *data;
1963 struct super_block *s; 1967 struct super_block *s;
1964 struct nfs_server *server; 1968 struct nfs_server *server;
1965 struct nfs_fh mntfh; 1969 struct nfs_fh *mntfh;
1966 struct dentry *mntroot; 1970 struct dentry *mntroot;
1967 int (*compare_super)(struct super_block *, void *) = nfs_compare_super; 1971 int (*compare_super)(struct super_block *, void *) = nfs_compare_super;
1968 struct nfs_sb_mountdata sb_mntdata = { 1972 struct nfs_sb_mountdata sb_mntdata = {
1969 .mntflags = flags, 1973 .mntflags = flags,
1970 }; 1974 };
1971 int error; 1975 int error = -ENOMEM;
1972 1976
1973 security_init_mnt_opts(&data.lsm_opts); 1977 data = kzalloc(sizeof(*data), GFP_KERNEL);
1978 mntfh = kzalloc(sizeof(*mntfh), GFP_KERNEL);
1979 if (data == NULL || mntfh == NULL)
1980 goto out_free_fh;
1981
1982 security_init_mnt_opts(&data->lsm_opts);
1974 1983
1975 /* Validate the mount data */ 1984 /* Validate the mount data */
1976 error = nfs4_validate_mount_data(raw_data, &data, dev_name); 1985 error = nfs4_validate_mount_data(raw_data, data, dev_name);
1977 if (error < 0) 1986 if (error < 0)
1978 goto out; 1987 goto out;
1979 1988
1980 /* Get a volume representation */ 1989 /* Get a volume representation */
1981 server = nfs4_create_server(&data, &mntfh); 1990 server = nfs4_create_server(data, mntfh);
1982 if (IS_ERR(server)) { 1991 if (IS_ERR(server)) {
1983 error = PTR_ERR(server); 1992 error = PTR_ERR(server);
1984 goto out; 1993 goto out;
@@ -2009,13 +2018,13 @@ static int nfs4_get_sb(struct file_system_type *fs_type,
2009 nfs4_fill_super(s); 2018 nfs4_fill_super(s);
2010 } 2019 }
2011 2020
2012 mntroot = nfs4_get_root(s, &mntfh); 2021 mntroot = nfs4_get_root(s, mntfh);
2013 if (IS_ERR(mntroot)) { 2022 if (IS_ERR(mntroot)) {
2014 error = PTR_ERR(mntroot); 2023 error = PTR_ERR(mntroot);
2015 goto error_splat_super; 2024 goto error_splat_super;
2016 } 2025 }
2017 2026
2018 error = security_sb_set_mnt_opts(s, &data.lsm_opts); 2027 error = security_sb_set_mnt_opts(s, &data->lsm_opts);
2019 if (error) 2028 if (error)
2020 goto error_splat_root; 2029 goto error_splat_root;
2021 2030
@@ -2025,10 +2034,13 @@ static int nfs4_get_sb(struct file_system_type *fs_type,
2025 error = 0; 2034 error = 0;
2026 2035
2027out: 2036out:
2028 kfree(data.client_address); 2037 kfree(data->client_address);
2029 kfree(data.nfs_server.export_path); 2038 kfree(data->nfs_server.export_path);
2030 kfree(data.nfs_server.hostname); 2039 kfree(data->nfs_server.hostname);
2031 security_free_mnt_opts(&data.lsm_opts); 2040 security_free_mnt_opts(&data->lsm_opts);
2041out_free_fh:
2042 kfree(mntfh);
2043 kfree(data);
2032 return error; 2044 return error;
2033 2045
2034out_free: 2046out_free:
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 6d8ace3e3259..f333848fd3be 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -739,12 +739,13 @@ int nfs_updatepage(struct file *file, struct page *page,
739 } 739 }
740 740
741 status = nfs_writepage_setup(ctx, page, offset, count); 741 status = nfs_writepage_setup(ctx, page, offset, count);
742 __set_page_dirty_nobuffers(page); 742 if (status < 0)
743 nfs_set_pageerror(page);
744 else
745 __set_page_dirty_nobuffers(page);
743 746
744 dprintk("NFS: nfs_updatepage returns %d (isize %Ld)\n", 747 dprintk("NFS: nfs_updatepage returns %d (isize %Ld)\n",
745 status, (long long)i_size_read(inode)); 748 status, (long long)i_size_read(inode));
746 if (status < 0)
747 nfs_set_pageerror(page);
748 return status; 749 return status;
749} 750}
750 751
diff --git a/fs/ocfs2/cluster/nodemanager.c b/fs/ocfs2/cluster/nodemanager.c
index cf9401e8cd0b..cfdb08b484ed 100644
--- a/fs/ocfs2/cluster/nodemanager.c
+++ b/fs/ocfs2/cluster/nodemanager.c
@@ -21,7 +21,6 @@
21 21
22#include <linux/kernel.h> 22#include <linux/kernel.h>
23#include <linux/module.h> 23#include <linux/module.h>
24#include <linux/sysctl.h>
25#include <linux/configfs.h> 24#include <linux/configfs.h>
26 25
27#include "tcp.h" 26#include "tcp.h"
@@ -36,65 +35,6 @@
36 * cluster references throughout where nodes are looked up */ 35 * cluster references throughout where nodes are looked up */
37struct o2nm_cluster *o2nm_single_cluster = NULL; 36struct o2nm_cluster *o2nm_single_cluster = NULL;
38 37
39#define OCFS2_MAX_HB_CTL_PATH 256
40static char ocfs2_hb_ctl_path[OCFS2_MAX_HB_CTL_PATH] = "/sbin/ocfs2_hb_ctl";
41
42static ctl_table ocfs2_nm_table[] = {
43 {
44 .ctl_name = 1,
45 .procname = "hb_ctl_path",
46 .data = ocfs2_hb_ctl_path,
47 .maxlen = OCFS2_MAX_HB_CTL_PATH,
48 .mode = 0644,
49 .proc_handler = &proc_dostring,
50 .strategy = &sysctl_string,
51 },
52 { .ctl_name = 0 }
53};
54
55static ctl_table ocfs2_mod_table[] = {
56 {
57 .ctl_name = FS_OCFS2_NM,
58 .procname = "nm",
59 .data = NULL,
60 .maxlen = 0,
61 .mode = 0555,
62 .child = ocfs2_nm_table
63 },
64 { .ctl_name = 0}
65};
66
67static ctl_table ocfs2_kern_table[] = {
68 {
69 .ctl_name = FS_OCFS2,
70 .procname = "ocfs2",
71 .data = NULL,
72 .maxlen = 0,
73 .mode = 0555,
74 .child = ocfs2_mod_table
75 },
76 { .ctl_name = 0}
77};
78
79static ctl_table ocfs2_root_table[] = {
80 {
81 .ctl_name = CTL_FS,
82 .procname = "fs",
83 .data = NULL,
84 .maxlen = 0,
85 .mode = 0555,
86 .child = ocfs2_kern_table
87 },
88 { .ctl_name = 0 }
89};
90
91static struct ctl_table_header *ocfs2_table_header = NULL;
92
93const char *o2nm_get_hb_ctl_path(void)
94{
95 return ocfs2_hb_ctl_path;
96}
97EXPORT_SYMBOL_GPL(o2nm_get_hb_ctl_path);
98 38
99struct o2nm_node *o2nm_get_node_by_num(u8 node_num) 39struct o2nm_node *o2nm_get_node_by_num(u8 node_num)
100{ 40{
@@ -941,9 +881,6 @@ void o2nm_undepend_this_node(void)
941 881
942static void __exit exit_o2nm(void) 882static void __exit exit_o2nm(void)
943{ 883{
944 if (ocfs2_table_header)
945 unregister_sysctl_table(ocfs2_table_header);
946
947 /* XXX sync with hb callbacks and shut down hb? */ 884 /* XXX sync with hb callbacks and shut down hb? */
948 o2net_unregister_hb_callbacks(); 885 o2net_unregister_hb_callbacks();
949 configfs_unregister_subsystem(&o2nm_cluster_group.cs_subsys); 886 configfs_unregister_subsystem(&o2nm_cluster_group.cs_subsys);
@@ -964,16 +901,9 @@ static int __init init_o2nm(void)
964 if (ret) 901 if (ret)
965 goto out; 902 goto out;
966 903
967 ocfs2_table_header = register_sysctl_table(ocfs2_root_table);
968 if (!ocfs2_table_header) {
969 printk(KERN_ERR "nodemanager: unable to register sysctl\n");
970 ret = -ENOMEM; /* or something. */
971 goto out_o2net;
972 }
973
974 ret = o2net_register_hb_callbacks(); 904 ret = o2net_register_hb_callbacks();
975 if (ret) 905 if (ret)
976 goto out_sysctl; 906 goto out_o2net;
977 907
978 config_group_init(&o2nm_cluster_group.cs_subsys.su_group); 908 config_group_init(&o2nm_cluster_group.cs_subsys.su_group);
979 mutex_init(&o2nm_cluster_group.cs_subsys.su_mutex); 909 mutex_init(&o2nm_cluster_group.cs_subsys.su_mutex);
@@ -990,8 +920,6 @@ static int __init init_o2nm(void)
990 configfs_unregister_subsystem(&o2nm_cluster_group.cs_subsys); 920 configfs_unregister_subsystem(&o2nm_cluster_group.cs_subsys);
991out_callbacks: 921out_callbacks:
992 o2net_unregister_hb_callbacks(); 922 o2net_unregister_hb_callbacks();
993out_sysctl:
994 unregister_sysctl_table(ocfs2_table_header);
995out_o2net: 923out_o2net:
996 o2net_exit(); 924 o2net_exit();
997out: 925out:
diff --git a/fs/ocfs2/cluster/nodemanager.h b/fs/ocfs2/cluster/nodemanager.h
index 7c860361b8dd..c992ea0da4ad 100644
--- a/fs/ocfs2/cluster/nodemanager.h
+++ b/fs/ocfs2/cluster/nodemanager.h
@@ -33,10 +33,6 @@
33#include <linux/configfs.h> 33#include <linux/configfs.h>
34#include <linux/rbtree.h> 34#include <linux/rbtree.h>
35 35
36#define FS_OCFS2_NM 1
37
38const char *o2nm_get_hb_ctl_path(void);
39
40struct o2nm_node { 36struct o2nm_node {
41 spinlock_t nd_lock; 37 spinlock_t nd_lock;
42 struct config_item nd_item; 38 struct config_item nd_item;
diff --git a/fs/ocfs2/stack_o2cb.c b/fs/ocfs2/stack_o2cb.c
index bbd1667aa7d3..fcd120f1493a 100644
--- a/fs/ocfs2/stack_o2cb.c
+++ b/fs/ocfs2/stack_o2cb.c
@@ -317,8 +317,7 @@ out:
317 return rc; 317 return rc;
318} 318}
319 319
320static int o2cb_cluster_disconnect(struct ocfs2_cluster_connection *conn, 320static int o2cb_cluster_disconnect(struct ocfs2_cluster_connection *conn)
321 int hangup_pending)
322{ 321{
323 struct dlm_ctxt *dlm = conn->cc_lockspace; 322 struct dlm_ctxt *dlm = conn->cc_lockspace;
324 struct o2dlm_private *priv = conn->cc_private; 323 struct o2dlm_private *priv = conn->cc_private;
@@ -333,43 +332,6 @@ static int o2cb_cluster_disconnect(struct ocfs2_cluster_connection *conn,
333 return 0; 332 return 0;
334} 333}
335 334
336static void o2hb_stop(const char *group)
337{
338 int ret;
339 char *argv[5], *envp[3];
340
341 argv[0] = (char *)o2nm_get_hb_ctl_path();
342 argv[1] = "-K";
343 argv[2] = "-u";
344 argv[3] = (char *)group;
345 argv[4] = NULL;
346
347 mlog(0, "Run: %s %s %s %s\n", argv[0], argv[1], argv[2], argv[3]);
348
349 /* minimal command environment taken from cpu_run_sbin_hotplug */
350 envp[0] = "HOME=/";
351 envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
352 envp[2] = NULL;
353
354 ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
355 if (ret < 0)
356 mlog_errno(ret);
357}
358
359/*
360 * Hangup is a hack for tools compatibility. Older ocfs2-tools software
361 * expects the filesystem to call "ocfs2_hb_ctl" during unmount. This
362 * happens regardless of whether the DLM got started, so we can't do it
363 * in ocfs2_cluster_disconnect(). We bring the o2hb_stop() function into
364 * the glue and provide a "hangup" API for super.c to call.
365 *
366 * Other stacks will eventually provide a NULL ->hangup() pointer.
367 */
368static void o2cb_cluster_hangup(const char *group, int grouplen)
369{
370 o2hb_stop(group);
371}
372
373static int o2cb_cluster_this_node(unsigned int *node) 335static int o2cb_cluster_this_node(unsigned int *node)
374{ 336{
375 int node_num; 337 int node_num;
@@ -388,7 +350,6 @@ static int o2cb_cluster_this_node(unsigned int *node)
388static struct ocfs2_stack_operations o2cb_stack_ops = { 350static struct ocfs2_stack_operations o2cb_stack_ops = {
389 .connect = o2cb_cluster_connect, 351 .connect = o2cb_cluster_connect,
390 .disconnect = o2cb_cluster_disconnect, 352 .disconnect = o2cb_cluster_disconnect,
391 .hangup = o2cb_cluster_hangup,
392 .this_node = o2cb_cluster_this_node, 353 .this_node = o2cb_cluster_this_node,
393 .dlm_lock = o2cb_dlm_lock, 354 .dlm_lock = o2cb_dlm_lock,
394 .dlm_unlock = o2cb_dlm_unlock, 355 .dlm_unlock = o2cb_dlm_unlock,
diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c
index 6b97d11f6bf8..c021280dd462 100644
--- a/fs/ocfs2/stack_user.c
+++ b/fs/ocfs2/stack_user.c
@@ -816,8 +816,7 @@ out:
816 return rc; 816 return rc;
817} 817}
818 818
819static int user_cluster_disconnect(struct ocfs2_cluster_connection *conn, 819static int user_cluster_disconnect(struct ocfs2_cluster_connection *conn)
820 int hangup_pending)
821{ 820{
822 dlm_release_lockspace(conn->cc_lockspace, 2); 821 dlm_release_lockspace(conn->cc_lockspace, 2);
823 conn->cc_lockspace = NULL; 822 conn->cc_lockspace = NULL;
diff --git a/fs/ocfs2/stackglue.c b/fs/ocfs2/stackglue.c
index 119f60cea9cc..10e149ae5e3a 100644
--- a/fs/ocfs2/stackglue.c
+++ b/fs/ocfs2/stackglue.c
@@ -26,6 +26,7 @@
26#include <linux/fs.h> 26#include <linux/fs.h>
27#include <linux/kobject.h> 27#include <linux/kobject.h>
28#include <linux/sysfs.h> 28#include <linux/sysfs.h>
29#include <linux/sysctl.h>
29 30
30#include "ocfs2_fs.h" 31#include "ocfs2_fs.h"
31 32
@@ -33,11 +34,13 @@
33 34
34#define OCFS2_STACK_PLUGIN_O2CB "o2cb" 35#define OCFS2_STACK_PLUGIN_O2CB "o2cb"
35#define OCFS2_STACK_PLUGIN_USER "user" 36#define OCFS2_STACK_PLUGIN_USER "user"
37#define OCFS2_MAX_HB_CTL_PATH 256
36 38
37static struct ocfs2_locking_protocol *lproto; 39static struct ocfs2_locking_protocol *lproto;
38static DEFINE_SPINLOCK(ocfs2_stack_lock); 40static DEFINE_SPINLOCK(ocfs2_stack_lock);
39static LIST_HEAD(ocfs2_stack_list); 41static LIST_HEAD(ocfs2_stack_list);
40static char cluster_stack_name[OCFS2_STACK_LABEL_LEN + 1]; 42static char cluster_stack_name[OCFS2_STACK_LABEL_LEN + 1];
43static char ocfs2_hb_ctl_path[OCFS2_MAX_HB_CTL_PATH] = "/sbin/ocfs2_hb_ctl";
41 44
42/* 45/*
43 * The stack currently in use. If not null, active_stack->sp_count > 0, 46 * The stack currently in use. If not null, active_stack->sp_count > 0,
@@ -349,7 +352,7 @@ int ocfs2_cluster_disconnect(struct ocfs2_cluster_connection *conn,
349 352
350 BUG_ON(conn == NULL); 353 BUG_ON(conn == NULL);
351 354
352 ret = active_stack->sp_ops->disconnect(conn, hangup_pending); 355 ret = active_stack->sp_ops->disconnect(conn);
353 356
354 /* XXX Should we free it anyway? */ 357 /* XXX Should we free it anyway? */
355 if (!ret) { 358 if (!ret) {
@@ -362,13 +365,48 @@ int ocfs2_cluster_disconnect(struct ocfs2_cluster_connection *conn,
362} 365}
363EXPORT_SYMBOL_GPL(ocfs2_cluster_disconnect); 366EXPORT_SYMBOL_GPL(ocfs2_cluster_disconnect);
364 367
368/*
369 * Leave the group for this filesystem. This is executed by a userspace
370 * program (stored in ocfs2_hb_ctl_path).
371 */
372static void ocfs2_leave_group(const char *group)
373{
374 int ret;
375 char *argv[5], *envp[3];
376
377 argv[0] = ocfs2_hb_ctl_path;
378 argv[1] = "-K";
379 argv[2] = "-u";
380 argv[3] = (char *)group;
381 argv[4] = NULL;
382
383 /* minimal command environment taken from cpu_run_sbin_hotplug */
384 envp[0] = "HOME=/";
385 envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
386 envp[2] = NULL;
387
388 ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
389 if (ret < 0) {
390 printk(KERN_ERR
391 "ocfs2: Error %d running user helper "
392 "\"%s %s %s %s\"\n",
393 ret, argv[0], argv[1], argv[2], argv[3]);
394 }
395}
396
397/*
398 * Hangup is a required post-umount. ocfs2-tools software expects the
399 * filesystem to call "ocfs2_hb_ctl" during unmount. This happens
400 * regardless of whether the DLM got started, so we can't do it
401 * in ocfs2_cluster_disconnect(). The ocfs2_leave_group() function does
402 * the actual work.
403 */
365void ocfs2_cluster_hangup(const char *group, int grouplen) 404void ocfs2_cluster_hangup(const char *group, int grouplen)
366{ 405{
367 BUG_ON(group == NULL); 406 BUG_ON(group == NULL);
368 BUG_ON(group[grouplen] != '\0'); 407 BUG_ON(group[grouplen] != '\0');
369 408
370 if (active_stack->sp_ops->hangup) 409 ocfs2_leave_group(group);
371 active_stack->sp_ops->hangup(group, grouplen);
372 410
373 /* cluster_disconnect() was called with hangup_pending==1 */ 411 /* cluster_disconnect() was called with hangup_pending==1 */
374 ocfs2_stack_driver_put(); 412 ocfs2_stack_driver_put();
@@ -548,10 +586,83 @@ error:
548 return ret; 586 return ret;
549} 587}
550 588
589/*
590 * Sysctl bits
591 *
592 * The sysctl lives at /proc/sys/fs/ocfs2/nm/hb_ctl_path. The 'nm' doesn't
593 * make as much sense in a multiple cluster stack world, but it's safer
594 * and easier to preserve the name.
595 */
596
597#define FS_OCFS2_NM 1
598
599static ctl_table ocfs2_nm_table[] = {
600 {
601 .ctl_name = 1,
602 .procname = "hb_ctl_path",
603 .data = ocfs2_hb_ctl_path,
604 .maxlen = OCFS2_MAX_HB_CTL_PATH,
605 .mode = 0644,
606 .proc_handler = &proc_dostring,
607 .strategy = &sysctl_string,
608 },
609 { .ctl_name = 0 }
610};
611
612static ctl_table ocfs2_mod_table[] = {
613 {
614 .ctl_name = FS_OCFS2_NM,
615 .procname = "nm",
616 .data = NULL,
617 .maxlen = 0,
618 .mode = 0555,
619 .child = ocfs2_nm_table
620 },
621 { .ctl_name = 0}
622};
623
624static ctl_table ocfs2_kern_table[] = {
625 {
626 .ctl_name = FS_OCFS2,
627 .procname = "ocfs2",
628 .data = NULL,
629 .maxlen = 0,
630 .mode = 0555,
631 .child = ocfs2_mod_table
632 },
633 { .ctl_name = 0}
634};
635
636static ctl_table ocfs2_root_table[] = {
637 {
638 .ctl_name = CTL_FS,
639 .procname = "fs",
640 .data = NULL,
641 .maxlen = 0,
642 .mode = 0555,
643 .child = ocfs2_kern_table
644 },
645 { .ctl_name = 0 }
646};
647
648static struct ctl_table_header *ocfs2_table_header = NULL;
649
650
651/*
652 * Initialization
653 */
654
551static int __init ocfs2_stack_glue_init(void) 655static int __init ocfs2_stack_glue_init(void)
552{ 656{
553 strcpy(cluster_stack_name, OCFS2_STACK_PLUGIN_O2CB); 657 strcpy(cluster_stack_name, OCFS2_STACK_PLUGIN_O2CB);
554 658
659 ocfs2_table_header = register_sysctl_table(ocfs2_root_table);
660 if (!ocfs2_table_header) {
661 printk(KERN_ERR
662 "ocfs2 stack glue: unable to register sysctl\n");
663 return -ENOMEM; /* or something. */
664 }
665
555 return ocfs2_sysfs_init(); 666 return ocfs2_sysfs_init();
556} 667}
557 668
@@ -559,6 +670,8 @@ static void __exit ocfs2_stack_glue_exit(void)
559{ 670{
560 lproto = NULL; 671 lproto = NULL;
561 ocfs2_sysfs_exit(); 672 ocfs2_sysfs_exit();
673 if (ocfs2_table_header)
674 unregister_sysctl_table(ocfs2_table_header);
562} 675}
563 676
564MODULE_AUTHOR("Oracle"); 677MODULE_AUTHOR("Oracle");
diff --git a/fs/ocfs2/stackglue.h b/fs/ocfs2/stackglue.h
index 005e4f170e0f..db56281dd1be 100644
--- a/fs/ocfs2/stackglue.h
+++ b/fs/ocfs2/stackglue.h
@@ -134,22 +134,10 @@ struct ocfs2_stack_operations {
134 * be freed. Thus, a stack must not return from ->disconnect() 134 * be freed. Thus, a stack must not return from ->disconnect()
135 * until it will no longer reference the conn pointer. 135 * until it will no longer reference the conn pointer.
136 * 136 *
137 * If hangup_pending is zero, ocfs2_cluster_disconnect() will also 137 * Once this call returns, the stack glue will be dropping this
138 * be dropping the reference on the module. 138 * connection's reference on the module.
139 */ 139 */
140 int (*disconnect)(struct ocfs2_cluster_connection *conn, 140 int (*disconnect)(struct ocfs2_cluster_connection *conn);
141 int hangup_pending);
142
143 /*
144 * ocfs2_cluster_hangup() exists for compatibility with older
145 * ocfs2 tools. Only the classic stack really needs it. As such
146 * ->hangup() is not required of all stacks. See the comment by
147 * ocfs2_cluster_hangup() for more details.
148 *
149 * Note that ocfs2_cluster_hangup() can only be called if
150 * hangup_pending was passed to ocfs2_cluster_disconnect().
151 */
152 void (*hangup)(const char *group, int grouplen);
153 141
154 /* 142 /*
155 * ->this_node() returns the cluster's unique identifier for the 143 * ->this_node() returns the cluster's unique identifier for the
@@ -258,4 +246,5 @@ void ocfs2_stack_glue_set_locking_protocol(struct ocfs2_locking_protocol *proto)
258/* Used by stack plugins */ 246/* Used by stack plugins */
259int ocfs2_stack_glue_register(struct ocfs2_stack_plugin *plugin); 247int ocfs2_stack_glue_register(struct ocfs2_stack_plugin *plugin);
260void ocfs2_stack_glue_unregister(struct ocfs2_stack_plugin *plugin); 248void ocfs2_stack_glue_unregister(struct ocfs2_stack_plugin *plugin);
249
261#endif /* STACKGLUE_H */ 250#endif /* STACKGLUE_H */
diff --git a/fs/open.c b/fs/open.c
index a1450086e92f..a99ad09c3197 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -16,6 +16,7 @@
16#include <linux/namei.h> 16#include <linux/namei.h>
17#include <linux/backing-dev.h> 17#include <linux/backing-dev.h>
18#include <linux/capability.h> 18#include <linux/capability.h>
19#include <linux/securebits.h>
19#include <linux/security.h> 20#include <linux/security.h>
20#include <linux/mount.h> 21#include <linux/mount.h>
21#include <linux/vfs.h> 22#include <linux/vfs.h>
@@ -425,7 +426,7 @@ asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode)
425{ 426{
426 struct nameidata nd; 427 struct nameidata nd;
427 int old_fsuid, old_fsgid; 428 int old_fsuid, old_fsgid;
428 kernel_cap_t old_cap; 429 kernel_cap_t uninitialized_var(old_cap); /* !SECURE_NO_SETUID_FIXUP */
429 int res; 430 int res;
430 431
431 if (mode & ~S_IRWXO) /* where's F_OK, X_OK, W_OK, R_OK? */ 432 if (mode & ~S_IRWXO) /* where's F_OK, X_OK, W_OK, R_OK? */
@@ -433,23 +434,27 @@ asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode)
433 434
434 old_fsuid = current->fsuid; 435 old_fsuid = current->fsuid;
435 old_fsgid = current->fsgid; 436 old_fsgid = current->fsgid;
436 old_cap = current->cap_effective;
437 437
438 current->fsuid = current->uid; 438 current->fsuid = current->uid;
439 current->fsgid = current->gid; 439 current->fsgid = current->gid;
440 440
441 /* 441 if (!issecure(SECURE_NO_SETUID_FIXUP)) {
442 * Clear the capabilities if we switch to a non-root user 442 /*
443 * 443 * Clear the capabilities if we switch to a non-root user
444 * FIXME: There is a race here against sys_capset. The 444 */
445 * capabilities can change yet we will restore the old 445#ifndef CONFIG_SECURITY_FILE_CAPABILITIES
446 * value below. We should hold task_capabilities_lock, 446 /*
447 * but we cannot because user_path_walk can sleep. 447 * FIXME: There is a race here against sys_capset. The
448 */ 448 * capabilities can change yet we will restore the old
449 if (current->uid) 449 * value below. We should hold task_capabilities_lock,
450 cap_clear(current->cap_effective); 450 * but we cannot because user_path_walk can sleep.
451 else 451 */
452 current->cap_effective = current->cap_permitted; 452#endif /* ndef CONFIG_SECURITY_FILE_CAPABILITIES */
453 if (current->uid)
454 old_cap = cap_set_effective(__cap_empty_set);
455 else
456 old_cap = cap_set_effective(current->cap_permitted);
457 }
453 458
454 res = __user_walk_fd(dfd, filename, LOOKUP_FOLLOW|LOOKUP_ACCESS, &nd); 459 res = __user_walk_fd(dfd, filename, LOOKUP_FOLLOW|LOOKUP_ACCESS, &nd);
455 if (res) 460 if (res)
@@ -478,7 +483,9 @@ out_path_release:
478out: 483out:
479 current->fsuid = old_fsuid; 484 current->fsuid = old_fsuid;
480 current->fsgid = old_fsgid; 485 current->fsgid = old_fsgid;
481 current->cap_effective = old_cap; 486
487 if (!issecure(SECURE_NO_SETUID_FIXUP))
488 cap_set_effective(old_cap);
482 489
483 return res; 490 return res;
484} 491}
diff --git a/fs/pipe.c b/fs/pipe.c
index ec228bc9f882..700f4e0d9572 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -1003,8 +1003,7 @@ struct file *create_write_pipe(void)
1003void free_write_pipe(struct file *f) 1003void free_write_pipe(struct file *f)
1004{ 1004{
1005 free_pipe_info(f->f_dentry->d_inode); 1005 free_pipe_info(f->f_dentry->d_inode);
1006 dput(f->f_path.dentry); 1006 path_put(&f->f_path);
1007 mntput(f->f_path.mnt);
1008 put_filp(f); 1007 put_filp(f);
1009} 1008}
1010 1009
@@ -1015,8 +1014,8 @@ struct file *create_read_pipe(struct file *wrf)
1015 return ERR_PTR(-ENFILE); 1014 return ERR_PTR(-ENFILE);
1016 1015
1017 /* Grab pipe from the writer */ 1016 /* Grab pipe from the writer */
1018 f->f_path.mnt = mntget(wrf->f_path.mnt); 1017 f->f_path = wrf->f_path;
1019 f->f_path.dentry = dget(wrf->f_path.dentry); 1018 path_get(&wrf->f_path);
1020 f->f_mapping = wrf->f_path.dentry->d_inode->i_mapping; 1019 f->f_mapping = wrf->f_path.dentry->d_inode->i_mapping;
1021 1020
1022 f->f_pos = 0; 1021 f->f_pos = 0;
@@ -1068,8 +1067,7 @@ int do_pipe(int *fd)
1068 err_fdr: 1067 err_fdr:
1069 put_unused_fd(fdr); 1068 put_unused_fd(fdr);
1070 err_read_pipe: 1069 err_read_pipe:
1071 dput(fr->f_dentry); 1070 path_put(&fr->f_path);
1072 mntput(fr->f_vfsmnt);
1073 put_filp(fr); 1071 put_filp(fr);
1074 err_write_pipe: 1072 err_write_pipe:
1075 free_write_pipe(fw); 1073 free_write_pipe(fw);
diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c
index 7e277f2ad466..c652d469dc08 100644
--- a/fs/proc/proc_misc.c
+++ b/fs/proc/proc_misc.c
@@ -123,6 +123,11 @@ static int uptime_read_proc(char *page, char **start, off_t off,
123 return proc_calc_metrics(page, start, off, count, eof, len); 123 return proc_calc_metrics(page, start, off, count, eof, len);
124} 124}
125 125
126int __attribute__((weak)) arch_report_meminfo(char *page)
127{
128 return 0;
129}
130
126static int meminfo_read_proc(char *page, char **start, off_t off, 131static int meminfo_read_proc(char *page, char **start, off_t off,
127 int count, int *eof, void *data) 132 int count, int *eof, void *data)
128{ 133{
@@ -221,6 +226,8 @@ static int meminfo_read_proc(char *page, char **start, off_t off,
221 226
222 len += hugetlb_report_meminfo(page + len); 227 len += hugetlb_report_meminfo(page + len);
223 228
229 len += arch_report_meminfo(page + len);
230
224 return proc_calc_metrics(page, start, off, count, eof, len); 231 return proc_calc_metrics(page, start, off, count, eof, len);
225#undef K 232#undef K
226} 233}
@@ -472,6 +479,13 @@ static const struct file_operations proc_vmalloc_operations = {
472}; 479};
473#endif 480#endif
474 481
482#ifndef arch_irq_stat_cpu
483#define arch_irq_stat_cpu(cpu) 0
484#endif
485#ifndef arch_irq_stat
486#define arch_irq_stat() 0
487#endif
488
475static int show_stat(struct seq_file *p, void *v) 489static int show_stat(struct seq_file *p, void *v)
476{ 490{
477 int i; 491 int i;
@@ -509,7 +523,9 @@ static int show_stat(struct seq_file *p, void *v)
509 sum += temp; 523 sum += temp;
510 per_irq_sum[j] += temp; 524 per_irq_sum[j] += temp;
511 } 525 }
526 sum += arch_irq_stat_cpu(i);
512 } 527 }
528 sum += arch_irq_stat();
513 529
514 seq_printf(p, "cpu %llu %llu %llu %llu %llu %llu %llu %llu %llu\n", 530 seq_printf(p, "cpu %llu %llu %llu %llu %llu %llu %llu %llu %llu\n",
515 (unsigned long long)cputime64_to_clock_t(user), 531 (unsigned long long)cputime64_to_clock_t(user),
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index ab8ccc9d14ff..c492449f3b45 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -476,10 +476,10 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
476 return -ESRCH; 476 return -ESRCH;
477 mm = get_task_mm(task); 477 mm = get_task_mm(task);
478 if (mm) { 478 if (mm) {
479 static struct mm_walk clear_refs_walk; 479 struct mm_walk clear_refs_walk = {
480 memset(&clear_refs_walk, 0, sizeof(clear_refs_walk)); 480 .pmd_entry = clear_refs_pte_range,
481 clear_refs_walk.pmd_entry = clear_refs_pte_range; 481 .mm = mm,
482 clear_refs_walk.mm = mm; 482 };
483 down_read(&mm->mmap_sem); 483 down_read(&mm->mmap_sem);
484 for (vma = mm->mmap; vma; vma = vma->vm_next) { 484 for (vma = mm->mmap; vma; vma = vma->vm_next) {
485 clear_refs_walk.private = vma; 485 clear_refs_walk.private = vma;
@@ -602,11 +602,6 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
602 return err; 602 return err;
603} 603}
604 604
605static struct mm_walk pagemap_walk = {
606 .pmd_entry = pagemap_pte_range,
607 .pte_hole = pagemap_pte_hole
608};
609
610/* 605/*
611 * /proc/pid/pagemap - an array mapping virtual pages to pfns 606 * /proc/pid/pagemap - an array mapping virtual pages to pfns
612 * 607 *
@@ -641,6 +636,11 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
641 struct pagemapread pm; 636 struct pagemapread pm;
642 int pagecount; 637 int pagecount;
643 int ret = -ESRCH; 638 int ret = -ESRCH;
639 struct mm_walk pagemap_walk;
640 unsigned long src;
641 unsigned long svpfn;
642 unsigned long start_vaddr;
643 unsigned long end_vaddr;
644 644
645 if (!task) 645 if (!task)
646 goto out; 646 goto out;
@@ -659,11 +659,15 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
659 if (!mm) 659 if (!mm)
660 goto out_task; 660 goto out_task;
661 661
662 ret = -ENOMEM; 662
663 uaddr = (unsigned long)buf & PAGE_MASK; 663 uaddr = (unsigned long)buf & PAGE_MASK;
664 uend = (unsigned long)(buf + count); 664 uend = (unsigned long)(buf + count);
665 pagecount = (PAGE_ALIGN(uend) - uaddr) / PAGE_SIZE; 665 pagecount = (PAGE_ALIGN(uend) - uaddr) / PAGE_SIZE;
666 pages = kmalloc(pagecount * sizeof(struct page *), GFP_KERNEL); 666 ret = 0;
667 if (pagecount == 0)
668 goto out_mm;
669 pages = kcalloc(pagecount, sizeof(struct page *), GFP_KERNEL);
670 ret = -ENOMEM;
667 if (!pages) 671 if (!pages)
668 goto out_mm; 672 goto out_mm;
669 673
@@ -684,33 +688,33 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
684 pm.out = (u64 *)buf; 688 pm.out = (u64 *)buf;
685 pm.end = (u64 *)(buf + count); 689 pm.end = (u64 *)(buf + count);
686 690
687 if (!ptrace_may_attach(task)) { 691 pagemap_walk.pmd_entry = pagemap_pte_range;
688 ret = -EIO; 692 pagemap_walk.pte_hole = pagemap_pte_hole;
689 } else { 693 pagemap_walk.mm = mm;
690 unsigned long src = *ppos; 694 pagemap_walk.private = &pm;
691 unsigned long svpfn = src / PM_ENTRY_BYTES; 695
692 unsigned long start_vaddr = svpfn << PAGE_SHIFT; 696 src = *ppos;
693 unsigned long end_vaddr = TASK_SIZE_OF(task); 697 svpfn = src / PM_ENTRY_BYTES;
694 698 start_vaddr = svpfn << PAGE_SHIFT;
695 /* watch out for wraparound */ 699 end_vaddr = TASK_SIZE_OF(task);
696 if (svpfn > TASK_SIZE_OF(task) >> PAGE_SHIFT) 700
697 start_vaddr = end_vaddr; 701 /* watch out for wraparound */
698 702 if (svpfn > TASK_SIZE_OF(task) >> PAGE_SHIFT)
699 /* 703 start_vaddr = end_vaddr;
700 * The odds are that this will stop walking way 704
701 * before end_vaddr, because the length of the 705 /*
702 * user buffer is tracked in "pm", and the walk 706 * The odds are that this will stop walking way
703 * will stop when we hit the end of the buffer. 707 * before end_vaddr, because the length of the
704 */ 708 * user buffer is tracked in "pm", and the walk
705 ret = walk_page_range(start_vaddr, end_vaddr, 709 * will stop when we hit the end of the buffer.
706 &pagemap_walk); 710 */
707 if (ret == PM_END_OF_BUFFER) 711 ret = walk_page_range(start_vaddr, end_vaddr, &pagemap_walk);
708 ret = 0; 712 if (ret == PM_END_OF_BUFFER)
709 /* don't need mmap_sem for these, but this looks cleaner */ 713 ret = 0;
710 *ppos += (char *)pm.out - buf; 714 /* don't need mmap_sem for these, but this looks cleaner */
711 if (!ret) 715 *ppos += (char *)pm.out - buf;
712 ret = (char *)pm.out - buf; 716 if (!ret)
713 } 717 ret = (char *)pm.out - buf;
714 718
715out_pages: 719out_pages:
716 for (; pagecount; pagecount--) { 720 for (; pagecount; pagecount--) {
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
index ed424d708e69..1d40f2bd1970 100644
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -2165,8 +2165,10 @@ static ssize_t reiserfs_quota_write(struct super_block *sb, int type,
2165 blk++; 2165 blk++;
2166 } 2166 }
2167out: 2167out:
2168 if (len == towrite) 2168 if (len == towrite) {
2169 mutex_unlock(&inode->i_mutex);
2169 return err; 2170 return err;
2171 }
2170 if (inode->i_size < off + len - towrite) 2172 if (inode->i_size < off + len - towrite)
2171 i_size_write(inode, off + len - towrite); 2173 i_size_write(inode, off + len - towrite);
2172 inode->i_version++; 2174 inode->i_version++;
diff --git a/fs/select.c b/fs/select.c
index 8dda969614a9..da0e88201c3a 100644
--- a/fs/select.c
+++ b/fs/select.c
@@ -249,7 +249,6 @@ int do_select(int n, fd_set_bits *fds, s64 *timeout)
249 retval++; 249 retval++;
250 } 250 }
251 } 251 }
252 cond_resched();
253 } 252 }
254 if (res_in) 253 if (res_in)
255 *rinp = res_in; 254 *rinp = res_in;
@@ -257,6 +256,7 @@ int do_select(int n, fd_set_bits *fds, s64 *timeout)
257 *routp = res_out; 256 *routp = res_out;
258 if (res_ex) 257 if (res_ex)
259 *rexp = res_ex; 258 *rexp = res_ex;
259 cond_resched();
260 } 260 }
261 wait = NULL; 261 wait = NULL;
262 if (retval || !*timeout || signal_pending(current)) 262 if (retval || !*timeout || signal_pending(current))
diff --git a/fs/udf/super.c b/fs/udf/super.c
index 7a5f69be6ac2..44cc702f96cc 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -682,38 +682,26 @@ static int udf_vrs(struct super_block *sb, int silent)
682/* 682/*
683 * Check whether there is an anchor block in the given block 683 * Check whether there is an anchor block in the given block
684 */ 684 */
685static int udf_check_anchor_block(struct super_block *sb, sector_t block, 685static int udf_check_anchor_block(struct super_block *sb, sector_t block)
686 bool varconv)
687{ 686{
688 struct buffer_head *bh = NULL; 687 struct buffer_head *bh;
689 tag *t;
690 uint16_t ident; 688 uint16_t ident;
691 uint32_t location;
692 689
693 if (varconv) { 690 if (UDF_QUERY_FLAG(sb, UDF_FLAG_VARCONV) &&
694 if (udf_fixed_to_variable(block) >= 691 udf_fixed_to_variable(block) >=
695 sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits) 692 sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits)
696 return 0; 693 return 0;
697 bh = sb_bread(sb, udf_fixed_to_variable(block));
698 }
699 else
700 bh = sb_bread(sb, block);
701 694
695 bh = udf_read_tagged(sb, block, block, &ident);
702 if (!bh) 696 if (!bh)
703 return 0; 697 return 0;
704
705 t = (tag *)bh->b_data;
706 ident = le16_to_cpu(t->tagIdent);
707 location = le32_to_cpu(t->tagLocation);
708 brelse(bh); 698 brelse(bh);
709 if (ident != TAG_IDENT_AVDP) 699
710 return 0; 700 return ident == TAG_IDENT_AVDP;
711 return location == block;
712} 701}
713 702
714/* Search for an anchor volume descriptor pointer */ 703/* Search for an anchor volume descriptor pointer */
715static sector_t udf_scan_anchors(struct super_block *sb, bool varconv, 704static sector_t udf_scan_anchors(struct super_block *sb, sector_t lastblock)
716 sector_t lastblock)
717{ 705{
718 sector_t last[6]; 706 sector_t last[6];
719 int i; 707 int i;
@@ -739,7 +727,7 @@ static sector_t udf_scan_anchors(struct super_block *sb, bool varconv,
739 sb->s_blocksize_bits) 727 sb->s_blocksize_bits)
740 continue; 728 continue;
741 729
742 if (udf_check_anchor_block(sb, last[i], varconv)) { 730 if (udf_check_anchor_block(sb, last[i])) {
743 sbi->s_anchor[0] = last[i]; 731 sbi->s_anchor[0] = last[i];
744 sbi->s_anchor[1] = last[i] - 256; 732 sbi->s_anchor[1] = last[i] - 256;
745 return last[i]; 733 return last[i];
@@ -748,17 +736,17 @@ static sector_t udf_scan_anchors(struct super_block *sb, bool varconv,
748 if (last[i] < 256) 736 if (last[i] < 256)
749 continue; 737 continue;
750 738
751 if (udf_check_anchor_block(sb, last[i] - 256, varconv)) { 739 if (udf_check_anchor_block(sb, last[i] - 256)) {
752 sbi->s_anchor[1] = last[i] - 256; 740 sbi->s_anchor[1] = last[i] - 256;
753 return last[i]; 741 return last[i];
754 } 742 }
755 } 743 }
756 744
757 if (udf_check_anchor_block(sb, sbi->s_session + 256, varconv)) { 745 if (udf_check_anchor_block(sb, sbi->s_session + 256)) {
758 sbi->s_anchor[0] = sbi->s_session + 256; 746 sbi->s_anchor[0] = sbi->s_session + 256;
759 return last[0]; 747 return last[0];
760 } 748 }
761 if (udf_check_anchor_block(sb, sbi->s_session + 512, varconv)) { 749 if (udf_check_anchor_block(sb, sbi->s_session + 512)) {
762 sbi->s_anchor[0] = sbi->s_session + 512; 750 sbi->s_anchor[0] = sbi->s_session + 512;
763 return last[0]; 751 return last[0];
764 } 752 }
@@ -780,23 +768,24 @@ static void udf_find_anchor(struct super_block *sb)
780 int i; 768 int i;
781 struct udf_sb_info *sbi = UDF_SB(sb); 769 struct udf_sb_info *sbi = UDF_SB(sb);
782 770
783 lastblock = udf_scan_anchors(sb, 0, sbi->s_last_block); 771 lastblock = udf_scan_anchors(sb, sbi->s_last_block);
784 if (lastblock) 772 if (lastblock)
785 goto check_anchor; 773 goto check_anchor;
786 774
787 /* No anchor found? Try VARCONV conversion of block numbers */ 775 /* No anchor found? Try VARCONV conversion of block numbers */
776 UDF_SET_FLAG(sb, UDF_FLAG_VARCONV);
788 /* Firstly, we try to not convert number of the last block */ 777 /* Firstly, we try to not convert number of the last block */
789 lastblock = udf_scan_anchors(sb, 1, 778 lastblock = udf_scan_anchors(sb,
790 udf_variable_to_fixed(sbi->s_last_block)); 779 udf_variable_to_fixed(sbi->s_last_block));
791 if (lastblock) { 780 if (lastblock)
792 UDF_SET_FLAG(sb, UDF_FLAG_VARCONV);
793 goto check_anchor; 781 goto check_anchor;
794 }
795 782
796 /* Secondly, we try with converted number of the last block */ 783 /* Secondly, we try with converted number of the last block */
797 lastblock = udf_scan_anchors(sb, 1, sbi->s_last_block); 784 lastblock = udf_scan_anchors(sb, sbi->s_last_block);
798 if (lastblock) 785 if (!lastblock) {
799 UDF_SET_FLAG(sb, UDF_FLAG_VARCONV); 786 /* VARCONV didn't help. Clear it. */
787 UDF_CLEAR_FLAG(sb, UDF_FLAG_VARCONV);
788 }
800 789
801check_anchor: 790check_anchor:
802 /* 791 /*
diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h
index 8fa9c2d70911..8ec865de5f13 100644
--- a/fs/udf/udfdecl.h
+++ b/fs/udf/udfdecl.h
@@ -16,7 +16,7 @@
16#define UDF_PREALLOCATE 16#define UDF_PREALLOCATE
17#define UDF_DEFAULT_PREALLOC_BLOCKS 8 17#define UDF_DEFAULT_PREALLOC_BLOCKS 8
18 18
19#define UDFFS_DEBUG 19#undef UDFFS_DEBUG
20 20
21#ifdef UDFFS_DEBUG 21#ifdef UDFFS_DEBUG
22#define udf_debug(f, a...) \ 22#define udf_debug(f, a...) \
diff --git a/fs/utimes.c b/fs/utimes.c
index af059d5cb485..b6b664e7145e 100644
--- a/fs/utimes.c
+++ b/fs/utimes.c
@@ -40,14 +40,9 @@ asmlinkage long sys_utime(char __user *filename, struct utimbuf __user *times)
40 40
41#endif 41#endif
42 42
43static bool nsec_special(long nsec)
44{
45 return nsec == UTIME_OMIT || nsec == UTIME_NOW;
46}
47
48static bool nsec_valid(long nsec) 43static bool nsec_valid(long nsec)
49{ 44{
50 if (nsec_special(nsec)) 45 if (nsec == UTIME_OMIT || nsec == UTIME_NOW)
51 return true; 46 return true;
52 47
53 return nsec >= 0 && nsec <= 999999999; 48 return nsec >= 0 && nsec <= 999999999;
@@ -102,7 +97,11 @@ long do_utimes(int dfd, char __user *filename, struct timespec *times, int flags
102 if (error) 97 if (error)
103 goto dput_and_out; 98 goto dput_and_out;
104 99
105 /* Don't worry, the checks are done in inode_change_ok() */ 100 if (times && times[0].tv_nsec == UTIME_NOW &&
101 times[1].tv_nsec == UTIME_NOW)
102 times = NULL;
103
104 /* In most cases, the checks are done in inode_change_ok() */
106 newattrs.ia_valid = ATTR_CTIME | ATTR_MTIME | ATTR_ATIME; 105 newattrs.ia_valid = ATTR_CTIME | ATTR_MTIME | ATTR_ATIME;
107 if (times) { 106 if (times) {
108 error = -EPERM; 107 error = -EPERM;
@@ -124,28 +123,34 @@ long do_utimes(int dfd, char __user *filename, struct timespec *times, int flags
124 newattrs.ia_mtime.tv_nsec = times[1].tv_nsec; 123 newattrs.ia_mtime.tv_nsec = times[1].tv_nsec;
125 newattrs.ia_valid |= ATTR_MTIME_SET; 124 newattrs.ia_valid |= ATTR_MTIME_SET;
126 } 125 }
127 }
128 126
129 /* 127 /*
130 * If times is NULL or both times are either UTIME_OMIT or 128 * For the UTIME_OMIT/UTIME_NOW and UTIME_NOW/UTIME_OMIT
131 * UTIME_NOW, then need to check permissions, because 129 * cases, we need to make an extra check that is not done by
132 * inode_change_ok() won't do it. 130 * inode_change_ok().
133 */ 131 */
134 if (!times || (nsec_special(times[0].tv_nsec) && 132 if (((times[0].tv_nsec == UTIME_NOW &&
135 nsec_special(times[1].tv_nsec))) { 133 times[1].tv_nsec == UTIME_OMIT)
134 ||
135 (times[0].tv_nsec == UTIME_OMIT &&
136 times[1].tv_nsec == UTIME_NOW))
137 && !is_owner_or_cap(inode))
138 goto mnt_drop_write_and_out;
139 } else {
140
141 /*
142 * If times is NULL (or both times are UTIME_NOW),
143 * then we need to check permissions, because
144 * inode_change_ok() won't do it.
145 */
136 error = -EACCES; 146 error = -EACCES;
137 if (IS_IMMUTABLE(inode)) 147 if (IS_IMMUTABLE(inode))
138 goto mnt_drop_write_and_out; 148 goto mnt_drop_write_and_out;
139 149
140 if (!is_owner_or_cap(inode)) { 150 if (!is_owner_or_cap(inode)) {
141 if (f) { 151 error = permission(inode, MAY_WRITE, NULL);
142 if (!(f->f_mode & FMODE_WRITE)) 152 if (error)
143 goto mnt_drop_write_and_out; 153 goto mnt_drop_write_and_out;
144 } else {
145 error = vfs_permission(&nd, MAY_WRITE);
146 if (error)
147 goto mnt_drop_write_and_out;
148 }
149 } 154 }
150 } 155 }
151 mutex_lock(&inode->i_mutex); 156 mutex_lock(&inode->i_mutex);
@@ -169,14 +174,6 @@ asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __
169 if (utimes) { 174 if (utimes) {
170 if (copy_from_user(&tstimes, utimes, sizeof(tstimes))) 175 if (copy_from_user(&tstimes, utimes, sizeof(tstimes)))
171 return -EFAULT; 176 return -EFAULT;
172 if ((tstimes[0].tv_nsec == UTIME_OMIT ||
173 tstimes[0].tv_nsec == UTIME_NOW) &&
174 tstimes[0].tv_sec != 0)
175 return -EINVAL;
176 if ((tstimes[1].tv_nsec == UTIME_OMIT ||
177 tstimes[1].tv_nsec == UTIME_NOW) &&
178 tstimes[1].tv_sec != 0)
179 return -EINVAL;
180 177
181 /* Nothing to do, we must not even check the path. */ 178 /* Nothing to do, we must not even check the path. */
182 if (tstimes[0].tv_nsec == UTIME_OMIT && 179 if (tstimes[0].tv_nsec == UTIME_OMIT &&
diff --git a/include/asm-alpha/core_mcpcia.h b/include/asm-alpha/core_mcpcia.h
index 525b4f6a7ace..acf55b483472 100644
--- a/include/asm-alpha/core_mcpcia.h
+++ b/include/asm-alpha/core_mcpcia.h
@@ -261,7 +261,7 @@ struct el_MCPCIA_uncorrected_frame_mcheck {
261 } 261 }
262#endif 262#endif
263 263
264static inline int __mcpcia_is_mmio(unsigned long addr) 264extern inline int __mcpcia_is_mmio(unsigned long addr)
265{ 265{
266 return (addr & 0x80000000UL) == 0; 266 return (addr & 0x80000000UL) == 0;
267} 267}
diff --git a/include/asm-alpha/core_t2.h b/include/asm-alpha/core_t2.h
index 90e6b5d6c214..46bfff58f670 100644
--- a/include/asm-alpha/core_t2.h
+++ b/include/asm-alpha/core_t2.h
@@ -356,13 +356,13 @@ struct el_t2_frame_corrected {
356#define vip volatile int * 356#define vip volatile int *
357#define vuip volatile unsigned int * 357#define vuip volatile unsigned int *
358 358
359static inline u8 t2_inb(unsigned long addr) 359extern inline u8 t2_inb(unsigned long addr)
360{ 360{
361 long result = *(vip) ((addr << 5) + T2_IO + 0x00); 361 long result = *(vip) ((addr << 5) + T2_IO + 0x00);
362 return __kernel_extbl(result, addr & 3); 362 return __kernel_extbl(result, addr & 3);
363} 363}
364 364
365static inline void t2_outb(u8 b, unsigned long addr) 365extern inline void t2_outb(u8 b, unsigned long addr)
366{ 366{
367 unsigned long w; 367 unsigned long w;
368 368
@@ -371,13 +371,13 @@ static inline void t2_outb(u8 b, unsigned long addr)
371 mb(); 371 mb();
372} 372}
373 373
374static inline u16 t2_inw(unsigned long addr) 374extern inline u16 t2_inw(unsigned long addr)
375{ 375{
376 long result = *(vip) ((addr << 5) + T2_IO + 0x08); 376 long result = *(vip) ((addr << 5) + T2_IO + 0x08);
377 return __kernel_extwl(result, addr & 3); 377 return __kernel_extwl(result, addr & 3);
378} 378}
379 379
380static inline void t2_outw(u16 b, unsigned long addr) 380extern inline void t2_outw(u16 b, unsigned long addr)
381{ 381{
382 unsigned long w; 382 unsigned long w;
383 383
@@ -386,12 +386,12 @@ static inline void t2_outw(u16 b, unsigned long addr)
386 mb(); 386 mb();
387} 387}
388 388
389static inline u32 t2_inl(unsigned long addr) 389extern inline u32 t2_inl(unsigned long addr)
390{ 390{
391 return *(vuip) ((addr << 5) + T2_IO + 0x18); 391 return *(vuip) ((addr << 5) + T2_IO + 0x18);
392} 392}
393 393
394static inline void t2_outl(u32 b, unsigned long addr) 394extern inline void t2_outl(u32 b, unsigned long addr)
395{ 395{
396 *(vuip) ((addr << 5) + T2_IO + 0x18) = b; 396 *(vuip) ((addr << 5) + T2_IO + 0x18) = b;
397 mb(); 397 mb();
@@ -435,7 +435,7 @@ static inline void t2_outl(u32 b, unsigned long addr)
435 set_hae(msb); \ 435 set_hae(msb); \
436} 436}
437 437
438static DEFINE_SPINLOCK(t2_hae_lock); 438extern spinlock_t t2_hae_lock;
439 439
440/* 440/*
441 * NOTE: take T2_DENSE_MEM off in each readX/writeX routine, since 441 * NOTE: take T2_DENSE_MEM off in each readX/writeX routine, since
diff --git a/include/asm-alpha/io.h b/include/asm-alpha/io.h
index 38f18cf18c9d..e971ab000f95 100644
--- a/include/asm-alpha/io.h
+++ b/include/asm-alpha/io.h
@@ -35,7 +35,7 @@
35 * register not being up-to-date with respect to the hardware 35 * register not being up-to-date with respect to the hardware
36 * value. 36 * value.
37 */ 37 */
38static inline void __set_hae(unsigned long new_hae) 38extern inline void __set_hae(unsigned long new_hae)
39{ 39{
40 unsigned long flags; 40 unsigned long flags;
41 local_irq_save(flags); 41 local_irq_save(flags);
@@ -49,7 +49,7 @@ static inline void __set_hae(unsigned long new_hae)
49 local_irq_restore(flags); 49 local_irq_restore(flags);
50} 50}
51 51
52static inline void set_hae(unsigned long new_hae) 52extern inline void set_hae(unsigned long new_hae)
53{ 53{
54 if (new_hae != alpha_mv.hae_cache) 54 if (new_hae != alpha_mv.hae_cache)
55 __set_hae(new_hae); 55 __set_hae(new_hae);
@@ -176,7 +176,7 @@ REMAP2(u64, writeq, volatile)
176#undef REMAP1 176#undef REMAP1
177#undef REMAP2 177#undef REMAP2
178 178
179static inline void __iomem *generic_ioportmap(unsigned long a) 179extern inline void __iomem *generic_ioportmap(unsigned long a)
180{ 180{
181 return alpha_mv.mv_ioportmap(a); 181 return alpha_mv.mv_ioportmap(a);
182} 182}
diff --git a/include/asm-alpha/mmu_context.h b/include/asm-alpha/mmu_context.h
index 6a5be1f7debf..86c08a02d239 100644
--- a/include/asm-alpha/mmu_context.h
+++ b/include/asm-alpha/mmu_context.h
@@ -23,7 +23,7 @@
23#endif 23#endif
24 24
25 25
26extern inline unsigned long 26static inline unsigned long
27__reload_thread(struct pcb_struct *pcb) 27__reload_thread(struct pcb_struct *pcb)
28{ 28{
29 register unsigned long a0 __asm__("$16"); 29 register unsigned long a0 __asm__("$16");
@@ -114,7 +114,7 @@ extern unsigned long last_asn;
114#define __MMU_EXTERN_INLINE 114#define __MMU_EXTERN_INLINE
115#endif 115#endif
116 116
117static inline unsigned long 117extern inline unsigned long
118__get_new_mm_context(struct mm_struct *mm, long cpu) 118__get_new_mm_context(struct mm_struct *mm, long cpu)
119{ 119{
120 unsigned long asn = cpu_last_asn(cpu); 120 unsigned long asn = cpu_last_asn(cpu);
@@ -226,7 +226,7 @@ ev4_activate_mm(struct mm_struct *prev_mm, struct mm_struct *next_mm)
226# endif 226# endif
227#endif 227#endif
228 228
229extern inline int 229static inline int
230init_new_context(struct task_struct *tsk, struct mm_struct *mm) 230init_new_context(struct task_struct *tsk, struct mm_struct *mm)
231{ 231{
232 int i; 232 int i;
diff --git a/include/asm-alpha/percpu.h b/include/asm-alpha/percpu.h
index 48348fe34c19..3495e8e00d70 100644
--- a/include/asm-alpha/percpu.h
+++ b/include/asm-alpha/percpu.h
@@ -1,6 +1,78 @@
1#ifndef __ALPHA_PERCPU_H 1#ifndef __ALPHA_PERCPU_H
2#define __ALPHA_PERCPU_H 2#define __ALPHA_PERCPU_H
3#include <linux/compiler.h>
4#include <linux/threads.h>
3 5
4#include <asm-generic/percpu.h> 6/*
7 * Determine the real variable name from the name visible in the
8 * kernel sources.
9 */
10#define per_cpu_var(var) per_cpu__##var
11
12#ifdef CONFIG_SMP
13
14/*
15 * per_cpu_offset() is the offset that has to be added to a
16 * percpu variable to get to the instance for a certain processor.
17 */
18extern unsigned long __per_cpu_offset[NR_CPUS];
19
20#define per_cpu_offset(x) (__per_cpu_offset[x])
21
22#define __my_cpu_offset per_cpu_offset(raw_smp_processor_id())
23#ifdef CONFIG_DEBUG_PREEMPT
24#define my_cpu_offset per_cpu_offset(smp_processor_id())
25#else
26#define my_cpu_offset __my_cpu_offset
27#endif
28
29#ifndef MODULE
30#define SHIFT_PERCPU_PTR(var, offset) RELOC_HIDE(&per_cpu_var(var), (offset))
31#define PER_CPU_ATTRIBUTES
32#else
33/*
34 * To calculate addresses of locally defined variables, GCC uses 32-bit
35 * displacement from the GP. Which doesn't work for per cpu variables in
36 * modules, as an offset to the kernel per cpu area is way above 4G.
37 *
38 * This forces allocation of a GOT entry for per cpu variable using
39 * ldq instruction with a 'literal' relocation.
40 */
41#define SHIFT_PERCPU_PTR(var, offset) ({ \
42 extern int simple_identifier_##var(void); \
43 unsigned long __ptr, tmp_gp; \
44 asm ( "br %1, 1f \n\
45 1: ldgp %1, 0(%1) \n\
46 ldq %0, per_cpu__" #var"(%1)\t!literal" \
47 : "=&r"(__ptr), "=&r"(tmp_gp)); \
48 (typeof(&per_cpu_var(var)))(__ptr + (offset)); })
49
50#define PER_CPU_ATTRIBUTES __used
51
52#endif /* MODULE */
53
54/*
55 * A percpu variable may point to a discarded regions. The following are
56 * established ways to produce a usable pointer from the percpu variable
57 * offset.
58 */
59#define per_cpu(var, cpu) \
60 (*SHIFT_PERCPU_PTR(var, per_cpu_offset(cpu)))
61#define __get_cpu_var(var) \
62 (*SHIFT_PERCPU_PTR(var, my_cpu_offset))
63#define __raw_get_cpu_var(var) \
64 (*SHIFT_PERCPU_PTR(var, __my_cpu_offset))
65
66#else /* ! SMP */
67
68#define per_cpu(var, cpu) (*((void)(cpu), &per_cpu_var(var)))
69#define __get_cpu_var(var) per_cpu_var(var)
70#define __raw_get_cpu_var(var) per_cpu_var(var)
71
72#define PER_CPU_ATTRIBUTES
73
74#endif /* SMP */
75
76#define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu_var(name)
5 77
6#endif /* __ALPHA_PERCPU_H */ 78#endif /* __ALPHA_PERCPU_H */
diff --git a/include/asm-alpha/system.h b/include/asm-alpha/system.h
index ed221d6408fc..afe20fa58c99 100644
--- a/include/asm-alpha/system.h
+++ b/include/asm-alpha/system.h
@@ -184,7 +184,7 @@ enum amask_enum {
184 __amask; }) 184 __amask; })
185 185
186#define __CALL_PAL_R0(NAME, TYPE) \ 186#define __CALL_PAL_R0(NAME, TYPE) \
187static inline TYPE NAME(void) \ 187extern inline TYPE NAME(void) \
188{ \ 188{ \
189 register TYPE __r0 __asm__("$0"); \ 189 register TYPE __r0 __asm__("$0"); \
190 __asm__ __volatile__( \ 190 __asm__ __volatile__( \
@@ -196,7 +196,7 @@ static inline TYPE NAME(void) \
196} 196}
197 197
198#define __CALL_PAL_W1(NAME, TYPE0) \ 198#define __CALL_PAL_W1(NAME, TYPE0) \
199static inline void NAME(TYPE0 arg0) \ 199extern inline void NAME(TYPE0 arg0) \
200{ \ 200{ \
201 register TYPE0 __r16 __asm__("$16") = arg0; \ 201 register TYPE0 __r16 __asm__("$16") = arg0; \
202 __asm__ __volatile__( \ 202 __asm__ __volatile__( \
@@ -207,7 +207,7 @@ static inline void NAME(TYPE0 arg0) \
207} 207}
208 208
209#define __CALL_PAL_W2(NAME, TYPE0, TYPE1) \ 209#define __CALL_PAL_W2(NAME, TYPE0, TYPE1) \
210static inline void NAME(TYPE0 arg0, TYPE1 arg1) \ 210extern inline void NAME(TYPE0 arg0, TYPE1 arg1) \
211{ \ 211{ \
212 register TYPE0 __r16 __asm__("$16") = arg0; \ 212 register TYPE0 __r16 __asm__("$16") = arg0; \
213 register TYPE1 __r17 __asm__("$17") = arg1; \ 213 register TYPE1 __r17 __asm__("$17") = arg1; \
@@ -219,7 +219,7 @@ static inline void NAME(TYPE0 arg0, TYPE1 arg1) \
219} 219}
220 220
221#define __CALL_PAL_RW1(NAME, RTYPE, TYPE0) \ 221#define __CALL_PAL_RW1(NAME, RTYPE, TYPE0) \
222static inline RTYPE NAME(TYPE0 arg0) \ 222extern inline RTYPE NAME(TYPE0 arg0) \
223{ \ 223{ \
224 register RTYPE __r0 __asm__("$0"); \ 224 register RTYPE __r0 __asm__("$0"); \
225 register TYPE0 __r16 __asm__("$16") = arg0; \ 225 register TYPE0 __r16 __asm__("$16") = arg0; \
@@ -232,7 +232,7 @@ static inline RTYPE NAME(TYPE0 arg0) \
232} 232}
233 233
234#define __CALL_PAL_RW2(NAME, RTYPE, TYPE0, TYPE1) \ 234#define __CALL_PAL_RW2(NAME, RTYPE, TYPE0, TYPE1) \
235static inline RTYPE NAME(TYPE0 arg0, TYPE1 arg1) \ 235extern inline RTYPE NAME(TYPE0 arg0, TYPE1 arg1) \
236{ \ 236{ \
237 register RTYPE __r0 __asm__("$0"); \ 237 register RTYPE __r0 __asm__("$0"); \
238 register TYPE0 __r16 __asm__("$16") = arg0; \ 238 register TYPE0 __r16 __asm__("$16") = arg0; \
diff --git a/include/asm-alpha/vga.h b/include/asm-alpha/vga.h
index e8df1e7aae6b..c00106bac521 100644
--- a/include/asm-alpha/vga.h
+++ b/include/asm-alpha/vga.h
@@ -13,7 +13,7 @@
13#define VT_BUF_HAVE_MEMSETW 13#define VT_BUF_HAVE_MEMSETW
14#define VT_BUF_HAVE_MEMCPYW 14#define VT_BUF_HAVE_MEMCPYW
15 15
16extern inline void scr_writew(u16 val, volatile u16 *addr) 16static inline void scr_writew(u16 val, volatile u16 *addr)
17{ 17{
18 if (__is_ioaddr(addr)) 18 if (__is_ioaddr(addr))
19 __raw_writew(val, (volatile u16 __iomem *) addr); 19 __raw_writew(val, (volatile u16 __iomem *) addr);
@@ -21,7 +21,7 @@ extern inline void scr_writew(u16 val, volatile u16 *addr)
21 *addr = val; 21 *addr = val;
22} 22}
23 23
24extern inline u16 scr_readw(volatile const u16 *addr) 24static inline u16 scr_readw(volatile const u16 *addr)
25{ 25{
26 if (__is_ioaddr(addr)) 26 if (__is_ioaddr(addr))
27 return __raw_readw((volatile const u16 __iomem *) addr); 27 return __raw_readw((volatile const u16 __iomem *) addr);
@@ -29,7 +29,7 @@ extern inline u16 scr_readw(volatile const u16 *addr)
29 return *addr; 29 return *addr;
30} 30}
31 31
32extern inline void scr_memsetw(u16 *s, u16 c, unsigned int count) 32static inline void scr_memsetw(u16 *s, u16 c, unsigned int count)
33{ 33{
34 if (__is_ioaddr(s)) 34 if (__is_ioaddr(s))
35 memsetw_io((u16 __iomem *) s, c, count); 35 memsetw_io((u16 __iomem *) s, c, count);
diff --git a/include/asm-blackfin/mach-bf527/bfin_serial_5xx.h b/include/asm-blackfin/mach-bf527/bfin_serial_5xx.h
index 96bd09e31e36..2526b6ed6faa 100644
--- a/include/asm-blackfin/mach-bf527/bfin_serial_5xx.h
+++ b/include/asm-blackfin/mach-bf527/bfin_serial_5xx.h
@@ -96,7 +96,7 @@ struct bfin_serial_port {
96 struct work_struct tx_dma_workqueue; 96 struct work_struct tx_dma_workqueue;
97#endif 97#endif
98#ifdef CONFIG_SERIAL_BFIN_CTSRTS 98#ifdef CONFIG_SERIAL_BFIN_CTSRTS
99 struct work_struct cts_workqueue; 99 struct timer_list cts_timer;
100 int cts_pin; 100 int cts_pin;
101 int rts_pin; 101 int rts_pin;
102#endif 102#endif
diff --git a/include/asm-blackfin/mach-bf533/bfin_serial_5xx.h b/include/asm-blackfin/mach-bf533/bfin_serial_5xx.h
index e924569ad1d8..ebf592b59aab 100644
--- a/include/asm-blackfin/mach-bf533/bfin_serial_5xx.h
+++ b/include/asm-blackfin/mach-bf533/bfin_serial_5xx.h
@@ -88,7 +88,7 @@ struct bfin_serial_port {
88# endif 88# endif
89#endif 89#endif
90#ifdef CONFIG_SERIAL_BFIN_CTSRTS 90#ifdef CONFIG_SERIAL_BFIN_CTSRTS
91 struct work_struct cts_workqueue; 91 struct timer_list cts_timer;
92 int cts_pin; 92 int cts_pin;
93 int rts_pin; 93 int rts_pin;
94#endif 94#endif
diff --git a/include/asm-blackfin/mach-bf537/bfin_serial_5xx.h b/include/asm-blackfin/mach-bf537/bfin_serial_5xx.h
index 41d7b6490bb1..1bf56ffa22f9 100644
--- a/include/asm-blackfin/mach-bf537/bfin_serial_5xx.h
+++ b/include/asm-blackfin/mach-bf537/bfin_serial_5xx.h
@@ -96,7 +96,7 @@ struct bfin_serial_port {
96 struct work_struct tx_dma_workqueue; 96 struct work_struct tx_dma_workqueue;
97#endif 97#endif
98#ifdef CONFIG_SERIAL_BFIN_CTSRTS 98#ifdef CONFIG_SERIAL_BFIN_CTSRTS
99 struct work_struct cts_workqueue; 99 struct timer_list cts_timer;
100 int cts_pin; 100 int cts_pin;
101 int rts_pin; 101 int rts_pin;
102#endif 102#endif
diff --git a/include/asm-blackfin/mach-bf548/bfin_serial_5xx.h b/include/asm-blackfin/mach-bf548/bfin_serial_5xx.h
index 59b4ad4e5b4a..5e29446a8e03 100644
--- a/include/asm-blackfin/mach-bf548/bfin_serial_5xx.h
+++ b/include/asm-blackfin/mach-bf548/bfin_serial_5xx.h
@@ -99,7 +99,7 @@ struct bfin_serial_port {
99 struct work_struct tx_dma_workqueue; 99 struct work_struct tx_dma_workqueue;
100#endif 100#endif
101#ifdef CONFIG_SERIAL_BFIN_CTSRTS 101#ifdef CONFIG_SERIAL_BFIN_CTSRTS
102 struct work_struct cts_workqueue; 102 struct timer_list cts_timer;
103 int cts_pin; 103 int cts_pin;
104 int rts_pin; 104 int rts_pin;
105#endif 105#endif
@@ -187,7 +187,7 @@ static void bfin_serial_hw_init(struct bfin_serial_port *uart)
187 187
188#ifdef CONFIG_BFIN_UART1_CTSRTS 188#ifdef CONFIG_BFIN_UART1_CTSRTS
189 peripheral_request(P_UART1_RTS, DRIVER_NAME); 189 peripheral_request(P_UART1_RTS, DRIVER_NAME);
190 peripheral_request(P_UART1_CTS DRIVER_NAME); 190 peripheral_request(P_UART1_CTS, DRIVER_NAME);
191#endif 191#endif
192#endif 192#endif
193 193
@@ -202,7 +202,7 @@ static void bfin_serial_hw_init(struct bfin_serial_port *uart)
202 202
203#ifdef CONFIG_BFIN_UART3_CTSRTS 203#ifdef CONFIG_BFIN_UART3_CTSRTS
204 peripheral_request(P_UART3_RTS, DRIVER_NAME); 204 peripheral_request(P_UART3_RTS, DRIVER_NAME);
205 peripheral_request(P_UART3_CTS DRIVER_NAME); 205 peripheral_request(P_UART3_CTS, DRIVER_NAME);
206#endif 206#endif
207#endif 207#endif
208 SSYNC(); 208 SSYNC();
diff --git a/include/asm-blackfin/mach-bf561/bfin_serial_5xx.h b/include/asm-blackfin/mach-bf561/bfin_serial_5xx.h
index 30d90b580f18..8aa02780e642 100644
--- a/include/asm-blackfin/mach-bf561/bfin_serial_5xx.h
+++ b/include/asm-blackfin/mach-bf561/bfin_serial_5xx.h
@@ -88,7 +88,7 @@ struct bfin_serial_port {
88# endif 88# endif
89#endif 89#endif
90#ifdef CONFIG_SERIAL_BFIN_CTSRTS 90#ifdef CONFIG_SERIAL_BFIN_CTSRTS
91 struct work_struct cts_workqueue; 91 struct timer_list cts_timer;
92 int cts_pin; 92 int cts_pin;
93 int rts_pin; 93 int rts_pin;
94#endif 94#endif
diff --git a/include/asm-generic/Kbuild.asm b/include/asm-generic/Kbuild.asm
index 92a6d91d0c1a..7cd25b8e7c9a 100644
--- a/include/asm-generic/Kbuild.asm
+++ b/include/asm-generic/Kbuild.asm
@@ -1,6 +1,6 @@
1header-y += kvm.h 1header-y += kvm.h
2 2
3ifeq ($(wildcard include/asm-$(SRCARCH)/a.out.h),include/asm-$(SRCARCH)/a.out.h) 3ifneq ($(wildcard $(srctree)/include/asm-$(SRCARCH)/a.out.h),)
4unifdef-y += a.out.h 4unifdef-y += a.out.h
5endif 5endif
6unifdef-y += auxvec.h 6unifdef-y += auxvec.h
diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h
index 85fd0aa27a8c..4ec0a296bdec 100644
--- a/include/asm-generic/atomic.h
+++ b/include/asm-generic/atomic.h
@@ -2,7 +2,7 @@
2#define _ASM_GENERIC_ATOMIC_H 2#define _ASM_GENERIC_ATOMIC_H
3/* 3/*
4 * Copyright (C) 2005 Silicon Graphics, Inc. 4 * Copyright (C) 2005 Silicon Graphics, Inc.
5 * Christoph Lameter <clameter@sgi.com> 5 * Christoph Lameter
6 * 6 *
7 * Allows to provide arch independent atomic definitions without the need to 7 * Allows to provide arch independent atomic definitions without the need to
8 * edit all arch specific atomic.h files. 8 * edit all arch specific atomic.h files.
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
index 44ef329531c3..4fce3db2cecc 100644
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -197,6 +197,63 @@ static inline int pmd_none_or_clear_bad(pmd_t *pmd)
197} 197}
198#endif /* CONFIG_MMU */ 198#endif /* CONFIG_MMU */
199 199
200static inline pte_t __ptep_modify_prot_start(struct mm_struct *mm,
201 unsigned long addr,
202 pte_t *ptep)
203{
204 /*
205 * Get the current pte state, but zero it out to make it
206 * non-present, preventing the hardware from asynchronously
207 * updating it.
208 */
209 return ptep_get_and_clear(mm, addr, ptep);
210}
211
212static inline void __ptep_modify_prot_commit(struct mm_struct *mm,
213 unsigned long addr,
214 pte_t *ptep, pte_t pte)
215{
216 /*
217 * The pte is non-present, so there's no hardware state to
218 * preserve.
219 */
220 set_pte_at(mm, addr, ptep, pte);
221}
222
223#ifndef __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION
224/*
225 * Start a pte protection read-modify-write transaction, which
226 * protects against asynchronous hardware modifications to the pte.
227 * The intention is not to prevent the hardware from making pte
228 * updates, but to prevent any updates it may make from being lost.
229 *
230 * This does not protect against other software modifications of the
231 * pte; the appropriate pte lock must be held over the transation.
232 *
233 * Note that this interface is intended to be batchable, meaning that
234 * ptep_modify_prot_commit may not actually update the pte, but merely
235 * queue the update to be done at some later time. The update must be
236 * actually committed before the pte lock is released, however.
237 */
238static inline pte_t ptep_modify_prot_start(struct mm_struct *mm,
239 unsigned long addr,
240 pte_t *ptep)
241{
242 return __ptep_modify_prot_start(mm, addr, ptep);
243}
244
245/*
246 * Commit an update to a pte, leaving any hardware-controlled bits in
247 * the PTE unmodified.
248 */
249static inline void ptep_modify_prot_commit(struct mm_struct *mm,
250 unsigned long addr,
251 pte_t *ptep, pte_t pte)
252{
253 __ptep_modify_prot_commit(mm, addr, ptep, pte);
254}
255#endif /* __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION */
256
200/* 257/*
201 * A facility to provide lazy MMU batching. This allows PTE updates and 258 * A facility to provide lazy MMU batching. This allows PTE updates and
202 * page invalidations to be delayed until a call to leave lazy MMU mode 259 * page invalidations to be delayed until a call to leave lazy MMU mode
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index f054778e916c..f1992dc5c424 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -93,6 +93,8 @@
93 VMLINUX_SYMBOL(__end_rio_route_ops) = .; \ 93 VMLINUX_SYMBOL(__end_rio_route_ops) = .; \
94 } \ 94 } \
95 \ 95 \
96 TRACEDATA \
97 \
96 /* Kernel symbol table: Normal symbols */ \ 98 /* Kernel symbol table: Normal symbols */ \
97 __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \ 99 __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
98 VMLINUX_SYMBOL(__start___ksymtab) = .; \ 100 VMLINUX_SYMBOL(__start___ksymtab) = .; \
@@ -318,6 +320,18 @@
318 __stop___bug_table = .; \ 320 __stop___bug_table = .; \
319 } 321 }
320 322
323#ifdef CONFIG_PM_TRACE
324#define TRACEDATA \
325 . = ALIGN(4); \
326 .tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) { \
327 __tracedata_start = .; \
328 *(.tracedata) \
329 __tracedata_end = .; \
330 }
331#else
332#define TRACEDATA
333#endif
334
321#define NOTES \ 335#define NOTES \
322 .notes : AT(ADDR(.notes) - LOAD_OFFSET) { \ 336 .notes : AT(ADDR(.notes) - LOAD_OFFSET) { \
323 VMLINUX_SYMBOL(__start_notes) = .; \ 337 VMLINUX_SYMBOL(__start_notes) = .; \
diff --git a/include/asm-ia64/sn/simulator.h b/include/asm-ia64/sn/simulator.h
index c3fd3eb25768..c2611f6cfe33 100644
--- a/include/asm-ia64/sn/simulator.h
+++ b/include/asm-ia64/sn/simulator.h
@@ -8,7 +8,7 @@
8#ifndef _ASM_IA64_SN_SIMULATOR_H 8#ifndef _ASM_IA64_SN_SIMULATOR_H
9#define _ASM_IA64_SN_SIMULATOR_H 9#define _ASM_IA64_SN_SIMULATOR_H
10 10
11 11#if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_SGI_SN2) || defined(CONFIG_IA64_SGI_UV)
12#define SNMAGIC 0xaeeeeeee8badbeefL 12#define SNMAGIC 0xaeeeeeee8badbeefL
13#define IS_MEDUSA() ({long sn; asm("mov %0=cpuid[%1]" : "=r"(sn) : "r"(2)); sn == SNMAGIC;}) 13#define IS_MEDUSA() ({long sn; asm("mov %0=cpuid[%1]" : "=r"(sn) : "r"(2)); sn == SNMAGIC;})
14 14
@@ -16,5 +16,10 @@
16#define IS_RUNNING_ON_SIMULATOR() (sn_prom_type) 16#define IS_RUNNING_ON_SIMULATOR() (sn_prom_type)
17#define IS_RUNNING_ON_FAKE_PROM() (sn_prom_type == 2) 17#define IS_RUNNING_ON_FAKE_PROM() (sn_prom_type == 2)
18extern int sn_prom_type; /* 0=hardware, 1=medusa/realprom, 2=medusa/fakeprom */ 18extern int sn_prom_type; /* 0=hardware, 1=medusa/realprom, 2=medusa/fakeprom */
19#else
20#define IS_MEDUSA() 0
21#define SIMULATOR_SLEEP()
22#define IS_RUNNING_ON_SIMULATOR() 0
23#endif
19 24
20#endif /* _ASM_IA64_SN_SIMULATOR_H */ 25#endif /* _ASM_IA64_SN_SIMULATOR_H */
diff --git a/include/asm-mips/atomic.h b/include/asm-mips/atomic.h
index a798d6299a79..1232be3885b0 100644
--- a/include/asm-mips/atomic.h
+++ b/include/asm-mips/atomic.h
@@ -283,10 +283,10 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
283 " beqz %0, 2f \n" 283 " beqz %0, 2f \n"
284 " subu %0, %1, %3 \n" 284 " subu %0, %1, %3 \n"
285 " .set reorder \n" 285 " .set reorder \n"
286 "1: \n"
287 " .subsection 2 \n" 286 " .subsection 2 \n"
288 "2: b 1b \n" 287 "2: b 1b \n"
289 " .previous \n" 288 " .previous \n"
289 "1: \n"
290 " .set mips0 \n" 290 " .set mips0 \n"
291 : "=&r" (result), "=&r" (temp), "=m" (v->counter) 291 : "=&r" (result), "=&r" (temp), "=m" (v->counter)
292 : "Ir" (i), "m" (v->counter) 292 : "Ir" (i), "m" (v->counter)
@@ -664,10 +664,10 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
664 " beqz %0, 2f \n" 664 " beqz %0, 2f \n"
665 " dsubu %0, %1, %3 \n" 665 " dsubu %0, %1, %3 \n"
666 " .set reorder \n" 666 " .set reorder \n"
667 "1: \n"
668 " .subsection 2 \n" 667 " .subsection 2 \n"
669 "2: b 1b \n" 668 "2: b 1b \n"
670 " .previous \n" 669 " .previous \n"
670 "1: \n"
671 " .set mips0 \n" 671 " .set mips0 \n"
672 : "=&r" (result), "=&r" (temp), "=m" (v->counter) 672 : "=&r" (result), "=&r" (temp), "=m" (v->counter)
673 : "Ir" (i), "m" (v->counter) 673 : "Ir" (i), "m" (v->counter)
diff --git a/include/asm-mips/cpu-info.h b/include/asm-mips/cpu-info.h
index 0c5a358863f3..2de73dbb2e9e 100644
--- a/include/asm-mips/cpu-info.h
+++ b/include/asm-mips/cpu-info.h
@@ -56,7 +56,7 @@ struct cpuinfo_mips {
56 struct cache_desc tcache; /* Tertiary/split secondary cache */ 56 struct cache_desc tcache; /* Tertiary/split secondary cache */
57 int srsets; /* Shadow register sets */ 57 int srsets; /* Shadow register sets */
58 int core; /* physical core number */ 58 int core; /* physical core number */
59#if defined(CONFIG_MIPS_MT_SMTC) 59#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_MIPS_MT_SMTC)
60 /* 60 /*
61 * In the MIPS MT "SMTC" model, each TC is considered 61 * In the MIPS MT "SMTC" model, each TC is considered
62 * to be a "CPU" for the purposes of scheduling, but 62 * to be a "CPU" for the purposes of scheduling, but
@@ -64,7 +64,7 @@ struct cpuinfo_mips {
64 * to all TCs within the same VPE. 64 * to all TCs within the same VPE.
65 */ 65 */
66 int vpe_id; /* Virtual Processor number */ 66 int vpe_id; /* Virtual Processor number */
67#endif /* CONFIG_MIPS_MT */ 67#endif
68#ifdef CONFIG_MIPS_MT_SMTC 68#ifdef CONFIG_MIPS_MT_SMTC
69 int tc_id; /* Thread Context number */ 69 int tc_id; /* Thread Context number */
70#endif 70#endif
diff --git a/include/asm-mips/gic.h b/include/asm-mips/gic.h
index 3a492f225f00..954807d9d66a 100644
--- a/include/asm-mips/gic.h
+++ b/include/asm-mips/gic.h
@@ -24,8 +24,8 @@
24 24
25#define MSK(n) ((1 << (n)) - 1) 25#define MSK(n) ((1 << (n)) - 1)
26#define REG32(addr) (*(volatile unsigned int *) (addr)) 26#define REG32(addr) (*(volatile unsigned int *) (addr))
27#define REG(base, offs) REG32((unsigned int)(base) + offs##_##OFS) 27#define REG(base, offs) REG32((unsigned long)(base) + offs##_##OFS)
28#define REGP(base, phys) REG32((unsigned int)(base) + (phys)) 28#define REGP(base, phys) REG32((unsigned long)(base) + (phys))
29 29
30/* Accessors */ 30/* Accessors */
31#define GIC_REG(segment, offset) \ 31#define GIC_REG(segment, offset) \
diff --git a/include/asm-mips/lasat/serial.h b/include/asm-mips/lasat/serial.h
index bafe68b10614..1c37d70579b8 100644
--- a/include/asm-mips/lasat/serial.h
+++ b/include/asm-mips/lasat/serial.h
@@ -4,10 +4,10 @@
4#define LASAT_BASE_BAUD_100 (7372800 / 16) 4#define LASAT_BASE_BAUD_100 (7372800 / 16)
5#define LASAT_UART_REGS_BASE_100 0x1c8b0000 5#define LASAT_UART_REGS_BASE_100 0x1c8b0000
6#define LASAT_UART_REGS_SHIFT_100 2 6#define LASAT_UART_REGS_SHIFT_100 2
7#define LASATINT_UART_100 8 7#define LASATINT_UART_100 16
8 8
9/* * LASAT 200 boards serial configuration */ 9/* * LASAT 200 boards serial configuration */
10#define LASAT_BASE_BAUD_200 (100000000 / 16 / 12) 10#define LASAT_BASE_BAUD_200 (100000000 / 16 / 12)
11#define LASAT_UART_REGS_BASE_200 (Vrc5074_PHYS_BASE + 0x0300) 11#define LASAT_UART_REGS_BASE_200 (Vrc5074_PHYS_BASE + 0x0300)
12#define LASAT_UART_REGS_SHIFT_200 3 12#define LASAT_UART_REGS_SHIFT_200 3
13#define LASATINT_UART_200 13 13#define LASATINT_UART_200 21
diff --git a/include/asm-mips/mach-au1x00/au1000.h b/include/asm-mips/mach-au1x00/au1000.h
index 1b5064dac007..0d302bad4492 100644
--- a/include/asm-mips/mach-au1x00/au1000.h
+++ b/include/asm-mips/mach-au1x00/au1000.h
@@ -615,6 +615,7 @@ enum soc_au1500_ints {
615 AU1000_RTC_MATCH1_INT, 615 AU1000_RTC_MATCH1_INT,
616 AU1000_RTC_MATCH2_INT, 616 AU1000_RTC_MATCH2_INT,
617 AU1500_PCI_ERR_INT, 617 AU1500_PCI_ERR_INT,
618 AU1500_RESERVED_INT,
618 AU1000_USB_DEV_REQ_INT, 619 AU1000_USB_DEV_REQ_INT,
619 AU1000_USB_DEV_SUS_INT, 620 AU1000_USB_DEV_SUS_INT,
620 AU1000_USB_HOST_INT, 621 AU1000_USB_HOST_INT,
diff --git a/include/asm-mips/pgtable-bits.h b/include/asm-mips/pgtable-bits.h
index 60e2f9338fcd..51b34a48c84a 100644
--- a/include/asm-mips/pgtable-bits.h
+++ b/include/asm-mips/pgtable-bits.h
@@ -134,6 +134,4 @@
134 134
135#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_MODIFIED | _CACHE_MASK) 135#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_MODIFIED | _CACHE_MASK)
136 136
137#define CONF_CM_DEFAULT (PAGE_CACHABLE_DEFAULT>>_CACHE_SHIFT)
138
139#endif /* _ASM_PGTABLE_BITS_H */ 137#endif /* _ASM_PGTABLE_BITS_H */
diff --git a/include/asm-powerpc/Kbuild b/include/asm-powerpc/Kbuild
index 7381916dfcbb..bca352e033c3 100644
--- a/include/asm-powerpc/Kbuild
+++ b/include/asm-powerpc/Kbuild
@@ -1,6 +1,5 @@
1include include/asm-generic/Kbuild.asm 1include include/asm-generic/Kbuild.asm
2 2
3header-y += a.out.h
4header-y += auxvec.h 3header-y += auxvec.h
5header-y += ioctls.h 4header-y += ioctls.h
6header-y += mman.h 5header-y += mman.h
diff --git a/include/asm-powerpc/mediabay.h b/include/asm-powerpc/mediabay.h
index df111c362a7f..b2efb3325808 100644
--- a/include/asm-powerpc/mediabay.h
+++ b/include/asm-powerpc/mediabay.h
@@ -17,8 +17,6 @@
17#define MB_POWER 6 /* media bay contains a Power device (???) */ 17#define MB_POWER 6 /* media bay contains a Power device (???) */
18#define MB_NO 7 /* media bay contains nothing */ 18#define MB_NO 7 /* media bay contains nothing */
19 19
20int check_media_bay(struct device_node *which_bay, int what);
21
22/* Number of bays in the machine or 0 */ 20/* Number of bays in the machine or 0 */
23extern int media_bay_count; 21extern int media_bay_count;
24 22
@@ -29,6 +27,16 @@ int check_media_bay_by_base(unsigned long base, int what);
29/* called by IDE PMAC host driver to register IDE controller for media bay */ 27/* called by IDE PMAC host driver to register IDE controller for media bay */
30int media_bay_set_ide_infos(struct device_node *which_bay, unsigned long base, 28int media_bay_set_ide_infos(struct device_node *which_bay, unsigned long base,
31 int irq, ide_hwif_t *hwif); 29 int irq, ide_hwif_t *hwif);
30
31int check_media_bay(struct device_node *which_bay, int what);
32
33#else
34
35static inline int check_media_bay(struct device_node *which_bay, int what)
36{
37 return -ENODEV;
38}
39
32#endif 40#endif
33 41
34#endif /* __KERNEL__ */ 42#endif /* __KERNEL__ */
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h
index 6abead6e681a..99348c1f4cab 100644
--- a/include/asm-powerpc/spu.h
+++ b/include/asm-powerpc/spu.h
@@ -131,7 +131,6 @@ struct spu {
131 u64 flags; 131 u64 flags;
132 u64 class_0_pending; 132 u64 class_0_pending;
133 u64 class_0_dar; 133 u64 class_0_dar;
134 u64 class_0_dsisr;
135 u64 class_1_dar; 134 u64 class_1_dar;
136 u64 class_1_dsisr; 135 u64 class_1_dsisr;
137 size_t ls_size; 136 size_t ls_size;
diff --git a/include/asm-powerpc/spu_csa.h b/include/asm-powerpc/spu_csa.h
index 129ec148d451..a40fd491250c 100644
--- a/include/asm-powerpc/spu_csa.h
+++ b/include/asm-powerpc/spu_csa.h
@@ -254,7 +254,7 @@ struct spu_state {
254 u64 spu_chnldata_RW[32]; 254 u64 spu_chnldata_RW[32];
255 u32 spu_mailbox_data[4]; 255 u32 spu_mailbox_data[4];
256 u32 pu_mailbox_data[1]; 256 u32 pu_mailbox_data[1];
257 u64 class_0_dar, class_0_dsisr, class_0_pending; 257 u64 class_0_dar, class_0_pending;
258 u64 class_1_dar, class_1_dsisr; 258 u64 class_1_dar, class_1_dsisr;
259 unsigned long suspend_time; 259 unsigned long suspend_time;
260 spinlock_t register_lock; 260 spinlock_t register_lock;
diff --git a/include/asm-powerpc/system.h b/include/asm-powerpc/system.h
index 2b6559a6d113..5235f875b932 100644
--- a/include/asm-powerpc/system.h
+++ b/include/asm-powerpc/system.h
@@ -34,7 +34,7 @@
34 * SMP since it is only used to order updates to system memory. 34 * SMP since it is only used to order updates to system memory.
35 */ 35 */
36#define mb() __asm__ __volatile__ ("sync" : : : "memory") 36#define mb() __asm__ __volatile__ ("sync" : : : "memory")
37#define rmb() __asm__ __volatile__ (__stringify(LWSYNC) : : : "memory") 37#define rmb() __asm__ __volatile__ ("sync" : : : "memory")
38#define wmb() __asm__ __volatile__ ("sync" : : : "memory") 38#define wmb() __asm__ __volatile__ ("sync" : : : "memory")
39#define read_barrier_depends() do { } while(0) 39#define read_barrier_depends() do { } while(0)
40 40
diff --git a/include/asm-x86/apic.h b/include/asm-x86/apic.h
index be9639a9a186..313bcaf4b6c3 100644
--- a/include/asm-x86/apic.h
+++ b/include/asm-x86/apic.h
@@ -36,14 +36,10 @@ extern void generic_apic_probe(void);
36#ifdef CONFIG_X86_LOCAL_APIC 36#ifdef CONFIG_X86_LOCAL_APIC
37 37
38extern int apic_verbosity; 38extern int apic_verbosity;
39extern int timer_over_8254;
40extern int local_apic_timer_c2_ok; 39extern int local_apic_timer_c2_ok;
41extern int local_apic_timer_disabled;
42 40
43extern int apic_runs_main_timer;
44extern int ioapic_force; 41extern int ioapic_force;
45extern int disable_apic; 42extern int disable_apic;
46extern int disable_apic_timer;
47 43
48/* 44/*
49 * Basic functions accessing APICs. 45 * Basic functions accessing APICs.
diff --git a/include/asm-x86/asm.h b/include/asm-x86/asm.h
index 90dec0c23646..70939820c55f 100644
--- a/include/asm-x86/asm.h
+++ b/include/asm-x86/asm.h
@@ -1,33 +1,29 @@
1#ifndef _ASM_X86_ASM_H 1#ifndef _ASM_X86_ASM_H
2#define _ASM_X86_ASM_H 2#define _ASM_X86_ASM_H
3 3
4#ifdef CONFIG_X86_32 4#ifdef __ASSEMBLY__
5/* 32 bits */ 5# define __ASM_FORM(x) x
6 6#else
7# define _ASM_PTR " .long " 7# define __ASM_FORM(x) " " #x " "
8# define _ASM_ALIGN " .balign 4 " 8#endif
9# define _ASM_MOV_UL " movl "
10
11# define _ASM_INC " incl "
12# define _ASM_DEC " decl "
13# define _ASM_ADD " addl "
14# define _ASM_SUB " subl "
15# define _ASM_XADD " xaddl "
16 9
10#ifdef CONFIG_X86_32
11# define __ASM_SEL(a,b) __ASM_FORM(a)
17#else 12#else
18/* 64 bits */ 13# define __ASM_SEL(a,b) __ASM_FORM(b)
14#endif
19 15
20# define _ASM_PTR " .quad " 16#define __ASM_SIZE(inst) __ASM_SEL(inst##l, inst##q)
21# define _ASM_ALIGN " .balign 8 "
22# define _ASM_MOV_UL " movq "
23 17
24# define _ASM_INC " incq " 18#define _ASM_PTR __ASM_SEL(.long, .quad)
25# define _ASM_DEC " decq " 19#define _ASM_ALIGN __ASM_SEL(.balign 4, .balign 8)
26# define _ASM_ADD " addq " 20#define _ASM_MOV_UL __ASM_SIZE(mov)
27# define _ASM_SUB " subq "
28# define _ASM_XADD " xaddq "
29 21
30#endif /* CONFIG_X86_32 */ 22#define _ASM_INC __ASM_SIZE(inc)
23#define _ASM_DEC __ASM_SIZE(dec)
24#define _ASM_ADD __ASM_SIZE(add)
25#define _ASM_SUB __ASM_SIZE(sub)
26#define _ASM_XADD __ASM_SIZE(xadd)
31 27
32/* Exception table entry */ 28/* Exception table entry */
33# define _ASM_EXTABLE(from,to) \ 29# define _ASM_EXTABLE(from,to) \
diff --git a/include/asm-x86/atomic_64.h b/include/asm-x86/atomic_64.h
index 3e0cd7d38335..fe589c153db8 100644
--- a/include/asm-x86/atomic_64.h
+++ b/include/asm-x86/atomic_64.h
@@ -11,12 +11,6 @@
11 * resource counting etc.. 11 * resource counting etc..
12 */ 12 */
13 13
14#ifdef CONFIG_SMP
15#define LOCK "lock ; "
16#else
17#define LOCK ""
18#endif
19
20/* 14/*
21 * Make sure gcc doesn't try to be clever and move things around 15 * Make sure gcc doesn't try to be clever and move things around
22 * on us. We need to use _exactly_ the address the user gave us, 16 * on us. We need to use _exactly_ the address the user gave us,
diff --git a/include/asm-x86/bitops.h b/include/asm-x86/bitops.h
index ee4b3ead6a43..96b1829cea15 100644
--- a/include/asm-x86/bitops.h
+++ b/include/asm-x86/bitops.h
@@ -23,11 +23,21 @@
23#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) 23#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
24/* Technically wrong, but this avoids compilation errors on some gcc 24/* Technically wrong, but this avoids compilation errors on some gcc
25 versions. */ 25 versions. */
26#define ADDR "=m" (*(volatile long *) addr) 26#define BITOP_ADDR(x) "=m" (*(volatile long *) (x))
27#else 27#else
28#define ADDR "+m" (*(volatile long *) addr) 28#define BITOP_ADDR(x) "+m" (*(volatile long *) (x))
29#endif 29#endif
30 30
31#define ADDR BITOP_ADDR(addr)
32
33/*
34 * We do the locked ops that don't return the old value as
35 * a mask operation on a byte.
36 */
37#define IS_IMMEDIATE(nr) (__builtin_constant_p(nr))
38#define CONST_MASK_ADDR(nr, addr) BITOP_ADDR((void *)(addr) + ((nr)>>3))
39#define CONST_MASK(nr) (1 << ((nr) & 7))
40
31/** 41/**
32 * set_bit - Atomically set a bit in memory 42 * set_bit - Atomically set a bit in memory
33 * @nr: the bit to set 43 * @nr: the bit to set
@@ -43,9 +53,17 @@
43 * Note that @nr may be almost arbitrarily large; this function is not 53 * Note that @nr may be almost arbitrarily large; this function is not
44 * restricted to acting on a single-word quantity. 54 * restricted to acting on a single-word quantity.
45 */ 55 */
46static inline void set_bit(int nr, volatile void *addr) 56static inline void set_bit(unsigned int nr, volatile unsigned long *addr)
47{ 57{
48 asm volatile(LOCK_PREFIX "bts %1,%0" : ADDR : "Ir" (nr) : "memory"); 58 if (IS_IMMEDIATE(nr)) {
59 asm volatile(LOCK_PREFIX "orb %1,%0"
60 : CONST_MASK_ADDR(nr, addr)
61 : "iq" ((u8)CONST_MASK(nr))
62 : "memory");
63 } else {
64 asm volatile(LOCK_PREFIX "bts %1,%0"
65 : BITOP_ADDR(addr) : "Ir" (nr) : "memory");
66 }
49} 67}
50 68
51/** 69/**
@@ -57,7 +75,7 @@ static inline void set_bit(int nr, volatile void *addr)
57 * If it's called on the same region of memory simultaneously, the effect 75 * If it's called on the same region of memory simultaneously, the effect
58 * may be that only one operation succeeds. 76 * may be that only one operation succeeds.
59 */ 77 */
60static inline void __set_bit(int nr, volatile void *addr) 78static inline void __set_bit(int nr, volatile unsigned long *addr)
61{ 79{
62 asm volatile("bts %1,%0" : ADDR : "Ir" (nr) : "memory"); 80 asm volatile("bts %1,%0" : ADDR : "Ir" (nr) : "memory");
63} 81}
@@ -72,9 +90,17 @@ static inline void __set_bit(int nr, volatile void *addr)
72 * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit() 90 * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit()
73 * in order to ensure changes are visible on other processors. 91 * in order to ensure changes are visible on other processors.
74 */ 92 */
75static inline void clear_bit(int nr, volatile void *addr) 93static inline void clear_bit(int nr, volatile unsigned long *addr)
76{ 94{
77 asm volatile(LOCK_PREFIX "btr %1,%0" : ADDR : "Ir" (nr)); 95 if (IS_IMMEDIATE(nr)) {
96 asm volatile(LOCK_PREFIX "andb %1,%0"
97 : CONST_MASK_ADDR(nr, addr)
98 : "iq" ((u8)~CONST_MASK(nr)));
99 } else {
100 asm volatile(LOCK_PREFIX "btr %1,%0"
101 : BITOP_ADDR(addr)
102 : "Ir" (nr));
103 }
78} 104}
79 105
80/* 106/*
@@ -85,13 +111,13 @@ static inline void clear_bit(int nr, volatile void *addr)
85 * clear_bit() is atomic and implies release semantics before the memory 111 * clear_bit() is atomic and implies release semantics before the memory
86 * operation. It can be used for an unlock. 112 * operation. It can be used for an unlock.
87 */ 113 */
88static inline void clear_bit_unlock(unsigned nr, volatile void *addr) 114static inline void clear_bit_unlock(unsigned nr, volatile unsigned long *addr)
89{ 115{
90 barrier(); 116 barrier();
91 clear_bit(nr, addr); 117 clear_bit(nr, addr);
92} 118}
93 119
94static inline void __clear_bit(int nr, volatile void *addr) 120static inline void __clear_bit(int nr, volatile unsigned long *addr)
95{ 121{
96 asm volatile("btr %1,%0" : ADDR : "Ir" (nr)); 122 asm volatile("btr %1,%0" : ADDR : "Ir" (nr));
97} 123}
@@ -108,7 +134,7 @@ static inline void __clear_bit(int nr, volatile void *addr)
108 * No memory barrier is required here, because x86 cannot reorder stores past 134 * No memory barrier is required here, because x86 cannot reorder stores past
109 * older loads. Same principle as spin_unlock. 135 * older loads. Same principle as spin_unlock.
110 */ 136 */
111static inline void __clear_bit_unlock(unsigned nr, volatile void *addr) 137static inline void __clear_bit_unlock(unsigned nr, volatile unsigned long *addr)
112{ 138{
113 barrier(); 139 barrier();
114 __clear_bit(nr, addr); 140 __clear_bit(nr, addr);
@@ -126,7 +152,7 @@ static inline void __clear_bit_unlock(unsigned nr, volatile void *addr)
126 * If it's called on the same region of memory simultaneously, the effect 152 * If it's called on the same region of memory simultaneously, the effect
127 * may be that only one operation succeeds. 153 * may be that only one operation succeeds.
128 */ 154 */
129static inline void __change_bit(int nr, volatile void *addr) 155static inline void __change_bit(int nr, volatile unsigned long *addr)
130{ 156{
131 asm volatile("btc %1,%0" : ADDR : "Ir" (nr)); 157 asm volatile("btc %1,%0" : ADDR : "Ir" (nr));
132} 158}
@@ -140,7 +166,7 @@ static inline void __change_bit(int nr, volatile void *addr)
140 * Note that @nr may be almost arbitrarily large; this function is not 166 * Note that @nr may be almost arbitrarily large; this function is not
141 * restricted to acting on a single-word quantity. 167 * restricted to acting on a single-word quantity.
142 */ 168 */
143static inline void change_bit(int nr, volatile void *addr) 169static inline void change_bit(int nr, volatile unsigned long *addr)
144{ 170{
145 asm volatile(LOCK_PREFIX "btc %1,%0" : ADDR : "Ir" (nr)); 171 asm volatile(LOCK_PREFIX "btc %1,%0" : ADDR : "Ir" (nr));
146} 172}
@@ -153,7 +179,7 @@ static inline void change_bit(int nr, volatile void *addr)
153 * This operation is atomic and cannot be reordered. 179 * This operation is atomic and cannot be reordered.
154 * It also implies a memory barrier. 180 * It also implies a memory barrier.
155 */ 181 */
156static inline int test_and_set_bit(int nr, volatile void *addr) 182static inline int test_and_set_bit(int nr, volatile unsigned long *addr)
157{ 183{
158 int oldbit; 184 int oldbit;
159 185
@@ -170,7 +196,7 @@ static inline int test_and_set_bit(int nr, volatile void *addr)
170 * 196 *
171 * This is the same as test_and_set_bit on x86. 197 * This is the same as test_and_set_bit on x86.
172 */ 198 */
173static inline int test_and_set_bit_lock(int nr, volatile void *addr) 199static inline int test_and_set_bit_lock(int nr, volatile unsigned long *addr)
174{ 200{
175 return test_and_set_bit(nr, addr); 201 return test_and_set_bit(nr, addr);
176} 202}
@@ -184,7 +210,7 @@ static inline int test_and_set_bit_lock(int nr, volatile void *addr)
184 * If two examples of this operation race, one can appear to succeed 210 * If two examples of this operation race, one can appear to succeed
185 * but actually fail. You must protect multiple accesses with a lock. 211 * but actually fail. You must protect multiple accesses with a lock.
186 */ 212 */
187static inline int __test_and_set_bit(int nr, volatile void *addr) 213static inline int __test_and_set_bit(int nr, volatile unsigned long *addr)
188{ 214{
189 int oldbit; 215 int oldbit;
190 216
@@ -203,7 +229,7 @@ static inline int __test_and_set_bit(int nr, volatile void *addr)
203 * This operation is atomic and cannot be reordered. 229 * This operation is atomic and cannot be reordered.
204 * It also implies a memory barrier. 230 * It also implies a memory barrier.
205 */ 231 */
206static inline int test_and_clear_bit(int nr, volatile void *addr) 232static inline int test_and_clear_bit(int nr, volatile unsigned long *addr)
207{ 233{
208 int oldbit; 234 int oldbit;
209 235
@@ -223,7 +249,7 @@ static inline int test_and_clear_bit(int nr, volatile void *addr)
223 * If two examples of this operation race, one can appear to succeed 249 * If two examples of this operation race, one can appear to succeed
224 * but actually fail. You must protect multiple accesses with a lock. 250 * but actually fail. You must protect multiple accesses with a lock.
225 */ 251 */
226static inline int __test_and_clear_bit(int nr, volatile void *addr) 252static inline int __test_and_clear_bit(int nr, volatile unsigned long *addr)
227{ 253{
228 int oldbit; 254 int oldbit;
229 255
@@ -235,7 +261,7 @@ static inline int __test_and_clear_bit(int nr, volatile void *addr)
235} 261}
236 262
237/* WARNING: non atomic and it can be reordered! */ 263/* WARNING: non atomic and it can be reordered! */
238static inline int __test_and_change_bit(int nr, volatile void *addr) 264static inline int __test_and_change_bit(int nr, volatile unsigned long *addr)
239{ 265{
240 int oldbit; 266 int oldbit;
241 267
@@ -255,7 +281,7 @@ static inline int __test_and_change_bit(int nr, volatile void *addr)
255 * This operation is atomic and cannot be reordered. 281 * This operation is atomic and cannot be reordered.
256 * It also implies a memory barrier. 282 * It also implies a memory barrier.
257 */ 283 */
258static inline int test_and_change_bit(int nr, volatile void *addr) 284static inline int test_and_change_bit(int nr, volatile unsigned long *addr)
259{ 285{
260 int oldbit; 286 int oldbit;
261 287
@@ -266,13 +292,13 @@ static inline int test_and_change_bit(int nr, volatile void *addr)
266 return oldbit; 292 return oldbit;
267} 293}
268 294
269static inline int constant_test_bit(int nr, const volatile void *addr) 295static inline int constant_test_bit(int nr, const volatile unsigned long *addr)
270{ 296{
271 return ((1UL << (nr % BITS_PER_LONG)) & 297 return ((1UL << (nr % BITS_PER_LONG)) &
272 (((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0; 298 (((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0;
273} 299}
274 300
275static inline int variable_test_bit(int nr, volatile const void *addr) 301static inline int variable_test_bit(int nr, volatile const unsigned long *addr)
276{ 302{
277 int oldbit; 303 int oldbit;
278 304
diff --git a/include/asm-x86/cpufeature.h b/include/asm-x86/cpufeature.h
index 0d609c837a41..78b47e7404eb 100644
--- a/include/asm-x86/cpufeature.h
+++ b/include/asm-x86/cpufeature.h
@@ -142,11 +142,11 @@ extern const char * const x86_power_flags[32];
142#define clear_cpu_cap(c, bit) clear_bit(bit, (unsigned long *)((c)->x86_capability)) 142#define clear_cpu_cap(c, bit) clear_bit(bit, (unsigned long *)((c)->x86_capability))
143#define setup_clear_cpu_cap(bit) do { \ 143#define setup_clear_cpu_cap(bit) do { \
144 clear_cpu_cap(&boot_cpu_data, bit); \ 144 clear_cpu_cap(&boot_cpu_data, bit); \
145 set_bit(bit, cleared_cpu_caps); \ 145 set_bit(bit, (unsigned long *)cleared_cpu_caps); \
146} while (0) 146} while (0)
147#define setup_force_cpu_cap(bit) do { \ 147#define setup_force_cpu_cap(bit) do { \
148 set_cpu_cap(&boot_cpu_data, bit); \ 148 set_cpu_cap(&boot_cpu_data, bit); \
149 clear_bit(bit, cleared_cpu_caps); \ 149 clear_bit(bit, (unsigned long *)cleared_cpu_caps); \
150} while (0) 150} while (0)
151 151
152#define cpu_has_fpu boot_cpu_has(X86_FEATURE_FPU) 152#define cpu_has_fpu boot_cpu_has(X86_FEATURE_FPU)
diff --git a/include/asm-x86/current.h b/include/asm-x86/current.h
index d2526d3f7346..7515c19d4988 100644
--- a/include/asm-x86/current.h
+++ b/include/asm-x86/current.h
@@ -1,5 +1,39 @@
1#ifndef _X86_CURRENT_H
2#define _X86_CURRENT_H
3
1#ifdef CONFIG_X86_32 4#ifdef CONFIG_X86_32
2# include "current_32.h" 5#include <linux/compiler.h>
3#else 6#include <asm/percpu.h>
4# include "current_64.h" 7
5#endif 8struct task_struct;
9
10DECLARE_PER_CPU(struct task_struct *, current_task);
11static __always_inline struct task_struct *get_current(void)
12{
13 return x86_read_percpu(current_task);
14}
15
16#else /* X86_32 */
17
18#ifndef __ASSEMBLY__
19#include <asm/pda.h>
20
21struct task_struct;
22
23static __always_inline struct task_struct *get_current(void)
24{
25 return read_pda(pcurrent);
26}
27
28#else /* __ASSEMBLY__ */
29
30#include <asm/asm-offsets.h>
31#define GET_CURRENT(reg) movq %gs:(pda_pcurrent),reg
32
33#endif /* __ASSEMBLY__ */
34
35#endif /* X86_32 */
36
37#define current get_current()
38
39#endif /* X86_CURRENT_H */
diff --git a/include/asm-x86/current_32.h b/include/asm-x86/current_32.h
deleted file mode 100644
index 5af9bdb97a16..000000000000
--- a/include/asm-x86/current_32.h
+++ /dev/null
@@ -1,17 +0,0 @@
1#ifndef _I386_CURRENT_H
2#define _I386_CURRENT_H
3
4#include <linux/compiler.h>
5#include <asm/percpu.h>
6
7struct task_struct;
8
9DECLARE_PER_CPU(struct task_struct *, current_task);
10static __always_inline struct task_struct *get_current(void)
11{
12 return x86_read_percpu(current_task);
13}
14
15#define current get_current()
16
17#endif /* !(_I386_CURRENT_H) */
diff --git a/include/asm-x86/current_64.h b/include/asm-x86/current_64.h
deleted file mode 100644
index 2d368ede2fc1..000000000000
--- a/include/asm-x86/current_64.h
+++ /dev/null
@@ -1,27 +0,0 @@
1#ifndef _X86_64_CURRENT_H
2#define _X86_64_CURRENT_H
3
4#if !defined(__ASSEMBLY__)
5struct task_struct;
6
7#include <asm/pda.h>
8
9static inline struct task_struct *get_current(void)
10{
11 struct task_struct *t = read_pda(pcurrent);
12 return t;
13}
14
15#define current get_current()
16
17#else
18
19#ifndef ASM_OFFSET_H
20#include <asm/asm-offsets.h>
21#endif
22
23#define GET_CURRENT(reg) movq %gs:(pda_pcurrent),reg
24
25#endif
26
27#endif /* !(_X86_64_CURRENT_H) */
diff --git a/include/asm-x86/fixmap_32.h b/include/asm-x86/fixmap_32.h
index 4b96148e90c1..f0df7ee96816 100644
--- a/include/asm-x86/fixmap_32.h
+++ b/include/asm-x86/fixmap_32.h
@@ -79,10 +79,6 @@ enum fixed_addresses {
79 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ 79 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
80 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, 80 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
81#endif 81#endif
82#ifdef CONFIG_ACPI
83 FIX_ACPI_BEGIN,
84 FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1,
85#endif
86#ifdef CONFIG_PCI_MMCONFIG 82#ifdef CONFIG_PCI_MMCONFIG
87 FIX_PCIE_MCFG, 83 FIX_PCIE_MCFG,
88#endif 84#endif
@@ -103,6 +99,10 @@ enum fixed_addresses {
103 (__end_of_permanent_fixed_addresses & 511), 99 (__end_of_permanent_fixed_addresses & 511),
104 FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_NESTING - 1, 100 FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_NESTING - 1,
105 FIX_WP_TEST, 101 FIX_WP_TEST,
102#ifdef CONFIG_ACPI
103 FIX_ACPI_BEGIN,
104 FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1,
105#endif
106#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT 106#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
107 FIX_OHCI1394_BASE, 107 FIX_OHCI1394_BASE,
108#endif 108#endif
diff --git a/include/asm-x86/gart.h b/include/asm-x86/gart.h
index 90958ed993fa..eeca2f51fd8f 100644
--- a/include/asm-x86/gart.h
+++ b/include/asm-x86/gart.h
@@ -1,16 +1,20 @@
1#ifndef _ASM_X8664_IOMMU_H 1#ifndef _ASM_X8664_IOMMU_H
2#define _ASM_X8664_IOMMU_H 1 2#define _ASM_X8664_IOMMU_H 1
3 3
4#include <asm/e820.h>
5
4extern void pci_iommu_shutdown(void); 6extern void pci_iommu_shutdown(void);
5extern void no_iommu_init(void); 7extern void no_iommu_init(void);
6extern int force_iommu, no_iommu; 8extern int force_iommu, no_iommu;
7extern int iommu_detected; 9extern int iommu_detected;
10extern int agp_amd64_init(void);
8#ifdef CONFIG_GART_IOMMU 11#ifdef CONFIG_GART_IOMMU
9extern void gart_iommu_init(void); 12extern void gart_iommu_init(void);
10extern void gart_iommu_shutdown(void); 13extern void gart_iommu_shutdown(void);
11extern void __init gart_parse_options(char *); 14extern void __init gart_parse_options(char *);
12extern void early_gart_iommu_check(void); 15extern void early_gart_iommu_check(void);
13extern void gart_iommu_hole_init(void); 16extern void gart_iommu_hole_init(void);
17extern void set_up_gart_resume(u32, u32);
14extern int fallback_aper_order; 18extern int fallback_aper_order;
15extern int fallback_aper_force; 19extern int fallback_aper_force;
16extern int gart_iommu_aperture; 20extern int gart_iommu_aperture;
@@ -31,4 +35,63 @@ static inline void gart_iommu_shutdown(void)
31 35
32#endif 36#endif
33 37
38/* PTE bits. */
39#define GPTE_VALID 1
40#define GPTE_COHERENT 2
41
42/* Aperture control register bits. */
43#define GARTEN (1<<0)
44#define DISGARTCPU (1<<4)
45#define DISGARTIO (1<<5)
46
47/* GART cache control register bits. */
48#define INVGART (1<<0)
49#define GARTPTEERR (1<<1)
50
51/* K8 On-cpu GART registers */
52#define AMD64_GARTAPERTURECTL 0x90
53#define AMD64_GARTAPERTUREBASE 0x94
54#define AMD64_GARTTABLEBASE 0x98
55#define AMD64_GARTCACHECTL 0x9c
56#define AMD64_GARTEN (1<<0)
57
58static inline void enable_gart_translation(struct pci_dev *dev, u64 addr)
59{
60 u32 tmp, ctl;
61
62 /* address of the mappings table */
63 addr >>= 12;
64 tmp = (u32) addr<<4;
65 tmp &= ~0xf;
66 pci_write_config_dword(dev, AMD64_GARTTABLEBASE, tmp);
67
68 /* Enable GART translation for this hammer. */
69 pci_read_config_dword(dev, AMD64_GARTAPERTURECTL, &ctl);
70 ctl |= GARTEN;
71 ctl &= ~(DISGARTCPU | DISGARTIO);
72 pci_write_config_dword(dev, AMD64_GARTAPERTURECTL, ctl);
73}
74
75static inline int aperture_valid(u64 aper_base, u32 aper_size, u32 min_size)
76{
77 if (!aper_base)
78 return 0;
79
80 if (aper_base + aper_size > 0x100000000ULL) {
81 printk(KERN_ERR "Aperture beyond 4GB. Ignoring.\n");
82 return 0;
83 }
84 if (e820_any_mapped(aper_base, aper_base + aper_size, E820_RAM)) {
85 printk(KERN_ERR "Aperture pointing to e820 RAM. Ignoring.\n");
86 return 0;
87 }
88 if (aper_size < min_size) {
89 printk(KERN_ERR "Aperture too small (%d MB) than (%d MB)\n",
90 aper_size>>20, min_size>>20);
91 return 0;
92 }
93
94 return 1;
95}
96
34#endif 97#endif
diff --git a/include/asm-x86/geode.h b/include/asm-x86/geode.h
index 6e6458853a36..bb06027fc83e 100644
--- a/include/asm-x86/geode.h
+++ b/include/asm-x86/geode.h
@@ -112,8 +112,8 @@ extern int geode_get_dev_base(unsigned int dev);
112#define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */ 112#define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */
113#define VSA_VR_SIGNATURE 0x0003 113#define VSA_VR_SIGNATURE 0x0003
114#define VSA_VR_MEM_SIZE 0x0200 114#define VSA_VR_MEM_SIZE 0x0200
115#define VSA_SIG 0x4132 /* signature is ascii 'VSA2' */ 115#define AMD_VSA_SIG 0x4132 /* signature is ascii 'VSA2' */
116 116#define GSW_VSA_SIG 0x534d /* General Software signature */
117/* GPIO */ 117/* GPIO */
118 118
119#define GPIO_OUTPUT_VAL 0x00 119#define GPIO_OUTPUT_VAL 0x00
diff --git a/include/asm-x86/hardirq.h b/include/asm-x86/hardirq.h
index 314434d664e7..000787df66e6 100644
--- a/include/asm-x86/hardirq.h
+++ b/include/asm-x86/hardirq.h
@@ -3,3 +3,9 @@
3#else 3#else
4# include "hardirq_64.h" 4# include "hardirq_64.h"
5#endif 5#endif
6
7extern u64 arch_irq_stat_cpu(unsigned int cpu);
8#define arch_irq_stat_cpu arch_irq_stat_cpu
9
10extern u64 arch_irq_stat(void);
11#define arch_irq_stat arch_irq_stat
diff --git a/include/asm-x86/i8259.h b/include/asm-x86/i8259.h
index 45d4df3e51e6..2f98df91f1f2 100644
--- a/include/asm-x86/i8259.h
+++ b/include/asm-x86/i8259.h
@@ -55,4 +55,6 @@ static inline void outb_pic(unsigned char value, unsigned int port)
55 udelay(2); 55 udelay(2);
56} 56}
57 57
58extern struct irq_chip i8259A_chip;
59
58#endif /* __ASM_I8259_H__ */ 60#endif /* __ASM_I8259_H__ */
diff --git a/include/asm-x86/io_apic.h b/include/asm-x86/io_apic.h
index d593e14f0341..dc0f55f2b034 100644
--- a/include/asm-x86/io_apic.h
+++ b/include/asm-x86/io_apic.h
@@ -11,6 +11,15 @@
11 * Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar 11 * Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar
12 */ 12 */
13 13
14/* I/O Unit Redirection Table */
15#define IO_APIC_REDIR_VECTOR_MASK 0x000FF
16#define IO_APIC_REDIR_DEST_LOGICAL 0x00800
17#define IO_APIC_REDIR_DEST_PHYSICAL 0x00000
18#define IO_APIC_REDIR_SEND_PENDING (1 << 12)
19#define IO_APIC_REDIR_REMOTE_IRR (1 << 14)
20#define IO_APIC_REDIR_LEVEL_TRIGGER (1 << 15)
21#define IO_APIC_REDIR_MASKED (1 << 16)
22
14/* 23/*
15 * The structure of the IO-APIC: 24 * The structure of the IO-APIC:
16 */ 25 */
@@ -137,6 +146,9 @@ extern int sis_apic_bug;
137/* 1 if "noapic" boot option passed */ 146/* 1 if "noapic" boot option passed */
138extern int skip_ioapic_setup; 147extern int skip_ioapic_setup;
139 148
149/* 1 if the timer IRQ uses the '8259A Virtual Wire' mode */
150extern int timer_through_8259;
151
140static inline void disable_ioapic_setup(void) 152static inline void disable_ioapic_setup(void)
141{ 153{
142 skip_ioapic_setup = 1; 154 skip_ioapic_setup = 1;
@@ -162,6 +174,7 @@ extern void ioapic_init_mappings(void);
162 174
163#else /* !CONFIG_X86_IO_APIC */ 175#else /* !CONFIG_X86_IO_APIC */
164#define io_apic_assign_pci_irqs 0 176#define io_apic_assign_pci_irqs 0
177static const int timer_through_8259 = 0;
165#endif 178#endif
166 179
167#endif 180#endif
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
index 1d8cd01fa514..844f2a89afbc 100644
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -18,6 +18,7 @@
18#include <linux/kvm_para.h> 18#include <linux/kvm_para.h>
19#include <linux/kvm_types.h> 19#include <linux/kvm_types.h>
20 20
21#include <asm/pvclock-abi.h>
21#include <asm/desc.h> 22#include <asm/desc.h>
22 23
23#define KVM_MAX_VCPUS 16 24#define KVM_MAX_VCPUS 16
@@ -282,7 +283,8 @@ struct kvm_vcpu_arch {
282 struct x86_emulate_ctxt emulate_ctxt; 283 struct x86_emulate_ctxt emulate_ctxt;
283 284
284 gpa_t time; 285 gpa_t time;
285 struct kvm_vcpu_time_info hv_clock; 286 struct pvclock_vcpu_time_info hv_clock;
287 unsigned int hv_clock_tsc_khz;
286 unsigned int time_offset; 288 unsigned int time_offset;
287 struct page *time_page; 289 struct page *time_page;
288}; 290};
diff --git a/include/asm-x86/kvm_para.h b/include/asm-x86/kvm_para.h
index 509845942070..76f392146daa 100644
--- a/include/asm-x86/kvm_para.h
+++ b/include/asm-x86/kvm_para.h
@@ -48,24 +48,6 @@ struct kvm_mmu_op_release_pt {
48#ifdef __KERNEL__ 48#ifdef __KERNEL__
49#include <asm/processor.h> 49#include <asm/processor.h>
50 50
51/* xen binary-compatible interface. See xen headers for details */
52struct kvm_vcpu_time_info {
53 uint32_t version;
54 uint32_t pad0;
55 uint64_t tsc_timestamp;
56 uint64_t system_time;
57 uint32_t tsc_to_system_mul;
58 int8_t tsc_shift;
59 int8_t pad[3];
60} __attribute__((__packed__)); /* 32 bytes */
61
62struct kvm_wall_clock {
63 uint32_t wc_version;
64 uint32_t wc_sec;
65 uint32_t wc_nsec;
66} __attribute__((__packed__));
67
68
69extern void kvmclock_init(void); 51extern void kvmclock_init(void);
70 52
71 53
@@ -89,7 +71,8 @@ static inline long kvm_hypercall0(unsigned int nr)
89 long ret; 71 long ret;
90 asm volatile(KVM_HYPERCALL 72 asm volatile(KVM_HYPERCALL
91 : "=a"(ret) 73 : "=a"(ret)
92 : "a"(nr)); 74 : "a"(nr)
75 : "memory");
93 return ret; 76 return ret;
94} 77}
95 78
@@ -98,7 +81,8 @@ static inline long kvm_hypercall1(unsigned int nr, unsigned long p1)
98 long ret; 81 long ret;
99 asm volatile(KVM_HYPERCALL 82 asm volatile(KVM_HYPERCALL
100 : "=a"(ret) 83 : "=a"(ret)
101 : "a"(nr), "b"(p1)); 84 : "a"(nr), "b"(p1)
85 : "memory");
102 return ret; 86 return ret;
103} 87}
104 88
@@ -108,7 +92,8 @@ static inline long kvm_hypercall2(unsigned int nr, unsigned long p1,
108 long ret; 92 long ret;
109 asm volatile(KVM_HYPERCALL 93 asm volatile(KVM_HYPERCALL
110 : "=a"(ret) 94 : "=a"(ret)
111 : "a"(nr), "b"(p1), "c"(p2)); 95 : "a"(nr), "b"(p1), "c"(p2)
96 : "memory");
112 return ret; 97 return ret;
113} 98}
114 99
@@ -118,7 +103,8 @@ static inline long kvm_hypercall3(unsigned int nr, unsigned long p1,
118 long ret; 103 long ret;
119 asm volatile(KVM_HYPERCALL 104 asm volatile(KVM_HYPERCALL
120 : "=a"(ret) 105 : "=a"(ret)
121 : "a"(nr), "b"(p1), "c"(p2), "d"(p3)); 106 : "a"(nr), "b"(p1), "c"(p2), "d"(p3)
107 : "memory");
122 return ret; 108 return ret;
123} 109}
124 110
@@ -129,7 +115,8 @@ static inline long kvm_hypercall4(unsigned int nr, unsigned long p1,
129 long ret; 115 long ret;
130 asm volatile(KVM_HYPERCALL 116 asm volatile(KVM_HYPERCALL
131 : "=a"(ret) 117 : "=a"(ret)
132 : "a"(nr), "b"(p1), "c"(p2), "d"(p3), "S"(p4)); 118 : "a"(nr), "b"(p1), "c"(p2), "d"(p3), "S"(p4)
119 : "memory");
133 return ret; 120 return ret;
134} 121}
135 122
diff --git a/include/asm-x86/mach-default/smpboot_hooks.h b/include/asm-x86/mach-default/smpboot_hooks.h
index 56d0e1fa0258..b63c52182006 100644
--- a/include/asm-x86/mach-default/smpboot_hooks.h
+++ b/include/asm-x86/mach-default/smpboot_hooks.h
@@ -41,8 +41,10 @@ static inline void __init smpboot_setup_io_apic(void)
41 */ 41 */
42 if (!skip_ioapic_setup && nr_ioapics) 42 if (!skip_ioapic_setup && nr_ioapics)
43 setup_IO_APIC(); 43 setup_IO_APIC();
44 else 44 else {
45 nr_ioapics = 0; 45 nr_ioapics = 0;
46 localise_nmi_watchdog();
47 }
46} 48}
47 49
48static inline void smpboot_clear_io_apic(void) 50static inline void smpboot_clear_io_apic(void)
diff --git a/include/asm-x86/mmconfig.h b/include/asm-x86/mmconfig.h
new file mode 100644
index 000000000000..95beda07c6fa
--- /dev/null
+++ b/include/asm-x86/mmconfig.h
@@ -0,0 +1,12 @@
1#ifndef _ASM_MMCONFIG_H
2#define _ASM_MMCONFIG_H
3
4#ifdef CONFIG_PCI_MMCONFIG
5extern void __cpuinit fam10h_check_enable_mmcfg(void);
6extern void __init check_enable_amd_mmconf_dmi(void);
7#else
8static inline void fam10h_check_enable_mmcfg(void) { }
9static inline void check_enable_amd_mmconf_dmi(void) { }
10#endif
11
12#endif
diff --git a/include/asm-x86/msr-index.h b/include/asm-x86/msr-index.h
index 09413ad39d3c..44bce773012e 100644
--- a/include/asm-x86/msr-index.h
+++ b/include/asm-x86/msr-index.h
@@ -111,7 +111,9 @@
111#define MSR_K8_TOP_MEM2 0xc001001d 111#define MSR_K8_TOP_MEM2 0xc001001d
112#define MSR_K8_SYSCFG 0xc0010010 112#define MSR_K8_SYSCFG 0xc0010010
113#define MSR_K8_HWCR 0xc0010015 113#define MSR_K8_HWCR 0xc0010015
114#define MSR_K8_ENABLE_C1E 0xc0010055 114#define MSR_K8_INT_PENDING_MSG 0xc0010055
115/* C1E active bits in int pending message */
116#define K8_INTP_C1E_ACTIVE_MASK 0x18000000
115#define MSR_K8_TSEG_ADDR 0xc0010112 117#define MSR_K8_TSEG_ADDR 0xc0010112
116#define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000 /* MtrrFixDramEn bit */ 118#define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000 /* MtrrFixDramEn bit */
117#define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000 /* MtrrFixDramModEn bit */ 119#define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000 /* MtrrFixDramModEn bit */
diff --git a/include/asm-x86/msr.h b/include/asm-x86/msr.h
index 3707650a169b..2b5f2c91db25 100644
--- a/include/asm-x86/msr.h
+++ b/include/asm-x86/msr.h
@@ -18,7 +18,7 @@ static inline unsigned long long native_read_tscp(unsigned int *aux)
18 unsigned long low, high; 18 unsigned long low, high;
19 asm volatile(".byte 0x0f,0x01,0xf9" 19 asm volatile(".byte 0x0f,0x01,0xf9"
20 : "=a" (low), "=d" (high), "=c" (*aux)); 20 : "=a" (low), "=d" (high), "=c" (*aux));
21 return low | ((u64)high >> 32); 21 return low | ((u64)high << 32);
22} 22}
23 23
24/* 24/*
diff --git a/include/asm-x86/nmi.h b/include/asm-x86/nmi.h
index 1e363021e72f..05449ef830a7 100644
--- a/include/asm-x86/nmi.h
+++ b/include/asm-x86/nmi.h
@@ -15,27 +15,6 @@
15 */ 15 */
16int do_nmi_callback(struct pt_regs *regs, int cpu); 16int do_nmi_callback(struct pt_regs *regs, int cpu);
17 17
18#ifdef CONFIG_PM
19
20/** Replace the PM callback routine for NMI. */
21struct pm_dev *set_nmi_pm_callback(pm_callback callback);
22
23/** Unset the PM callback routine back to the default. */
24void unset_nmi_pm_callback(struct pm_dev *dev);
25
26#else
27
28static inline struct pm_dev *set_nmi_pm_callback(pm_callback callback)
29{
30 return 0;
31}
32
33static inline void unset_nmi_pm_callback(struct pm_dev *dev)
34{
35}
36
37#endif /* CONFIG_PM */
38
39#ifdef CONFIG_X86_64 18#ifdef CONFIG_X86_64
40extern void default_do_nmi(struct pt_regs *); 19extern void default_do_nmi(struct pt_regs *);
41extern void die_nmi(char *str, struct pt_regs *regs, int do_panic); 20extern void die_nmi(char *str, struct pt_regs *regs, int do_panic);
@@ -46,7 +25,6 @@ extern void nmi_watchdog_default(void);
46 25
47extern int check_nmi_watchdog(void); 26extern int check_nmi_watchdog(void);
48extern int nmi_watchdog_enabled; 27extern int nmi_watchdog_enabled;
49extern int unknown_nmi_panic;
50extern int avail_to_resrv_perfctr_nmi_bit(unsigned int); 28extern int avail_to_resrv_perfctr_nmi_bit(unsigned int);
51extern int avail_to_resrv_perfctr_nmi(unsigned int); 29extern int avail_to_resrv_perfctr_nmi(unsigned int);
52extern int reserve_perfctr_nmi(unsigned int); 30extern int reserve_perfctr_nmi(unsigned int);
@@ -78,6 +56,11 @@ extern int unknown_nmi_panic;
78void __trigger_all_cpu_backtrace(void); 56void __trigger_all_cpu_backtrace(void);
79#define trigger_all_cpu_backtrace() __trigger_all_cpu_backtrace() 57#define trigger_all_cpu_backtrace() __trigger_all_cpu_backtrace()
80 58
59static inline void localise_nmi_watchdog(void)
60{
61 if (nmi_watchdog == NMI_IO_APIC)
62 nmi_watchdog = NMI_LOCAL_APIC;
63}
81#endif 64#endif
82 65
83void lapic_watchdog_stop(void); 66void lapic_watchdog_stop(void);
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h
index dc936dddf161..b52ed85f32f5 100644
--- a/include/asm-x86/page.h
+++ b/include/asm-x86/page.h
@@ -51,8 +51,15 @@
51 51
52#ifndef __ASSEMBLY__ 52#ifndef __ASSEMBLY__
53 53
54typedef struct { pgdval_t pgd; } pgd_t;
55typedef struct { pgprotval_t pgprot; } pgprot_t;
56
54extern int page_is_ram(unsigned long pagenr); 57extern int page_is_ram(unsigned long pagenr);
55extern int devmem_is_allowed(unsigned long pagenr); 58extern int devmem_is_allowed(unsigned long pagenr);
59extern void map_devmem(unsigned long pfn, unsigned long size,
60 pgprot_t vma_prot);
61extern void unmap_devmem(unsigned long pfn, unsigned long size,
62 pgprot_t vma_prot);
56 63
57extern unsigned long max_pfn_mapped; 64extern unsigned long max_pfn_mapped;
58 65
@@ -74,9 +81,6 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
74 alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) 81 alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
75#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE 82#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
76 83
77typedef struct { pgdval_t pgd; } pgd_t;
78typedef struct { pgprotval_t pgprot; } pgprot_t;
79
80static inline pgd_t native_make_pgd(pgdval_t val) 84static inline pgd_t native_make_pgd(pgdval_t val)
81{ 85{
82 return (pgd_t) { val }; 86 return (pgd_t) { val };
@@ -160,6 +164,7 @@ static inline pteval_t native_pte_val(pte_t pte)
160#endif 164#endif
161 165
162#define pte_val(x) native_pte_val(x) 166#define pte_val(x) native_pte_val(x)
167#define pte_flags(x) native_pte_val(x)
163#define __pte(x) native_make_pte(x) 168#define __pte(x) native_make_pte(x)
164 169
165#endif /* CONFIG_PARAVIRT */ 170#endif /* CONFIG_PARAVIRT */
diff --git a/include/asm-x86/page_32.h b/include/asm-x86/page_32.h
index 424e82f8ae27..73ed2e4ebf95 100644
--- a/include/asm-x86/page_32.h
+++ b/include/asm-x86/page_32.h
@@ -13,8 +13,17 @@
13 */ 13 */
14#define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL) 14#define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
15 15
16#ifdef CONFIG_4KSTACKS
17#define THREAD_ORDER 0
18#else
19#define THREAD_ORDER 1
20#endif
21#define THREAD_SIZE (PAGE_SIZE << THREAD_ORDER)
22
23
16#ifdef CONFIG_X86_PAE 24#ifdef CONFIG_X86_PAE
17#define __PHYSICAL_MASK_SHIFT 36 25/* 44=32+12, the limit we can fit into an unsigned long pfn */
26#define __PHYSICAL_MASK_SHIFT 44
18#define __VIRTUAL_MASK_SHIFT 32 27#define __VIRTUAL_MASK_SHIFT 32
19#define PAGETABLE_LEVELS 3 28#define PAGETABLE_LEVELS 3
20 29
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h
index 0f13b945e240..e9ada314dfc1 100644
--- a/include/asm-x86/paravirt.h
+++ b/include/asm-x86/paravirt.h
@@ -238,7 +238,13 @@ struct pv_mmu_ops {
238 void (*pte_update_defer)(struct mm_struct *mm, 238 void (*pte_update_defer)(struct mm_struct *mm,
239 unsigned long addr, pte_t *ptep); 239 unsigned long addr, pte_t *ptep);
240 240
241 pte_t (*ptep_modify_prot_start)(struct mm_struct *mm, unsigned long addr,
242 pte_t *ptep);
243 void (*ptep_modify_prot_commit)(struct mm_struct *mm, unsigned long addr,
244 pte_t *ptep, pte_t pte);
245
241 pteval_t (*pte_val)(pte_t); 246 pteval_t (*pte_val)(pte_t);
247 pteval_t (*pte_flags)(pte_t);
242 pte_t (*make_pte)(pteval_t pte); 248 pte_t (*make_pte)(pteval_t pte);
243 249
244 pgdval_t (*pgd_val)(pgd_t); 250 pgdval_t (*pgd_val)(pgd_t);
@@ -996,6 +1002,20 @@ static inline pteval_t pte_val(pte_t pte)
996 return ret; 1002 return ret;
997} 1003}
998 1004
1005static inline pteval_t pte_flags(pte_t pte)
1006{
1007 pteval_t ret;
1008
1009 if (sizeof(pteval_t) > sizeof(long))
1010 ret = PVOP_CALL2(pteval_t, pv_mmu_ops.pte_flags,
1011 pte.pte, (u64)pte.pte >> 32);
1012 else
1013 ret = PVOP_CALL1(pteval_t, pv_mmu_ops.pte_flags,
1014 pte.pte);
1015
1016 return ret;
1017}
1018
999static inline pgd_t __pgd(pgdval_t val) 1019static inline pgd_t __pgd(pgdval_t val)
1000{ 1020{
1001 pgdval_t ret; 1021 pgdval_t ret;
@@ -1024,6 +1044,29 @@ static inline pgdval_t pgd_val(pgd_t pgd)
1024 return ret; 1044 return ret;
1025} 1045}
1026 1046
1047#define __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION
1048static inline pte_t ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr,
1049 pte_t *ptep)
1050{
1051 pteval_t ret;
1052
1053 ret = PVOP_CALL3(pteval_t, pv_mmu_ops.ptep_modify_prot_start,
1054 mm, addr, ptep);
1055
1056 return (pte_t) { .pte = ret };
1057}
1058
1059static inline void ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr,
1060 pte_t *ptep, pte_t pte)
1061{
1062 if (sizeof(pteval_t) > sizeof(long))
1063 /* 5 arg words */
1064 pv_mmu_ops.ptep_modify_prot_commit(mm, addr, ptep, pte);
1065 else
1066 PVOP_VCALL4(pv_mmu_ops.ptep_modify_prot_commit,
1067 mm, addr, ptep, pte.pte);
1068}
1069
1027static inline void set_pte(pte_t *ptep, pte_t pte) 1070static inline void set_pte(pte_t *ptep, pte_t pte)
1028{ 1071{
1029 if (sizeof(pteval_t) > sizeof(long)) 1072 if (sizeof(pteval_t) > sizeof(long))
diff --git a/include/asm-x86/pci.h b/include/asm-x86/pci.h
index 30bbde0cb34b..2db14cf17db8 100644
--- a/include/asm-x86/pci.h
+++ b/include/asm-x86/pci.h
@@ -18,6 +18,8 @@ struct pci_sysdata {
18#endif 18#endif
19}; 19};
20 20
21extern int pci_routeirq;
22
21/* scan a bus after allocating a pci_sysdata for it */ 23/* scan a bus after allocating a pci_sysdata for it */
22extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops, 24extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops,
23 int node); 25 int node);
diff --git a/include/asm-x86/pci_32.h b/include/asm-x86/pci_32.h
index 8c4c3a0368e2..a50d46851285 100644
--- a/include/asm-x86/pci_32.h
+++ b/include/asm-x86/pci_32.h
@@ -18,12 +18,14 @@ struct pci_dev;
18#define PCI_DMA_BUS_IS_PHYS (1) 18#define PCI_DMA_BUS_IS_PHYS (1)
19 19
20/* pci_unmap_{page,single} is a nop so... */ 20/* pci_unmap_{page,single} is a nop so... */
21#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) 21#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME[0];
22#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) 22#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) unsigned LEN_NAME[0];
23#define pci_unmap_addr(PTR, ADDR_NAME) (0) 23#define pci_unmap_addr(PTR, ADDR_NAME) sizeof((PTR)->ADDR_NAME)
24#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0) 24#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \
25#define pci_unmap_len(PTR, LEN_NAME) (0) 25 do { break; } while (pci_unmap_addr(PTR, ADDR_NAME))
26#define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) 26#define pci_unmap_len(PTR, LEN_NAME) sizeof((PTR)->LEN_NAME)
27#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \
28 do { break; } while (pci_unmap_len(PTR, LEN_NAME))
27 29
28 30
29#endif /* __KERNEL__ */ 31#endif /* __KERNEL__ */
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h
index 97c271b2910b..bcb5446a08d1 100644
--- a/include/asm-x86/pgtable.h
+++ b/include/asm-x86/pgtable.h
@@ -20,30 +20,25 @@
20#define _PAGE_BIT_PAT_LARGE 12 /* On 2MB or 1GB pages */ 20#define _PAGE_BIT_PAT_LARGE 12 /* On 2MB or 1GB pages */
21#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */ 21#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
22 22
23/* 23#define _PAGE_PRESENT (_AT(pteval_t, 1) << _PAGE_BIT_PRESENT)
24 * Note: we use _AC(1, L) instead of _AC(1, UL) so that we get a 24#define _PAGE_RW (_AT(pteval_t, 1) << _PAGE_BIT_RW)
25 * sign-extended value on 32-bit with all 1's in the upper word, 25#define _PAGE_USER (_AT(pteval_t, 1) << _PAGE_BIT_USER)
26 * which preserves the upper pte values on 64-bit ptes: 26#define _PAGE_PWT (_AT(pteval_t, 1) << _PAGE_BIT_PWT)
27 */ 27#define _PAGE_PCD (_AT(pteval_t, 1) << _PAGE_BIT_PCD)
28#define _PAGE_PRESENT (_AC(1, L)<<_PAGE_BIT_PRESENT) 28#define _PAGE_ACCESSED (_AT(pteval_t, 1) << _PAGE_BIT_ACCESSED)
29#define _PAGE_RW (_AC(1, L)<<_PAGE_BIT_RW) 29#define _PAGE_DIRTY (_AT(pteval_t, 1) << _PAGE_BIT_DIRTY)
30#define _PAGE_USER (_AC(1, L)<<_PAGE_BIT_USER) 30#define _PAGE_PSE (_AT(pteval_t, 1) << _PAGE_BIT_PSE)
31#define _PAGE_PWT (_AC(1, L)<<_PAGE_BIT_PWT) 31#define _PAGE_GLOBAL (_AT(pteval_t, 1) << _PAGE_BIT_GLOBAL)
32#define _PAGE_PCD (_AC(1, L)<<_PAGE_BIT_PCD) 32#define _PAGE_UNUSED1 (_AT(pteval_t, 1) << _PAGE_BIT_UNUSED1)
33#define _PAGE_ACCESSED (_AC(1, L)<<_PAGE_BIT_ACCESSED) 33#define _PAGE_UNUSED2 (_AT(pteval_t, 1) << _PAGE_BIT_UNUSED2)
34#define _PAGE_DIRTY (_AC(1, L)<<_PAGE_BIT_DIRTY) 34#define _PAGE_UNUSED3 (_AT(pteval_t, 1) << _PAGE_BIT_UNUSED3)
35#define _PAGE_PSE (_AC(1, L)<<_PAGE_BIT_PSE) /* 2MB page */ 35#define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT)
36#define _PAGE_GLOBAL (_AC(1, L)<<_PAGE_BIT_GLOBAL) /* Global TLB entry */ 36#define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE)
37#define _PAGE_UNUSED1 (_AC(1, L)<<_PAGE_BIT_UNUSED1)
38#define _PAGE_UNUSED2 (_AC(1, L)<<_PAGE_BIT_UNUSED2)
39#define _PAGE_UNUSED3 (_AC(1, L)<<_PAGE_BIT_UNUSED3)
40#define _PAGE_PAT (_AC(1, L)<<_PAGE_BIT_PAT)
41#define _PAGE_PAT_LARGE (_AC(1, L)<<_PAGE_BIT_PAT_LARGE)
42 37
43#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) 38#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
44#define _PAGE_NX (_AC(1, ULL) << _PAGE_BIT_NX) 39#define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX)
45#else 40#else
46#define _PAGE_NX 0 41#define _PAGE_NX (_AT(pteval_t, 0))
47#endif 42#endif
48 43
49/* If _PAGE_PRESENT is clear, we use these: */ 44/* If _PAGE_PRESENT is clear, we use these: */
@@ -164,37 +159,37 @@ extern struct list_head pgd_list;
164 */ 159 */
165static inline int pte_dirty(pte_t pte) 160static inline int pte_dirty(pte_t pte)
166{ 161{
167 return pte_val(pte) & _PAGE_DIRTY; 162 return pte_flags(pte) & _PAGE_DIRTY;
168} 163}
169 164
170static inline int pte_young(pte_t pte) 165static inline int pte_young(pte_t pte)
171{ 166{
172 return pte_val(pte) & _PAGE_ACCESSED; 167 return pte_flags(pte) & _PAGE_ACCESSED;
173} 168}
174 169
175static inline int pte_write(pte_t pte) 170static inline int pte_write(pte_t pte)
176{ 171{
177 return pte_val(pte) & _PAGE_RW; 172 return pte_flags(pte) & _PAGE_RW;
178} 173}
179 174
180static inline int pte_file(pte_t pte) 175static inline int pte_file(pte_t pte)
181{ 176{
182 return pte_val(pte) & _PAGE_FILE; 177 return pte_flags(pte) & _PAGE_FILE;
183} 178}
184 179
185static inline int pte_huge(pte_t pte) 180static inline int pte_huge(pte_t pte)
186{ 181{
187 return pte_val(pte) & _PAGE_PSE; 182 return pte_flags(pte) & _PAGE_PSE;
188} 183}
189 184
190static inline int pte_global(pte_t pte) 185static inline int pte_global(pte_t pte)
191{ 186{
192 return pte_val(pte) & _PAGE_GLOBAL; 187 return pte_flags(pte) & _PAGE_GLOBAL;
193} 188}
194 189
195static inline int pte_exec(pte_t pte) 190static inline int pte_exec(pte_t pte)
196{ 191{
197 return !(pte_val(pte) & _PAGE_NX); 192 return !(pte_flags(pte) & _PAGE_NX);
198} 193}
199 194
200static inline int pte_special(pte_t pte) 195static inline int pte_special(pte_t pte)
@@ -210,22 +205,22 @@ static inline int pmd_large(pmd_t pte)
210 205
211static inline pte_t pte_mkclean(pte_t pte) 206static inline pte_t pte_mkclean(pte_t pte)
212{ 207{
213 return __pte(pte_val(pte) & ~(pteval_t)_PAGE_DIRTY); 208 return __pte(pte_val(pte) & ~_PAGE_DIRTY);
214} 209}
215 210
216static inline pte_t pte_mkold(pte_t pte) 211static inline pte_t pte_mkold(pte_t pte)
217{ 212{
218 return __pte(pte_val(pte) & ~(pteval_t)_PAGE_ACCESSED); 213 return __pte(pte_val(pte) & ~_PAGE_ACCESSED);
219} 214}
220 215
221static inline pte_t pte_wrprotect(pte_t pte) 216static inline pte_t pte_wrprotect(pte_t pte)
222{ 217{
223 return __pte(pte_val(pte) & ~(pteval_t)_PAGE_RW); 218 return __pte(pte_val(pte) & ~_PAGE_RW);
224} 219}
225 220
226static inline pte_t pte_mkexec(pte_t pte) 221static inline pte_t pte_mkexec(pte_t pte)
227{ 222{
228 return __pte(pte_val(pte) & ~(pteval_t)_PAGE_NX); 223 return __pte(pte_val(pte) & ~_PAGE_NX);
229} 224}
230 225
231static inline pte_t pte_mkdirty(pte_t pte) 226static inline pte_t pte_mkdirty(pte_t pte)
@@ -250,7 +245,7 @@ static inline pte_t pte_mkhuge(pte_t pte)
250 245
251static inline pte_t pte_clrhuge(pte_t pte) 246static inline pte_t pte_clrhuge(pte_t pte)
252{ 247{
253 return __pte(pte_val(pte) & ~(pteval_t)_PAGE_PSE); 248 return __pte(pte_val(pte) & ~_PAGE_PSE);
254} 249}
255 250
256static inline pte_t pte_mkglobal(pte_t pte) 251static inline pte_t pte_mkglobal(pte_t pte)
@@ -260,7 +255,7 @@ static inline pte_t pte_mkglobal(pte_t pte)
260 255
261static inline pte_t pte_clrglobal(pte_t pte) 256static inline pte_t pte_clrglobal(pte_t pte)
262{ 257{
263 return __pte(pte_val(pte) & ~(pteval_t)_PAGE_GLOBAL); 258 return __pte(pte_val(pte) & ~_PAGE_GLOBAL);
264} 259}
265 260
266static inline pte_t pte_mkspecial(pte_t pte) 261static inline pte_t pte_mkspecial(pte_t pte)
@@ -305,7 +300,7 @@ static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
305 return __pgprot(preservebits | addbits); 300 return __pgprot(preservebits | addbits);
306} 301}
307 302
308#define pte_pgprot(x) __pgprot(pte_val(x) & ~PTE_MASK) 303#define pte_pgprot(x) __pgprot(pte_flags(x) & ~PTE_MASK)
309 304
310#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) 305#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask)
311 306
@@ -369,8 +364,15 @@ enum {
369 PG_LEVEL_4K, 364 PG_LEVEL_4K,
370 PG_LEVEL_2M, 365 PG_LEVEL_2M,
371 PG_LEVEL_1G, 366 PG_LEVEL_1G,
367 PG_LEVEL_NUM
372}; 368};
373 369
370#ifdef CONFIG_PROC_FS
371extern void update_page_count(int level, unsigned long pages);
372#else
373static inline void update_page_count(int level, unsigned long pages) { }
374#endif
375
374/* 376/*
375 * Helper function that returns the kernel pagetable entry controlling 377 * Helper function that returns the kernel pagetable entry controlling
376 * the virtual address 'address'. NULL means no pagetable entry present. 378 * the virtual address 'address'. NULL means no pagetable entry present.
diff --git a/include/asm-x86/processor-flags.h b/include/asm-x86/processor-flags.h
index 199cab107d85..092b39b3a7e6 100644
--- a/include/asm-x86/processor-flags.h
+++ b/include/asm-x86/processor-flags.h
@@ -88,4 +88,10 @@
88#define CX86_ARR_BASE 0xc4 88#define CX86_ARR_BASE 0xc4
89#define CX86_RCR_BASE 0xdc 89#define CX86_RCR_BASE 0xdc
90 90
91#ifdef CONFIG_VM86
92#define X86_VM_MASK X86_EFLAGS_VM
93#else
94#define X86_VM_MASK 0 /* No VM86 support */
95#endif
96
91#endif /* __ASM_I386_PROCESSOR_FLAGS_H */ 97#endif /* __ASM_I386_PROCESSOR_FLAGS_H */
diff --git a/include/asm-x86/processor.h b/include/asm-x86/processor.h
index 559105220a47..4ab2ede6f4b9 100644
--- a/include/asm-x86/processor.h
+++ b/include/asm-x86/processor.h
@@ -263,15 +263,11 @@ struct tss_struct {
263 struct thread_struct *io_bitmap_owner; 263 struct thread_struct *io_bitmap_owner;
264 264
265 /* 265 /*
266 * Pad the TSS to be cacheline-aligned (size is 0x100):
267 */
268 unsigned long __cacheline_filler[35];
269 /*
270 * .. and then another 0x100 bytes for the emergency kernel stack: 266 * .. and then another 0x100 bytes for the emergency kernel stack:
271 */ 267 */
272 unsigned long stack[64]; 268 unsigned long stack[64];
273 269
274} __attribute__((packed)); 270} ____cacheline_aligned;
275 271
276DECLARE_PER_CPU(struct tss_struct, init_tss); 272DECLARE_PER_CPU(struct tss_struct, init_tss);
277 273
diff --git a/include/asm-x86/ptrace.h b/include/asm-x86/ptrace.h
index 9f922b0b95d6..8a71db803da6 100644
--- a/include/asm-x86/ptrace.h
+++ b/include/asm-x86/ptrace.h
@@ -3,7 +3,12 @@
3 3
4#include <linux/compiler.h> /* For __user */ 4#include <linux/compiler.h> /* For __user */
5#include <asm/ptrace-abi.h> 5#include <asm/ptrace-abi.h>
6#include <asm/processor-flags.h>
6 7
8#ifdef __KERNEL__
9#include <asm/ds.h> /* the DS BTS struct is used for ptrace too */
10#include <asm/segment.h>
11#endif
7 12
8#ifndef __ASSEMBLY__ 13#ifndef __ASSEMBLY__
9 14
@@ -55,9 +60,6 @@ struct pt_regs {
55 unsigned long ss; 60 unsigned long ss;
56}; 61};
57 62
58#include <asm/vm86.h>
59#include <asm/segment.h>
60
61#endif /* __KERNEL__ */ 63#endif /* __KERNEL__ */
62 64
63#else /* __i386__ */ 65#else /* __i386__ */
diff --git a/include/asm-x86/pvclock-abi.h b/include/asm-x86/pvclock-abi.h
new file mode 100644
index 000000000000..6857f840b243
--- /dev/null
+++ b/include/asm-x86/pvclock-abi.h
@@ -0,0 +1,42 @@
1#ifndef _ASM_X86_PVCLOCK_ABI_H_
2#define _ASM_X86_PVCLOCK_ABI_H_
3#ifndef __ASSEMBLY__
4
5/*
6 * These structs MUST NOT be changed.
7 * They are the ABI between hypervisor and guest OS.
8 * Both Xen and KVM are using this.
9 *
10 * pvclock_vcpu_time_info holds the system time and the tsc timestamp
11 * of the last update. So the guest can use the tsc delta to get a
12 * more precise system time. There is one per virtual cpu.
13 *
14 * pvclock_wall_clock references the point in time when the system
15 * time was zero (usually boot time), thus the guest calculates the
16 * current wall clock by adding the system time.
17 *
18 * Protocol for the "version" fields is: hypervisor raises it (making
19 * it uneven) before it starts updating the fields and raises it again
20 * (making it even) when it is done. Thus the guest can make sure the
21 * time values it got are consistent by checking the version before
22 * and after reading them.
23 */
24
25struct pvclock_vcpu_time_info {
26 u32 version;
27 u32 pad0;
28 u64 tsc_timestamp;
29 u64 system_time;
30 u32 tsc_to_system_mul;
31 s8 tsc_shift;
32 u8 pad[3];
33} __attribute__((__packed__)); /* 32 bytes */
34
35struct pvclock_wall_clock {
36 u32 version;
37 u32 sec;
38 u32 nsec;
39} __attribute__((__packed__));
40
41#endif /* __ASSEMBLY__ */
42#endif /* _ASM_X86_PVCLOCK_ABI_H_ */
diff --git a/include/asm-x86/pvclock.h b/include/asm-x86/pvclock.h
new file mode 100644
index 000000000000..85b1bba8e0a3
--- /dev/null
+++ b/include/asm-x86/pvclock.h
@@ -0,0 +1,13 @@
1#ifndef _ASM_X86_PVCLOCK_H_
2#define _ASM_X86_PVCLOCK_H_
3
4#include <linux/clocksource.h>
5#include <asm/pvclock-abi.h>
6
7/* some helper functions for xen and kvm pv clock sources */
8cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src);
9void pvclock_read_wallclock(struct pvclock_wall_clock *wall,
10 struct pvclock_vcpu_time_info *vcpu,
11 struct timespec *ts);
12
13#endif /* _ASM_X86_PVCLOCK_H_ */
diff --git a/include/asm-x86/reboot.h b/include/asm-x86/reboot.h
index e63741f19392..206f355786dc 100644
--- a/include/asm-x86/reboot.h
+++ b/include/asm-x86/reboot.h
@@ -14,8 +14,8 @@ struct machine_ops {
14 14
15extern struct machine_ops machine_ops; 15extern struct machine_ops machine_ops;
16 16
17void machine_real_restart(unsigned char *code, int length);
18void native_machine_crash_shutdown(struct pt_regs *regs); 17void native_machine_crash_shutdown(struct pt_regs *regs);
19void native_machine_shutdown(void); 18void native_machine_shutdown(void);
19void machine_real_restart(const unsigned char *code, int length);
20 20
21#endif /* _ASM_REBOOT_H */ 21#endif /* _ASM_REBOOT_H */
diff --git a/include/asm-x86/required-features.h b/include/asm-x86/required-features.h
index 7400d3ad75c6..8c387198ca88 100644
--- a/include/asm-x86/required-features.h
+++ b/include/asm-x86/required-features.h
@@ -19,9 +19,13 @@
19 19
20#if defined(CONFIG_X86_PAE) || defined(CONFIG_X86_64) 20#if defined(CONFIG_X86_PAE) || defined(CONFIG_X86_64)
21# define NEED_PAE (1<<(X86_FEATURE_PAE & 31)) 21# define NEED_PAE (1<<(X86_FEATURE_PAE & 31))
22# define NEED_CX8 (1<<(X86_FEATURE_CX8 & 31))
23#else 22#else
24# define NEED_PAE 0 23# define NEED_PAE 0
24#endif
25
26#ifdef CONFIG_X86_CMPXCHG64
27# define NEED_CX8 (1<<(X86_FEATURE_CX8 & 31))
28#else
25# define NEED_CX8 0 29# define NEED_CX8 0
26#endif 30#endif
27 31
diff --git a/include/asm-x86/resume-trace.h b/include/asm-x86/resume-trace.h
index 2557514d7ef6..8d9f0b41ee86 100644
--- a/include/asm-x86/resume-trace.h
+++ b/include/asm-x86/resume-trace.h
@@ -6,7 +6,7 @@
6#define TRACE_RESUME(user) \ 6#define TRACE_RESUME(user) \
7do { \ 7do { \
8 if (pm_trace_enabled) { \ 8 if (pm_trace_enabled) { \
9 void *tracedata; \ 9 const void *tracedata; \
10 asm volatile(_ASM_MOV_UL " $1f,%0\n" \ 10 asm volatile(_ASM_MOV_UL " $1f,%0\n" \
11 ".section .tracedata,\"a\"\n" \ 11 ".section .tracedata,\"a\"\n" \
12 "1:\t.word %c1\n\t" \ 12 "1:\t.word %c1\n\t" \
diff --git a/include/asm-x86/seccomp_32.h b/include/asm-x86/seccomp_32.h
index 18da19e89bff..36e71c5f306f 100644
--- a/include/asm-x86/seccomp_32.h
+++ b/include/asm-x86/seccomp_32.h
@@ -1,4 +1,5 @@
1#ifndef _ASM_SECCOMP_H 1#ifndef _ASM_SECCOMP_H
2#define _ASM_SECCOMP_H
2 3
3#include <linux/thread_info.h> 4#include <linux/thread_info.h>
4 5
diff --git a/include/asm-x86/seccomp_64.h b/include/asm-x86/seccomp_64.h
index 553af65a2287..76cfe69aa63c 100644
--- a/include/asm-x86/seccomp_64.h
+++ b/include/asm-x86/seccomp_64.h
@@ -1,4 +1,5 @@
1#ifndef _ASM_SECCOMP_H 1#ifndef _ASM_SECCOMP_H
2#define _ASM_SECCOMP_H
2 3
3#include <linux/thread_info.h> 4#include <linux/thread_info.h>
4 5
diff --git a/include/asm-x86/string_32.h b/include/asm-x86/string_32.h
index b49369ad9a61..193578cd1fd9 100644
--- a/include/asm-x86/string_32.h
+++ b/include/asm-x86/string_32.h
@@ -29,81 +29,116 @@ extern char *strchr(const char *s, int c);
29#define __HAVE_ARCH_STRLEN 29#define __HAVE_ARCH_STRLEN
30extern size_t strlen(const char *s); 30extern size_t strlen(const char *s);
31 31
32static __always_inline void * __memcpy(void * to, const void * from, size_t n) 32static __always_inline void *__memcpy(void *to, const void *from, size_t n)
33{ 33{
34int d0, d1, d2; 34 int d0, d1, d2;
35__asm__ __volatile__( 35 asm volatile("rep ; movsl\n\t"
36 "rep ; movsl\n\t" 36 "movl %4,%%ecx\n\t"
37 "movl %4,%%ecx\n\t" 37 "andl $3,%%ecx\n\t"
38 "andl $3,%%ecx\n\t" 38 "jz 1f\n\t"
39 "jz 1f\n\t" 39 "rep ; movsb\n\t"
40 "rep ; movsb\n\t" 40 "1:"
41 "1:" 41 : "=&c" (d0), "=&D" (d1), "=&S" (d2)
42 : "=&c" (d0), "=&D" (d1), "=&S" (d2) 42 : "0" (n / 4), "g" (n), "1" ((long)to), "2" ((long)from)
43 : "0" (n/4), "g" (n), "1" ((long) to), "2" ((long) from) 43 : "memory");
44 : "memory"); 44 return to;
45return (to);
46} 45}
47 46
48/* 47/*
49 * This looks ugly, but the compiler can optimize it totally, 48 * This looks ugly, but the compiler can optimize it totally,
50 * as the count is constant. 49 * as the count is constant.
51 */ 50 */
52static __always_inline void * __constant_memcpy(void * to, const void * from, size_t n) 51static __always_inline void *__constant_memcpy(void *to, const void *from,
52 size_t n)
53{ 53{
54 long esi, edi; 54 long esi, edi;
55 if (!n) return to; 55 if (!n)
56#if 1 /* want to do small copies with non-string ops? */ 56 return to;
57
57 switch (n) { 58 switch (n) {
58 case 1: *(char*)to = *(char*)from; return to; 59 case 1:
59 case 2: *(short*)to = *(short*)from; return to; 60 *(char *)to = *(char *)from;
60 case 4: *(int*)to = *(int*)from; return to; 61 return to;
61#if 1 /* including those doable with two moves? */ 62 case 2:
62 case 3: *(short*)to = *(short*)from; 63 *(short *)to = *(short *)from;
63 *((char*)to+2) = *((char*)from+2); return to; 64 return to;
64 case 5: *(int*)to = *(int*)from; 65 case 4:
65 *((char*)to+4) = *((char*)from+4); return to; 66 *(int *)to = *(int *)from;
66 case 6: *(int*)to = *(int*)from; 67 return to;
67 *((short*)to+2) = *((short*)from+2); return to; 68
68 case 8: *(int*)to = *(int*)from; 69 case 3:
69 *((int*)to+1) = *((int*)from+1); return to; 70 *(short *)to = *(short *)from;
70#endif 71 *((char *)to + 2) = *((char *)from + 2);
72 return to;
73 case 5:
74 *(int *)to = *(int *)from;
75 *((char *)to + 4) = *((char *)from + 4);
76 return to;
77 case 6:
78 *(int *)to = *(int *)from;
79 *((short *)to + 2) = *((short *)from + 2);
80 return to;
81 case 8:
82 *(int *)to = *(int *)from;
83 *((int *)to + 1) = *((int *)from + 1);
84 return to;
71 } 85 }
72#endif 86
73 esi = (long) from; 87 esi = (long)from;
74 edi = (long) to; 88 edi = (long)to;
75 if (n >= 5*4) { 89 if (n >= 5 * 4) {
76 /* large block: use rep prefix */ 90 /* large block: use rep prefix */
77 int ecx; 91 int ecx;
78 __asm__ __volatile__( 92 asm volatile("rep ; movsl"
79 "rep ; movsl" 93 : "=&c" (ecx), "=&D" (edi), "=&S" (esi)
80 : "=&c" (ecx), "=&D" (edi), "=&S" (esi) 94 : "0" (n / 4), "1" (edi), "2" (esi)
81 : "0" (n/4), "1" (edi),"2" (esi) 95 : "memory"
82 : "memory"
83 ); 96 );
84 } else { 97 } else {
85 /* small block: don't clobber ecx + smaller code */ 98 /* small block: don't clobber ecx + smaller code */
86 if (n >= 4*4) __asm__ __volatile__("movsl" 99 if (n >= 4 * 4)
87 :"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory"); 100 asm volatile("movsl"
88 if (n >= 3*4) __asm__ __volatile__("movsl" 101 : "=&D"(edi), "=&S"(esi)
89 :"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory"); 102 : "0"(edi), "1"(esi)
90 if (n >= 2*4) __asm__ __volatile__("movsl" 103 : "memory");
91 :"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory"); 104 if (n >= 3 * 4)
92 if (n >= 1*4) __asm__ __volatile__("movsl" 105 asm volatile("movsl"
93 :"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory"); 106 : "=&D"(edi), "=&S"(esi)
107 : "0"(edi), "1"(esi)
108 : "memory");
109 if (n >= 2 * 4)
110 asm volatile("movsl"
111 : "=&D"(edi), "=&S"(esi)
112 : "0"(edi), "1"(esi)
113 : "memory");
114 if (n >= 1 * 4)
115 asm volatile("movsl"
116 : "=&D"(edi), "=&S"(esi)
117 : "0"(edi), "1"(esi)
118 : "memory");
94 } 119 }
95 switch (n % 4) { 120 switch (n % 4) {
96 /* tail */ 121 /* tail */
97 case 0: return to; 122 case 0:
98 case 1: __asm__ __volatile__("movsb" 123 return to;
99 :"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory"); 124 case 1:
100 return to; 125 asm volatile("movsb"
101 case 2: __asm__ __volatile__("movsw" 126 : "=&D"(edi), "=&S"(esi)
102 :"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory"); 127 : "0"(edi), "1"(esi)
103 return to; 128 : "memory");
104 default: __asm__ __volatile__("movsw\n\tmovsb" 129 return to;
105 :"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory"); 130 case 2:
106 return to; 131 asm volatile("movsw"
132 : "=&D"(edi), "=&S"(esi)
133 : "0"(edi), "1"(esi)
134 : "memory");
135 return to;
136 default:
137 asm volatile("movsw\n\tmovsb"
138 : "=&D"(edi), "=&S"(esi)
139 : "0"(edi), "1"(esi)
140 : "memory");
141 return to;
107 } 142 }
108} 143}
109 144
@@ -117,87 +152,86 @@ static __always_inline void * __constant_memcpy(void * to, const void * from, si
117 * This CPU favours 3DNow strongly (eg AMD Athlon) 152 * This CPU favours 3DNow strongly (eg AMD Athlon)
118 */ 153 */
119 154
120static inline void * __constant_memcpy3d(void * to, const void * from, size_t len) 155static inline void *__constant_memcpy3d(void *to, const void *from, size_t len)
121{ 156{
122 if (len < 512) 157 if (len < 512)
123 return __constant_memcpy(to, from, len); 158 return __constant_memcpy(to, from, len);
124 return _mmx_memcpy(to, from, len); 159 return _mmx_memcpy(to, from, len);
125} 160}
126 161
127static __inline__ void *__memcpy3d(void *to, const void *from, size_t len) 162static inline void *__memcpy3d(void *to, const void *from, size_t len)
128{ 163{
129 if (len < 512) 164 if (len < 512)
130 return __memcpy(to, from, len); 165 return __memcpy(to, from, len);
131 return _mmx_memcpy(to, from, len); 166 return _mmx_memcpy(to, from, len);
132} 167}
133 168
134#define memcpy(t, f, n) \ 169#define memcpy(t, f, n) \
135(__builtin_constant_p(n) ? \ 170 (__builtin_constant_p((n)) \
136 __constant_memcpy3d((t),(f),(n)) : \ 171 ? __constant_memcpy3d((t), (f), (n)) \
137 __memcpy3d((t),(f),(n))) 172 : __memcpy3d((t), (f), (n)))
138 173
139#else 174#else
140 175
141/* 176/*
142 * No 3D Now! 177 * No 3D Now!
143 */ 178 */
144 179
145#define memcpy(t, f, n) \ 180#define memcpy(t, f, n) \
146(__builtin_constant_p(n) ? \ 181 (__builtin_constant_p((n)) \
147 __constant_memcpy((t),(f),(n)) : \ 182 ? __constant_memcpy((t), (f), (n)) \
148 __memcpy((t),(f),(n))) 183 : __memcpy((t), (f), (n)))
149 184
150#endif 185#endif
151 186
152#define __HAVE_ARCH_MEMMOVE 187#define __HAVE_ARCH_MEMMOVE
153void *memmove(void * dest,const void * src, size_t n); 188void *memmove(void *dest, const void *src, size_t n);
154 189
155#define memcmp __builtin_memcmp 190#define memcmp __builtin_memcmp
156 191
157#define __HAVE_ARCH_MEMCHR 192#define __HAVE_ARCH_MEMCHR
158extern void *memchr(const void * cs,int c,size_t count); 193extern void *memchr(const void *cs, int c, size_t count);
159 194
160static inline void * __memset_generic(void * s, char c,size_t count) 195static inline void *__memset_generic(void *s, char c, size_t count)
161{ 196{
162int d0, d1; 197 int d0, d1;
163__asm__ __volatile__( 198 asm volatile("rep\n\t"
164 "rep\n\t" 199 "stosb"
165 "stosb" 200 : "=&c" (d0), "=&D" (d1)
166 : "=&c" (d0), "=&D" (d1) 201 : "a" (c), "1" (s), "0" (count)
167 :"a" (c),"1" (s),"0" (count) 202 : "memory");
168 :"memory"); 203 return s;
169return s;
170} 204}
171 205
172/* we might want to write optimized versions of these later */ 206/* we might want to write optimized versions of these later */
173#define __constant_count_memset(s,c,count) __memset_generic((s),(c),(count)) 207#define __constant_count_memset(s, c, count) __memset_generic((s), (c), (count))
174 208
175/* 209/*
176 * memset(x,0,y) is a reasonably common thing to do, so we want to fill 210 * memset(x, 0, y) is a reasonably common thing to do, so we want to fill
177 * things 32 bits at a time even when we don't know the size of the 211 * things 32 bits at a time even when we don't know the size of the
178 * area at compile-time.. 212 * area at compile-time..
179 */ 213 */
180static __always_inline void * __constant_c_memset(void * s, unsigned long c, size_t count) 214static __always_inline
215void *__constant_c_memset(void *s, unsigned long c, size_t count)
181{ 216{
182int d0, d1; 217 int d0, d1;
183__asm__ __volatile__( 218 asm volatile("rep ; stosl\n\t"
184 "rep ; stosl\n\t" 219 "testb $2,%b3\n\t"
185 "testb $2,%b3\n\t" 220 "je 1f\n\t"
186 "je 1f\n\t" 221 "stosw\n"
187 "stosw\n" 222 "1:\ttestb $1,%b3\n\t"
188 "1:\ttestb $1,%b3\n\t" 223 "je 2f\n\t"
189 "je 2f\n\t" 224 "stosb\n"
190 "stosb\n" 225 "2:"
191 "2:" 226 : "=&c" (d0), "=&D" (d1)
192 :"=&c" (d0), "=&D" (d1) 227 : "a" (c), "q" (count), "0" (count/4), "1" ((long)s)
193 :"a" (c), "q" (count), "0" (count/4), "1" ((long) s) 228 : "memory");
194 :"memory"); 229 return s;
195return (s);
196} 230}
197 231
198/* Added by Gertjan van Wingerde to make minix and sysv module work */ 232/* Added by Gertjan van Wingerde to make minix and sysv module work */
199#define __HAVE_ARCH_STRNLEN 233#define __HAVE_ARCH_STRNLEN
200extern size_t strnlen(const char * s, size_t count); 234extern size_t strnlen(const char *s, size_t count);
201/* end of additional stuff */ 235/* end of additional stuff */
202 236
203#define __HAVE_ARCH_STRSTR 237#define __HAVE_ARCH_STRSTR
@@ -207,66 +241,85 @@ extern char *strstr(const char *cs, const char *ct);
207 * This looks horribly ugly, but the compiler can optimize it totally, 241 * This looks horribly ugly, but the compiler can optimize it totally,
208 * as we by now know that both pattern and count is constant.. 242 * as we by now know that both pattern and count is constant..
209 */ 243 */
210static __always_inline void * __constant_c_and_count_memset(void * s, unsigned long pattern, size_t count) 244static __always_inline
245void *__constant_c_and_count_memset(void *s, unsigned long pattern,
246 size_t count)
211{ 247{
212 switch (count) { 248 switch (count) {
249 case 0:
250 return s;
251 case 1:
252 *(unsigned char *)s = pattern & 0xff;
253 return s;
254 case 2:
255 *(unsigned short *)s = pattern & 0xffff;
256 return s;
257 case 3:
258 *(unsigned short *)s = pattern & 0xffff;
259 *((unsigned char *)s + 2) = pattern & 0xff;
260 return s;
261 case 4:
262 *(unsigned long *)s = pattern;
263 return s;
264 }
265
266#define COMMON(x) \
267 asm volatile("rep ; stosl" \
268 x \
269 : "=&c" (d0), "=&D" (d1) \
270 : "a" (eax), "0" (count/4), "1" ((long)s) \
271 : "memory")
272
273 {
274 int d0, d1;
275#if __GNUC__ == 4 && __GNUC_MINOR__ == 0
276 /* Workaround for broken gcc 4.0 */
277 register unsigned long eax asm("%eax") = pattern;
278#else
279 unsigned long eax = pattern;
280#endif
281
282 switch (count % 4) {
213 case 0: 283 case 0:
284 COMMON("");
214 return s; 285 return s;
215 case 1: 286 case 1:
216 *(unsigned char *)s = pattern & 0xff; 287 COMMON("\n\tstosb");
217 return s; 288 return s;
218 case 2: 289 case 2:
219 *(unsigned short *)s = pattern & 0xffff; 290 COMMON("\n\tstosw");
220 return s; 291 return s;
221 case 3: 292 default:
222 *(unsigned short *)s = pattern & 0xffff; 293 COMMON("\n\tstosw\n\tstosb");
223 *(2+(unsigned char *)s) = pattern & 0xff;
224 return s;
225 case 4:
226 *(unsigned long *)s = pattern;
227 return s; 294 return s;
295 }
228 } 296 }
229#define COMMON(x) \ 297
230__asm__ __volatile__( \
231 "rep ; stosl" \
232 x \
233 : "=&c" (d0), "=&D" (d1) \
234 : "a" (pattern),"0" (count/4),"1" ((long) s) \
235 : "memory")
236{
237 int d0, d1;
238 switch (count % 4) {
239 case 0: COMMON(""); return s;
240 case 1: COMMON("\n\tstosb"); return s;
241 case 2: COMMON("\n\tstosw"); return s;
242 default: COMMON("\n\tstosw\n\tstosb"); return s;
243 }
244}
245
246#undef COMMON 298#undef COMMON
247} 299}
248 300
249#define __constant_c_x_memset(s, c, count) \ 301#define __constant_c_x_memset(s, c, count) \
250(__builtin_constant_p(count) ? \ 302 (__builtin_constant_p(count) \
251 __constant_c_and_count_memset((s),(c),(count)) : \ 303 ? __constant_c_and_count_memset((s), (c), (count)) \
252 __constant_c_memset((s),(c),(count))) 304 : __constant_c_memset((s), (c), (count)))
253 305
254#define __memset(s, c, count) \ 306#define __memset(s, c, count) \
255(__builtin_constant_p(count) ? \ 307 (__builtin_constant_p(count) \
256 __constant_count_memset((s),(c),(count)) : \ 308 ? __constant_count_memset((s), (c), (count)) \
257 __memset_generic((s),(c),(count))) 309 : __memset_generic((s), (c), (count)))
258 310
259#define __HAVE_ARCH_MEMSET 311#define __HAVE_ARCH_MEMSET
260#define memset(s, c, count) \ 312#define memset(s, c, count) \
261(__builtin_constant_p(c) ? \ 313 (__builtin_constant_p(c) \
262 __constant_c_x_memset((s),(0x01010101UL*(unsigned char)(c)),(count)) : \ 314 ? __constant_c_x_memset((s), (0x01010101UL * (unsigned char)(c)), \
263 __memset((s),(c),(count))) 315 (count)) \
316 : __memset((s), (c), (count)))
264 317
265/* 318/*
266 * find the first occurrence of byte 'c', or 1 past the area if none 319 * find the first occurrence of byte 'c', or 1 past the area if none
267 */ 320 */
268#define __HAVE_ARCH_MEMSCAN 321#define __HAVE_ARCH_MEMSCAN
269extern void *memscan(void * addr, int c, size_t size); 322extern void *memscan(void *addr, int c, size_t size);
270 323
271#endif /* __KERNEL__ */ 324#endif /* __KERNEL__ */
272 325
diff --git a/include/asm-x86/suspend_32.h b/include/asm-x86/suspend_32.h
index 24e1c080aa8a..8675c6782a7d 100644
--- a/include/asm-x86/suspend_32.h
+++ b/include/asm-x86/suspend_32.h
@@ -3,6 +3,9 @@
3 * Based on code 3 * Based on code
4 * Copyright 2001 Patrick Mochel <mochel@osdl.org> 4 * Copyright 2001 Patrick Mochel <mochel@osdl.org>
5 */ 5 */
6#ifndef __ASM_X86_32_SUSPEND_H
7#define __ASM_X86_32_SUSPEND_H
8
6#include <asm/desc.h> 9#include <asm/desc.h>
7#include <asm/i387.h> 10#include <asm/i387.h>
8 11
@@ -44,3 +47,5 @@ static inline void acpi_save_register_state(unsigned long return_point)
44/* routines for saving/restoring kernel state */ 47/* routines for saving/restoring kernel state */
45extern int acpi_save_state_mem(void); 48extern int acpi_save_state_mem(void);
46#endif 49#endif
50
51#endif /* __ASM_X86_32_SUSPEND_H */
diff --git a/include/asm-x86/system.h b/include/asm-x86/system.h
index a2f04cd79b29..7e4c133795a1 100644
--- a/include/asm-x86/system.h
+++ b/include/asm-x86/system.h
@@ -289,7 +289,7 @@ static inline void native_wbinvd(void)
289 289
290#endif/* CONFIG_PARAVIRT */ 290#endif/* CONFIG_PARAVIRT */
291 291
292#define stts() write_cr0(8 | read_cr0()) 292#define stts() write_cr0(read_cr0() | X86_CR0_TS)
293 293
294#endif /* __KERNEL__ */ 294#endif /* __KERNEL__ */
295 295
diff --git a/include/asm-x86/thread_info.h b/include/asm-x86/thread_info.h
index 77244f17993f..895339d2bc0b 100644
--- a/include/asm-x86/thread_info.h
+++ b/include/asm-x86/thread_info.h
@@ -1,9 +1,253 @@
1/* thread_info.h: low-level thread information
2 *
3 * Copyright (C) 2002 David Howells (dhowells@redhat.com)
4 * - Incorporating suggestions made by Linus Torvalds and Dave Miller
5 */
6
1#ifndef _ASM_X86_THREAD_INFO_H 7#ifndef _ASM_X86_THREAD_INFO_H
8#define _ASM_X86_THREAD_INFO_H
9
10#include <linux/compiler.h>
11#include <asm/page.h>
12#include <asm/types.h>
13
14/*
15 * low level task data that entry.S needs immediate access to
16 * - this struct should fit entirely inside of one cache line
17 * - this struct shares the supervisor stack pages
18 */
19#ifndef __ASSEMBLY__
20struct task_struct;
21struct exec_domain;
22#include <asm/processor.h>
23
24struct thread_info {
25 struct task_struct *task; /* main task structure */
26 struct exec_domain *exec_domain; /* execution domain */
27 unsigned long flags; /* low level flags */
28 __u32 status; /* thread synchronous flags */
29 __u32 cpu; /* current CPU */
30 int preempt_count; /* 0 => preemptable,
31 <0 => BUG */
32 mm_segment_t addr_limit;
33 struct restart_block restart_block;
34 void __user *sysenter_return;
35#ifdef CONFIG_X86_32
36 unsigned long previous_esp; /* ESP of the previous stack in
37 case of nested (IRQ) stacks
38 */
39 __u8 supervisor_stack[0];
40#endif
41};
42
43#define INIT_THREAD_INFO(tsk) \
44{ \
45 .task = &tsk, \
46 .exec_domain = &default_exec_domain, \
47 .flags = 0, \
48 .cpu = 0, \
49 .preempt_count = 1, \
50 .addr_limit = KERNEL_DS, \
51 .restart_block = { \
52 .fn = do_no_restart_syscall, \
53 }, \
54}
55
56#define init_thread_info (init_thread_union.thread_info)
57#define init_stack (init_thread_union.stack)
58
59#else /* !__ASSEMBLY__ */
60
61#include <asm/asm-offsets.h>
62
63#endif
64
65/*
66 * thread information flags
67 * - these are process state flags that various assembly files
68 * may need to access
69 * - pending work-to-be-done flags are in LSW
70 * - other flags in MSW
71 * Warning: layout of LSW is hardcoded in entry.S
72 */
73#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
74#define TIF_SIGPENDING 2 /* signal pending */
75#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
76#define TIF_SINGLESTEP 4 /* reenable singlestep on user return*/
77#define TIF_IRET 5 /* force IRET */
2#ifdef CONFIG_X86_32 78#ifdef CONFIG_X86_32
3# include "thread_info_32.h" 79#define TIF_SYSCALL_EMU 6 /* syscall emulation active */
80#endif
81#define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */
82#define TIF_SECCOMP 8 /* secure computing */
83#define TIF_MCE_NOTIFY 10 /* notify userspace of an MCE */
84#define TIF_HRTICK_RESCHED 11 /* reprogram hrtick timer */
85#define TIF_NOTSC 16 /* TSC is not accessible in userland */
86#define TIF_IA32 17 /* 32bit process */
87#define TIF_FORK 18 /* ret_from_fork */
88#define TIF_ABI_PENDING 19
89#define TIF_MEMDIE 20
90#define TIF_DEBUG 21 /* uses debug registers */
91#define TIF_IO_BITMAP 22 /* uses I/O bitmap */
92#define TIF_FREEZE 23 /* is freezing for suspend */
93#define TIF_FORCED_TF 24 /* true if TF in eflags artificially */
94#define TIF_DEBUGCTLMSR 25 /* uses thread_struct.debugctlmsr */
95#define TIF_DS_AREA_MSR 26 /* uses thread_struct.ds_area_msr */
96#define TIF_BTS_TRACE_TS 27 /* record scheduling event timestamps */
97
98#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
99#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
100#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)
101#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
102#define _TIF_IRET (1 << TIF_IRET)
103#ifdef CONFIG_X86_32
104#define _TIF_SYSCALL_EMU (1 << TIF_SYSCALL_EMU)
4#else 105#else
5# include "thread_info_64.h" 106#define _TIF_SYSCALL_EMU 0
6#endif 107#endif
108#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
109#define _TIF_SECCOMP (1 << TIF_SECCOMP)
110#define _TIF_MCE_NOTIFY (1 << TIF_MCE_NOTIFY)
111#define _TIF_HRTICK_RESCHED (1 << TIF_HRTICK_RESCHED)
112#define _TIF_NOTSC (1 << TIF_NOTSC)
113#define _TIF_IA32 (1 << TIF_IA32)
114#define _TIF_FORK (1 << TIF_FORK)
115#define _TIF_ABI_PENDING (1 << TIF_ABI_PENDING)
116#define _TIF_DEBUG (1 << TIF_DEBUG)
117#define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP)
118#define _TIF_FREEZE (1 << TIF_FREEZE)
119#define _TIF_FORCED_TF (1 << TIF_FORCED_TF)
120#define _TIF_DEBUGCTLMSR (1 << TIF_DEBUGCTLMSR)
121#define _TIF_DS_AREA_MSR (1 << TIF_DS_AREA_MSR)
122#define _TIF_BTS_TRACE_TS (1 << TIF_BTS_TRACE_TS)
123
124/* work to do on interrupt/exception return */
125#define _TIF_WORK_MASK \
126 (0x0000FFFF & \
127 ~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP| \
128 _TIF_SECCOMP|_TIF_SYSCALL_EMU))
129
130/* work to do on any return to user space */
131#define _TIF_ALLWORK_MASK (0x0000FFFF & ~_TIF_SECCOMP)
132
133/* Only used for 64 bit */
134#define _TIF_DO_NOTIFY_MASK \
135 (_TIF_SIGPENDING|_TIF_SINGLESTEP|_TIF_MCE_NOTIFY|_TIF_HRTICK_RESCHED)
136
137/* flags to check in __switch_to() */
138#define _TIF_WORK_CTXSW \
139 (_TIF_IO_BITMAP|_TIF_DEBUGCTLMSR|_TIF_DS_AREA_MSR|_TIF_BTS_TRACE_TS| \
140 _TIF_NOTSC)
141
142#define _TIF_WORK_CTXSW_PREV _TIF_WORK_CTXSW
143#define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW|_TIF_DEBUG)
144
145#define PREEMPT_ACTIVE 0x10000000
146
147/* thread information allocation */
148#ifdef CONFIG_DEBUG_STACK_USAGE
149#define THREAD_FLAGS (GFP_KERNEL | __GFP_ZERO)
150#else
151#define THREAD_FLAGS GFP_KERNEL
152#endif
153
154#define alloc_thread_info(tsk) \
155 ((struct thread_info *)__get_free_pages(THREAD_FLAGS, THREAD_ORDER))
156
157#ifdef CONFIG_X86_32
158
159#define STACK_WARN (THREAD_SIZE/8)
160/*
161 * macros/functions for gaining access to the thread information structure
162 *
163 * preempt_count needs to be 1 initially, until the scheduler is functional.
164 */
165#ifndef __ASSEMBLY__
166
167
168/* how to get the current stack pointer from C */
169register unsigned long current_stack_pointer asm("esp") __used;
170
171/* how to get the thread information struct from C */
172static inline struct thread_info *current_thread_info(void)
173{
174 return (struct thread_info *)
175 (current_stack_pointer & ~(THREAD_SIZE - 1));
176}
177
178#else /* !__ASSEMBLY__ */
179
180/* how to get the thread information struct from ASM */
181#define GET_THREAD_INFO(reg) \
182 movl $-THREAD_SIZE, reg; \
183 andl %esp, reg
184
185/* use this one if reg already contains %esp */
186#define GET_THREAD_INFO_WITH_ESP(reg) \
187 andl $-THREAD_SIZE, reg
188
189#endif
190
191#else /* X86_32 */
192
193#include <asm/pda.h>
194
195/*
196 * macros/functions for gaining access to the thread information structure
197 * preempt_count needs to be 1 initially, until the scheduler is functional.
198 */
199#ifndef __ASSEMBLY__
200static inline struct thread_info *current_thread_info(void)
201{
202 struct thread_info *ti;
203 ti = (void *)(read_pda(kernelstack) + PDA_STACKOFFSET - THREAD_SIZE);
204 return ti;
205}
206
207/* do not use in interrupt context */
208static inline struct thread_info *stack_thread_info(void)
209{
210 struct thread_info *ti;
211 asm("andq %%rsp,%0; " : "=r" (ti) : "0" (~(THREAD_SIZE - 1)));
212 return ti;
213}
214
215#else /* !__ASSEMBLY__ */
216
217/* how to get the thread information struct from ASM */
218#define GET_THREAD_INFO(reg) \
219 movq %gs:pda_kernelstack,reg ; \
220 subq $(THREAD_SIZE-PDA_STACKOFFSET),reg
221
222#endif
223
224#endif /* !X86_32 */
225
226/*
227 * Thread-synchronous status.
228 *
229 * This is different from the flags in that nobody else
230 * ever touches our thread-synchronous status, so we don't
231 * have to worry about atomic accesses.
232 */
233#define TS_USEDFPU 0x0001 /* FPU was used by this task
234 this quantum (SMP) */
235#define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/
236#define TS_POLLING 0x0004 /* true if in idle loop
237 and not sleeping */
238#define TS_RESTORE_SIGMASK 0x0008 /* restore signal mask in do_signal() */
239
240#define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING)
241
242#ifndef __ASSEMBLY__
243#define HAVE_SET_RESTORE_SIGMASK 1
244static inline void set_restore_sigmask(void)
245{
246 struct thread_info *ti = current_thread_info();
247 ti->status |= TS_RESTORE_SIGMASK;
248 set_bit(TIF_SIGPENDING, (unsigned long *)&ti->flags);
249}
250#endif /* !__ASSEMBLY__ */
7 251
8#ifndef __ASSEMBLY__ 252#ifndef __ASSEMBLY__
9extern void arch_task_cache_init(void); 253extern void arch_task_cache_init(void);
diff --git a/include/asm-x86/thread_info_32.h b/include/asm-x86/thread_info_32.h
deleted file mode 100644
index b6338829d1a8..000000000000
--- a/include/asm-x86/thread_info_32.h
+++ /dev/null
@@ -1,205 +0,0 @@
1/* thread_info.h: i386 low-level thread information
2 *
3 * Copyright (C) 2002 David Howells (dhowells@redhat.com)
4 * - Incorporating suggestions made by Linus Torvalds and Dave Miller
5 */
6
7#ifndef _ASM_THREAD_INFO_H
8#define _ASM_THREAD_INFO_H
9
10#ifdef __KERNEL__
11
12#include <linux/compiler.h>
13#include <asm/page.h>
14
15#ifndef __ASSEMBLY__
16#include <asm/processor.h>
17#endif
18
19/*
20 * low level task data that entry.S needs immediate access to
21 * - this struct should fit entirely inside of one cache line
22 * - this struct shares the supervisor stack pages
23 * - if the contents of this structure are changed,
24 * the assembly constants must also be changed
25 */
26#ifndef __ASSEMBLY__
27
28struct thread_info {
29 struct task_struct *task; /* main task structure */
30 struct exec_domain *exec_domain; /* execution domain */
31 unsigned long flags; /* low level flags */
32 unsigned long status; /* thread-synchronous flags */
33 __u32 cpu; /* current CPU */
34 int preempt_count; /* 0 => preemptable,
35 <0 => BUG */
36 mm_segment_t addr_limit; /* thread address space:
37 0-0xBFFFFFFF user-thread
38 0-0xFFFFFFFF kernel-thread
39 */
40 void *sysenter_return;
41 struct restart_block restart_block;
42 unsigned long previous_esp; /* ESP of the previous stack in
43 case of nested (IRQ) stacks
44 */
45 __u8 supervisor_stack[0];
46};
47
48#else /* !__ASSEMBLY__ */
49
50#include <asm/asm-offsets.h>
51
52#endif
53
54#define PREEMPT_ACTIVE 0x10000000
55#ifdef CONFIG_4KSTACKS
56#define THREAD_SIZE (4096)
57#else
58#define THREAD_SIZE (8192)
59#endif
60
61#define STACK_WARN (THREAD_SIZE/8)
62/*
63 * macros/functions for gaining access to the thread information structure
64 *
65 * preempt_count needs to be 1 initially, until the scheduler is functional.
66 */
67#ifndef __ASSEMBLY__
68
69#define INIT_THREAD_INFO(tsk) \
70{ \
71 .task = &tsk, \
72 .exec_domain = &default_exec_domain, \
73 .flags = 0, \
74 .cpu = 0, \
75 .preempt_count = 1, \
76 .addr_limit = KERNEL_DS, \
77 .restart_block = { \
78 .fn = do_no_restart_syscall, \
79 }, \
80}
81
82#define init_thread_info (init_thread_union.thread_info)
83#define init_stack (init_thread_union.stack)
84
85
86/* how to get the current stack pointer from C */
87register unsigned long current_stack_pointer asm("esp") __used;
88
89/* how to get the thread information struct from C */
90static inline struct thread_info *current_thread_info(void)
91{
92 return (struct thread_info *)
93 (current_stack_pointer & ~(THREAD_SIZE - 1));
94}
95
96/* thread information allocation */
97#ifdef CONFIG_DEBUG_STACK_USAGE
98#define alloc_thread_info(tsk) ((struct thread_info *) \
99 __get_free_pages(GFP_KERNEL | __GFP_ZERO, get_order(THREAD_SIZE)))
100#else
101#define alloc_thread_info(tsk) ((struct thread_info *) \
102 __get_free_pages(GFP_KERNEL, get_order(THREAD_SIZE)))
103#endif
104
105#else /* !__ASSEMBLY__ */
106
107/* how to get the thread information struct from ASM */
108#define GET_THREAD_INFO(reg) \
109 movl $-THREAD_SIZE, reg; \
110 andl %esp, reg
111
112/* use this one if reg already contains %esp */
113#define GET_THREAD_INFO_WITH_ESP(reg) \
114 andl $-THREAD_SIZE, reg
115
116#endif
117
118/*
119 * thread information flags
120 * - these are process state flags that various
121 * assembly files may need to access
122 * - pending work-to-be-done flags are in LSW
123 * - other flags in MSW
124 */
125#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
126#define TIF_SIGPENDING 1 /* signal pending */
127#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
128#define TIF_SINGLESTEP 3 /* restore singlestep on return to
129 user mode */
130#define TIF_IRET 4 /* return with iret */
131#define TIF_SYSCALL_EMU 5 /* syscall emulation active */
132#define TIF_SYSCALL_AUDIT 6 /* syscall auditing active */
133#define TIF_SECCOMP 7 /* secure computing */
134#define TIF_HRTICK_RESCHED 9 /* reprogram hrtick timer */
135#define TIF_MEMDIE 16
136#define TIF_DEBUG 17 /* uses debug registers */
137#define TIF_IO_BITMAP 18 /* uses I/O bitmap */
138#define TIF_FREEZE 19 /* is freezing for suspend */
139#define TIF_NOTSC 20 /* TSC is not accessible in userland */
140#define TIF_FORCED_TF 21 /* true if TF in eflags artificially */
141#define TIF_DEBUGCTLMSR 22 /* uses thread_struct.debugctlmsr */
142#define TIF_DS_AREA_MSR 23 /* uses thread_struct.ds_area_msr */
143#define TIF_BTS_TRACE_TS 24 /* record scheduling event timestamps */
144
145#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
146#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
147#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
148#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)
149#define _TIF_IRET (1 << TIF_IRET)
150#define _TIF_SYSCALL_EMU (1 << TIF_SYSCALL_EMU)
151#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
152#define _TIF_SECCOMP (1 << TIF_SECCOMP)
153#define _TIF_HRTICK_RESCHED (1 << TIF_HRTICK_RESCHED)
154#define _TIF_DEBUG (1 << TIF_DEBUG)
155#define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP)
156#define _TIF_FREEZE (1 << TIF_FREEZE)
157#define _TIF_NOTSC (1 << TIF_NOTSC)
158#define _TIF_FORCED_TF (1 << TIF_FORCED_TF)
159#define _TIF_DEBUGCTLMSR (1 << TIF_DEBUGCTLMSR)
160#define _TIF_DS_AREA_MSR (1 << TIF_DS_AREA_MSR)
161#define _TIF_BTS_TRACE_TS (1 << TIF_BTS_TRACE_TS)
162
163/* work to do on interrupt/exception return */
164#define _TIF_WORK_MASK \
165 (0x0000FFFF & ~(_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \
166 _TIF_SECCOMP | _TIF_SYSCALL_EMU))
167/* work to do on any return to u-space */
168#define _TIF_ALLWORK_MASK (0x0000FFFF & ~_TIF_SECCOMP)
169
170/* flags to check in __switch_to() */
171#define _TIF_WORK_CTXSW \
172 (_TIF_IO_BITMAP | _TIF_NOTSC | _TIF_DEBUGCTLMSR | \
173 _TIF_DS_AREA_MSR | _TIF_BTS_TRACE_TS)
174#define _TIF_WORK_CTXSW_PREV _TIF_WORK_CTXSW
175#define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW | _TIF_DEBUG)
176
177
178/*
179 * Thread-synchronous status.
180 *
181 * This is different from the flags in that nobody else
182 * ever touches our thread-synchronous status, so we don't
183 * have to worry about atomic accesses.
184 */
185#define TS_USEDFPU 0x0001 /* FPU was used by this task
186 this quantum (SMP) */
187#define TS_POLLING 0x0002 /* True if in idle loop
188 and not sleeping */
189#define TS_RESTORE_SIGMASK 0x0004 /* restore signal mask in do_signal() */
190
191#define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING)
192
193#ifndef __ASSEMBLY__
194#define HAVE_SET_RESTORE_SIGMASK 1
195static inline void set_restore_sigmask(void)
196{
197 struct thread_info *ti = current_thread_info();
198 ti->status |= TS_RESTORE_SIGMASK;
199 set_bit(TIF_SIGPENDING, &ti->flags);
200}
201#endif /* !__ASSEMBLY__ */
202
203#endif /* __KERNEL__ */
204
205#endif /* _ASM_THREAD_INFO_H */
diff --git a/include/asm-x86/thread_info_64.h b/include/asm-x86/thread_info_64.h
deleted file mode 100644
index cb69f70abba1..000000000000
--- a/include/asm-x86/thread_info_64.h
+++ /dev/null
@@ -1,195 +0,0 @@
1/* thread_info.h: x86_64 low-level thread information
2 *
3 * Copyright (C) 2002 David Howells (dhowells@redhat.com)
4 * - Incorporating suggestions made by Linus Torvalds and Dave Miller
5 */
6
7#ifndef _ASM_THREAD_INFO_H
8#define _ASM_THREAD_INFO_H
9
10#ifdef __KERNEL__
11
12#include <asm/page.h>
13#include <asm/types.h>
14#include <asm/pda.h>
15
16/*
17 * low level task data that entry.S needs immediate access to
18 * - this struct should fit entirely inside of one cache line
19 * - this struct shares the supervisor stack pages
20 */
21#ifndef __ASSEMBLY__
22struct task_struct;
23struct exec_domain;
24#include <asm/processor.h>
25
26struct thread_info {
27 struct task_struct *task; /* main task structure */
28 struct exec_domain *exec_domain; /* execution domain */
29 __u32 flags; /* low level flags */
30 __u32 status; /* thread synchronous flags */
31 __u32 cpu; /* current CPU */
32 int preempt_count; /* 0 => preemptable,
33 <0 => BUG */
34 mm_segment_t addr_limit;
35 struct restart_block restart_block;
36#ifdef CONFIG_IA32_EMULATION
37 void __user *sysenter_return;
38#endif
39};
40#endif
41
42/*
43 * macros/functions for gaining access to the thread information structure
44 * preempt_count needs to be 1 initially, until the scheduler is functional.
45 */
46#ifndef __ASSEMBLY__
47#define INIT_THREAD_INFO(tsk) \
48{ \
49 .task = &tsk, \
50 .exec_domain = &default_exec_domain, \
51 .flags = 0, \
52 .cpu = 0, \
53 .preempt_count = 1, \
54 .addr_limit = KERNEL_DS, \
55 .restart_block = { \
56 .fn = do_no_restart_syscall, \
57 }, \
58}
59
60#define init_thread_info (init_thread_union.thread_info)
61#define init_stack (init_thread_union.stack)
62
63static inline struct thread_info *current_thread_info(void)
64{
65 struct thread_info *ti;
66 ti = (void *)(read_pda(kernelstack) + PDA_STACKOFFSET - THREAD_SIZE);
67 return ti;
68}
69
70/* do not use in interrupt context */
71static inline struct thread_info *stack_thread_info(void)
72{
73 struct thread_info *ti;
74 asm("andq %%rsp,%0; " : "=r" (ti) : "0" (~(THREAD_SIZE - 1)));
75 return ti;
76}
77
78/* thread information allocation */
79#ifdef CONFIG_DEBUG_STACK_USAGE
80#define THREAD_FLAGS (GFP_KERNEL | __GFP_ZERO)
81#else
82#define THREAD_FLAGS GFP_KERNEL
83#endif
84
85#define alloc_thread_info(tsk) \
86 ((struct thread_info *)__get_free_pages(THREAD_FLAGS, THREAD_ORDER))
87
88#else /* !__ASSEMBLY__ */
89
90/* how to get the thread information struct from ASM */
91#define GET_THREAD_INFO(reg) \
92 movq %gs:pda_kernelstack,reg ; \
93 subq $(THREAD_SIZE-PDA_STACKOFFSET),reg
94
95#endif
96
97/*
98 * thread information flags
99 * - these are process state flags that various assembly files
100 * may need to access
101 * - pending work-to-be-done flags are in LSW
102 * - other flags in MSW
103 * Warning: layout of LSW is hardcoded in entry.S
104 */
105#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
106#define TIF_SIGPENDING 2 /* signal pending */
107#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
108#define TIF_SINGLESTEP 4 /* reenable singlestep on user return*/
109#define TIF_IRET 5 /* force IRET */
110#define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */
111#define TIF_SECCOMP 8 /* secure computing */
112#define TIF_MCE_NOTIFY 10 /* notify userspace of an MCE */
113#define TIF_HRTICK_RESCHED 11 /* reprogram hrtick timer */
114/* 16 free */
115#define TIF_IA32 17 /* 32bit process */
116#define TIF_FORK 18 /* ret_from_fork */
117#define TIF_ABI_PENDING 19
118#define TIF_MEMDIE 20
119#define TIF_DEBUG 21 /* uses debug registers */
120#define TIF_IO_BITMAP 22 /* uses I/O bitmap */
121#define TIF_FREEZE 23 /* is freezing for suspend */
122#define TIF_FORCED_TF 24 /* true if TF in eflags artificially */
123#define TIF_DEBUGCTLMSR 25 /* uses thread_struct.debugctlmsr */
124#define TIF_DS_AREA_MSR 26 /* uses thread_struct.ds_area_msr */
125#define TIF_BTS_TRACE_TS 27 /* record scheduling event timestamps */
126#define TIF_NOTSC 28 /* TSC is not accessible in userland */
127
128#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
129#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
130#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)
131#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
132#define _TIF_IRET (1 << TIF_IRET)
133#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
134#define _TIF_SECCOMP (1 << TIF_SECCOMP)
135#define _TIF_MCE_NOTIFY (1 << TIF_MCE_NOTIFY)
136#define _TIF_HRTICK_RESCHED (1 << TIF_HRTICK_RESCHED)
137#define _TIF_IA32 (1 << TIF_IA32)
138#define _TIF_FORK (1 << TIF_FORK)
139#define _TIF_ABI_PENDING (1 << TIF_ABI_PENDING)
140#define _TIF_DEBUG (1 << TIF_DEBUG)
141#define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP)
142#define _TIF_FREEZE (1 << TIF_FREEZE)
143#define _TIF_FORCED_TF (1 << TIF_FORCED_TF)
144#define _TIF_DEBUGCTLMSR (1 << TIF_DEBUGCTLMSR)
145#define _TIF_DS_AREA_MSR (1 << TIF_DS_AREA_MSR)
146#define _TIF_BTS_TRACE_TS (1 << TIF_BTS_TRACE_TS)
147#define _TIF_NOTSC (1 << TIF_NOTSC)
148
149/* work to do on interrupt/exception return */
150#define _TIF_WORK_MASK \
151 (0x0000FFFF & \
152 ~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP|_TIF_SECCOMP))
153/* work to do on any return to user space */
154#define _TIF_ALLWORK_MASK (0x0000FFFF & ~_TIF_SECCOMP)
155
156#define _TIF_DO_NOTIFY_MASK \
157 (_TIF_SIGPENDING|_TIF_SINGLESTEP|_TIF_MCE_NOTIFY|_TIF_HRTICK_RESCHED)
158
159/* flags to check in __switch_to() */
160#define _TIF_WORK_CTXSW \
161 (_TIF_IO_BITMAP|_TIF_DEBUGCTLMSR|_TIF_DS_AREA_MSR|_TIF_BTS_TRACE_TS|_TIF_NOTSC)
162#define _TIF_WORK_CTXSW_PREV _TIF_WORK_CTXSW
163#define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW|_TIF_DEBUG)
164
165#define PREEMPT_ACTIVE 0x10000000
166
167/*
168 * Thread-synchronous status.
169 *
170 * This is different from the flags in that nobody else
171 * ever touches our thread-synchronous status, so we don't
172 * have to worry about atomic accesses.
173 */
174#define TS_USEDFPU 0x0001 /* FPU was used by this task
175 this quantum (SMP) */
176#define TS_COMPAT 0x0002 /* 32bit syscall active */
177#define TS_POLLING 0x0004 /* true if in idle loop
178 and not sleeping */
179#define TS_RESTORE_SIGMASK 0x0008 /* restore signal mask in do_signal() */
180
181#define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING)
182
183#ifndef __ASSEMBLY__
184#define HAVE_SET_RESTORE_SIGMASK 1
185static inline void set_restore_sigmask(void)
186{
187 struct thread_info *ti = current_thread_info();
188 ti->status |= TS_RESTORE_SIGMASK;
189 set_bit(TIF_SIGPENDING, &ti->flags);
190}
191#endif /* !__ASSEMBLY__ */
192
193#endif /* __KERNEL__ */
194
195#endif /* _ASM_THREAD_INFO_H */
diff --git a/include/asm-x86/unistd_64.h b/include/asm-x86/unistd_64.h
index fe26e36d0f51..9c1a4a3470d9 100644
--- a/include/asm-x86/unistd_64.h
+++ b/include/asm-x86/unistd_64.h
@@ -290,7 +290,7 @@ __SYSCALL(__NR_rt_sigtimedwait, sys_rt_sigtimedwait)
290#define __NR_rt_sigqueueinfo 129 290#define __NR_rt_sigqueueinfo 129
291__SYSCALL(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo) 291__SYSCALL(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo)
292#define __NR_rt_sigsuspend 130 292#define __NR_rt_sigsuspend 130
293__SYSCALL(__NR_rt_sigsuspend, stub_rt_sigsuspend) 293__SYSCALL(__NR_rt_sigsuspend, sys_rt_sigsuspend)
294#define __NR_sigaltstack 131 294#define __NR_sigaltstack 131
295__SYSCALL(__NR_sigaltstack, stub_sigaltstack) 295__SYSCALL(__NR_sigaltstack, stub_sigaltstack)
296#define __NR_utime 132 296#define __NR_utime 132
diff --git a/include/asm-x86/vm86.h b/include/asm-x86/vm86.h
index 074b357146df..5ce351325e01 100644
--- a/include/asm-x86/vm86.h
+++ b/include/asm-x86/vm86.h
@@ -14,12 +14,6 @@
14 14
15#include <asm/processor-flags.h> 15#include <asm/processor-flags.h>
16 16
17#ifdef CONFIG_VM86
18#define X86_VM_MASK X86_EFLAGS_VM
19#else
20#define X86_VM_MASK 0 /* No VM86 support */
21#endif
22
23#define BIOSSEG 0x0f000 17#define BIOSSEG 0x0f000
24 18
25#define CPU_086 0 19#define CPU_086 0
@@ -121,7 +115,6 @@ struct vm86plus_info_struct {
121 unsigned long is_vm86pus:1; /* for vm86 internal use */ 115 unsigned long is_vm86pus:1; /* for vm86 internal use */
122 unsigned char vm86dbg_intxxtab[32]; /* for debugger */ 116 unsigned char vm86dbg_intxxtab[32]; /* for debugger */
123}; 117};
124
125struct vm86plus_struct { 118struct vm86plus_struct {
126 struct vm86_regs regs; 119 struct vm86_regs regs;
127 unsigned long flags; 120 unsigned long flags;
@@ -133,6 +126,9 @@ struct vm86plus_struct {
133}; 126};
134 127
135#ifdef __KERNEL__ 128#ifdef __KERNEL__
129
130#include <asm/ptrace.h>
131
136/* 132/*
137 * This is the (kernel) stack-layout when we have done a "SAVE_ALL" from vm86 133 * This is the (kernel) stack-layout when we have done a "SAVE_ALL" from vm86
138 * mode - the main change is that the old segment descriptors aren't 134 * mode - the main change is that the old segment descriptors aren't
@@ -141,7 +137,6 @@ struct vm86plus_struct {
141 * at the end of the structure. Look at ptrace.h to see the "normal" 137 * at the end of the structure. Look at ptrace.h to see the "normal"
142 * setup. For user space layout see 'struct vm86_regs' above. 138 * setup. For user space layout see 'struct vm86_regs' above.
143 */ 139 */
144#include <asm/ptrace.h>
145 140
146struct kernel_vm86_regs { 141struct kernel_vm86_regs {
147/* 142/*
diff --git a/include/asm-x86/xen/hypercall.h b/include/asm-x86/xen/hypercall.h
index c2ccd997ed35..2a4f9b41d684 100644
--- a/include/asm-x86/xen/hypercall.h
+++ b/include/asm-x86/xen/hypercall.h
@@ -176,9 +176,9 @@ HYPERVISOR_fpu_taskswitch(int set)
176} 176}
177 177
178static inline int 178static inline int
179HYPERVISOR_sched_op(int cmd, unsigned long arg) 179HYPERVISOR_sched_op(int cmd, void *arg)
180{ 180{
181 return _hypercall2(int, sched_op, cmd, arg); 181 return _hypercall2(int, sched_op_new, cmd, arg);
182} 182}
183 183
184static inline long 184static inline long
@@ -315,6 +315,13 @@ HYPERVISOR_nmi_op(unsigned long op, unsigned long arg)
315} 315}
316 316
317static inline void 317static inline void
318MULTI_fpu_taskswitch(struct multicall_entry *mcl, int set)
319{
320 mcl->op = __HYPERVISOR_fpu_taskswitch;
321 mcl->args[0] = set;
322}
323
324static inline void
318MULTI_update_va_mapping(struct multicall_entry *mcl, unsigned long va, 325MULTI_update_va_mapping(struct multicall_entry *mcl, unsigned long va,
319 pte_t new_val, unsigned long flags) 326 pte_t new_val, unsigned long flags)
320{ 327{
diff --git a/include/asm-x86/xen/page.h b/include/asm-x86/xen/page.h
index baf3a4dce28c..377c04591c15 100644
--- a/include/asm-x86/xen/page.h
+++ b/include/asm-x86/xen/page.h
@@ -26,15 +26,20 @@ typedef struct xpaddr {
26#define FOREIGN_FRAME_BIT (1UL<<31) 26#define FOREIGN_FRAME_BIT (1UL<<31)
27#define FOREIGN_FRAME(m) ((m) | FOREIGN_FRAME_BIT) 27#define FOREIGN_FRAME(m) ((m) | FOREIGN_FRAME_BIT)
28 28
29extern unsigned long *phys_to_machine_mapping; 29/* Maximum amount of memory we can handle in a domain in pages */
30#define MAX_DOMAIN_PAGES \
31 ((unsigned long)((u64)CONFIG_XEN_MAX_DOMAIN_MEMORY * 1024 * 1024 * 1024 / PAGE_SIZE))
32
33
34extern unsigned long get_phys_to_machine(unsigned long pfn);
35extern void set_phys_to_machine(unsigned long pfn, unsigned long mfn);
30 36
31static inline unsigned long pfn_to_mfn(unsigned long pfn) 37static inline unsigned long pfn_to_mfn(unsigned long pfn)
32{ 38{
33 if (xen_feature(XENFEAT_auto_translated_physmap)) 39 if (xen_feature(XENFEAT_auto_translated_physmap))
34 return pfn; 40 return pfn;
35 41
36 return phys_to_machine_mapping[(unsigned int)(pfn)] & 42 return get_phys_to_machine(pfn) & ~FOREIGN_FRAME_BIT;
37 ~FOREIGN_FRAME_BIT;
38} 43}
39 44
40static inline int phys_to_machine_mapping_valid(unsigned long pfn) 45static inline int phys_to_machine_mapping_valid(unsigned long pfn)
@@ -42,7 +47,7 @@ static inline int phys_to_machine_mapping_valid(unsigned long pfn)
42 if (xen_feature(XENFEAT_auto_translated_physmap)) 47 if (xen_feature(XENFEAT_auto_translated_physmap))
43 return 1; 48 return 1;
44 49
45 return (phys_to_machine_mapping[pfn] != INVALID_P2M_ENTRY); 50 return get_phys_to_machine(pfn) != INVALID_P2M_ENTRY;
46} 51}
47 52
48static inline unsigned long mfn_to_pfn(unsigned long mfn) 53static inline unsigned long mfn_to_pfn(unsigned long mfn)
@@ -106,20 +111,12 @@ static inline unsigned long mfn_to_local_pfn(unsigned long mfn)
106 unsigned long pfn = mfn_to_pfn(mfn); 111 unsigned long pfn = mfn_to_pfn(mfn);
107 if ((pfn < max_mapnr) 112 if ((pfn < max_mapnr)
108 && !xen_feature(XENFEAT_auto_translated_physmap) 113 && !xen_feature(XENFEAT_auto_translated_physmap)
109 && (phys_to_machine_mapping[pfn] != mfn)) 114 && (get_phys_to_machine(pfn) != mfn))
110 return max_mapnr; /* force !pfn_valid() */ 115 return max_mapnr; /* force !pfn_valid() */
116 /* XXX fixme; not true with sparsemem */
111 return pfn; 117 return pfn;
112} 118}
113 119
114static inline void set_phys_to_machine(unsigned long pfn, unsigned long mfn)
115{
116 if (xen_feature(XENFEAT_auto_translated_physmap)) {
117 BUG_ON(pfn != mfn && mfn != INVALID_P2M_ENTRY);
118 return;
119 }
120 phys_to_machine_mapping[pfn] = mfn;
121}
122
123/* VIRT <-> MACHINE conversion */ 120/* VIRT <-> MACHINE conversion */
124#define virt_to_machine(v) (phys_to_machine(XPADDR(__pa(v)))) 121#define virt_to_machine(v) (phys_to_machine(XPADDR(__pa(v))))
125#define virt_to_mfn(v) (pfn_to_mfn(PFN_DOWN(__pa(v)))) 122#define virt_to_mfn(v) (pfn_to_mfn(PFN_DOWN(__pa(v))))
@@ -150,13 +147,9 @@ static inline pte_t __pte_ma(pteval_t x)
150 return (pte_t) { .pte = x }; 147 return (pte_t) { .pte = x };
151} 148}
152 149
153#ifdef CONFIG_X86_PAE
154#define pmd_val_ma(v) ((v).pmd) 150#define pmd_val_ma(v) ((v).pmd)
155#define pud_val_ma(v) ((v).pgd.pgd) 151#define pud_val_ma(v) ((v).pgd.pgd)
156#define __pmd_ma(x) ((pmd_t) { (x) } ) 152#define __pmd_ma(x) ((pmd_t) { (x) } )
157#else /* !X86_PAE */
158#define pmd_val_ma(v) ((v).pud.pgd.pgd)
159#endif /* CONFIG_X86_PAE */
160 153
161#define pgd_val_ma(x) ((x).pgd) 154#define pgd_val_ma(x) ((x).pgd)
162 155
diff --git a/include/asm-x86/xor_32.h b/include/asm-x86/xor_32.h
index 067b5c1835a3..921b45840449 100644
--- a/include/asm-x86/xor_32.h
+++ b/include/asm-x86/xor_32.h
@@ -1,3 +1,6 @@
1#ifndef ASM_X86__XOR_32_H
2#define ASM_X86__XOR_32_H
3
1/* 4/*
2 * Optimized RAID-5 checksumming functions for MMX and SSE. 5 * Optimized RAID-5 checksumming functions for MMX and SSE.
3 * 6 *
@@ -881,3 +884,5 @@ do { \
881 deals with a load to a line that is being prefetched. */ 884 deals with a load to a line that is being prefetched. */
882#define XOR_SELECT_TEMPLATE(FASTEST) \ 885#define XOR_SELECT_TEMPLATE(FASTEST) \
883 (cpu_has_xmm ? &xor_block_pIII_sse : FASTEST) 886 (cpu_has_xmm ? &xor_block_pIII_sse : FASTEST)
887
888#endif /* ASM_X86__XOR_32_H */
diff --git a/include/asm-x86/xor_64.h b/include/asm-x86/xor_64.h
index 24957e39ac8a..2d3a18de295b 100644
--- a/include/asm-x86/xor_64.h
+++ b/include/asm-x86/xor_64.h
@@ -1,3 +1,6 @@
1#ifndef ASM_X86__XOR_64_H
2#define ASM_X86__XOR_64_H
3
1/* 4/*
2 * Optimized RAID-5 checksumming functions for MMX and SSE. 5 * Optimized RAID-5 checksumming functions for MMX and SSE.
3 * 6 *
@@ -354,3 +357,5 @@ do { \
354 We may also be able to load into the L1 only depending on how the cpu 357 We may also be able to load into the L1 only depending on how the cpu
355 deals with a load to a line that is being prefetched. */ 358 deals with a load to a line that is being prefetched. */
356#define XOR_SELECT_TEMPLATE(FASTEST) (&xor_block_sse) 359#define XOR_SELECT_TEMPLATE(FASTEST) (&xor_block_sse)
360
361#endif /* ASM_X86__XOR_64_H */
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 93b98856007a..71d70d1fbce2 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -166,6 +166,9 @@ unifdef-y += acct.h
166unifdef-y += adb.h 166unifdef-y += adb.h
167unifdef-y += adfs_fs.h 167unifdef-y += adfs_fs.h
168unifdef-y += agpgart.h 168unifdef-y += agpgart.h
169ifneq ($(wildcard $(srctree)/include/asm-$(SRCARCH)/a.out.h),)
170unifdef-y += a.out.h
171endif
169unifdef-y += apm_bios.h 172unifdef-y += apm_bios.h
170unifdef-y += atalk.h 173unifdef-y += atalk.h
171unifdef-y += atmdev.h 174unifdef-y += atmdev.h
diff --git a/include/linux/a.out.h b/include/linux/a.out.h
index 208f4e8ed304..e86dfca44589 100644
--- a/include/linux/a.out.h
+++ b/include/linux/a.out.h
@@ -1,8 +1,6 @@
1#ifndef __A_OUT_GNU_H__ 1#ifndef __A_OUT_GNU_H__
2#define __A_OUT_GNU_H__ 2#define __A_OUT_GNU_H__
3 3
4#ifdef CONFIG_ARCH_SUPPORTS_AOUT
5
6#define __GNU_EXEC_MACROS__ 4#define __GNU_EXEC_MACROS__
7 5
8#ifndef __STRUCT_EXEC_OVERRIDE__ 6#ifndef __STRUCT_EXEC_OVERRIDE__
@@ -277,10 +275,4 @@ struct relocation_info
277#endif /* no N_RELOCATION_INFO_DECLARED. */ 275#endif /* no N_RELOCATION_INFO_DECLARED. */
278 276
279#endif /*__ASSEMBLY__ */ 277#endif /*__ASSEMBLY__ */
280#else /* CONFIG_ARCH_SUPPORTS_AOUT */
281#ifndef __ASSEMBLY__
282struct exec {
283};
284#endif
285#endif /* CONFIG_ARCH_SUPPORTS_AOUT */
286#endif /* __A_OUT_GNU_H__ */ 278#endif /* __A_OUT_GNU_H__ */
diff --git a/include/linux/agp_backend.h b/include/linux/agp_backend.h
index 661d90d6cf7c..972b12bcfb36 100644
--- a/include/linux/agp_backend.h
+++ b/include/linux/agp_backend.h
@@ -30,14 +30,6 @@
30#ifndef _AGP_BACKEND_H 30#ifndef _AGP_BACKEND_H
31#define _AGP_BACKEND_H 1 31#define _AGP_BACKEND_H 1
32 32
33#ifndef TRUE
34#define TRUE 1
35#endif
36
37#ifndef FALSE
38#define FALSE 0
39#endif
40
41enum chipset_type { 33enum chipset_type {
42 NOT_SUPPORTED, 34 NOT_SUPPORTED,
43 SUPPORTED, 35 SUPPORTED,
@@ -57,7 +49,7 @@ struct agp_kern_info {
57 size_t aper_size; 49 size_t aper_size;
58 int max_memory; /* In pages */ 50 int max_memory; /* In pages */
59 int current_memory; 51 int current_memory;
60 int cant_use_aperture; 52 bool cant_use_aperture;
61 unsigned long page_mask; 53 unsigned long page_mask;
62 struct vm_operations_struct *vm_ops; 54 struct vm_operations_struct *vm_ops;
63}; 55};
@@ -83,9 +75,9 @@ struct agp_memory {
83 off_t pg_start; 75 off_t pg_start;
84 u32 type; 76 u32 type;
85 u32 physical; 77 u32 physical;
86 u8 is_bound; 78 bool is_bound;
87 u8 is_flushed; 79 bool is_flushed;
88 u8 vmalloc_flag; 80 bool vmalloc_flag;
89}; 81};
90 82
91#define AGP_NORMAL_MEMORY 0 83#define AGP_NORMAL_MEMORY 0
diff --git a/include/linux/agpgart.h b/include/linux/agpgart.h
index 62aef589eb94..c8fdb6e658e1 100644
--- a/include/linux/agpgart.h
+++ b/include/linux/agpgart.h
@@ -206,8 +206,8 @@ struct agp_front_data {
206 struct agp_controller *current_controller; 206 struct agp_controller *current_controller;
207 struct agp_controller *controllers; 207 struct agp_controller *controllers;
208 struct agp_file_private *file_priv_list; 208 struct agp_file_private *file_priv_list;
209 u8 used_by_controller; 209 bool used_by_controller;
210 u8 backend_acquired; 210 bool backend_acquired;
211}; 211};
212 212
213#endif /* __KERNEL__ */ 213#endif /* __KERNEL__ */
diff --git a/include/linux/audit.h b/include/linux/audit.h
index 63c3bb98558f..8b82974bdc12 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -571,7 +571,7 @@ extern void audit_log_lost(const char *message);
571extern int audit_update_lsm_rules(void); 571extern int audit_update_lsm_rules(void);
572 572
573 /* Private API (for audit.c only) */ 573 /* Private API (for audit.c only) */
574extern int audit_filter_user(struct netlink_skb_parms *cb, int type); 574extern int audit_filter_user(struct netlink_skb_parms *cb);
575extern int audit_filter_type(int type); 575extern int audit_filter_type(int type);
576extern int audit_receive_filter(int type, int pid, int uid, int seq, 576extern int audit_receive_filter(int type, int pid, int uid, int seq,
577 void *data, size_t datasz, uid_t loginuid, 577 void *data, size_t datasz, uid_t loginuid,
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
index 6a5dbdc8a7dc..686895bacd9d 100644
--- a/include/linux/bootmem.h
+++ b/include/linux/bootmem.h
@@ -94,7 +94,7 @@ extern unsigned long init_bootmem_node(pg_data_t *pgdat,
94 unsigned long freepfn, 94 unsigned long freepfn,
95 unsigned long startpfn, 95 unsigned long startpfn,
96 unsigned long endpfn); 96 unsigned long endpfn);
97extern void reserve_bootmem_node(pg_data_t *pgdat, 97extern int reserve_bootmem_node(pg_data_t *pgdat,
98 unsigned long physaddr, 98 unsigned long physaddr,
99 unsigned long size, 99 unsigned long size,
100 int flags); 100 int flags);
diff --git a/include/linux/capability.h b/include/linux/capability.h
index fa830f8de032..02673846d205 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -501,6 +501,8 @@ extern const kernel_cap_t __cap_empty_set;
501extern const kernel_cap_t __cap_full_set; 501extern const kernel_cap_t __cap_full_set;
502extern const kernel_cap_t __cap_init_eff_set; 502extern const kernel_cap_t __cap_init_eff_set;
503 503
504kernel_cap_t cap_set_effective(const kernel_cap_t pE_new);
505
504int capable(int cap); 506int capable(int cap);
505int __capable(struct task_struct *t, int cap); 507int __capable(struct task_struct *t, int cap);
506 508
diff --git a/include/linux/cfag12864b.h b/include/linux/cfag12864b.h
index 1605dd8aa646..6f9f19d66591 100644
--- a/include/linux/cfag12864b.h
+++ b/include/linux/cfag12864b.h
@@ -4,7 +4,7 @@
4 * Description: cfag12864b LCD driver header 4 * Description: cfag12864b LCD driver header
5 * License: GPLv2 5 * License: GPLv2
6 * 6 *
7 * Author: Copyright (C) Miguel Ojeda Sandonis <maxextreme@gmail.com> 7 * Author: Copyright (C) Miguel Ojeda Sandonis
8 * Date: 2006-10-12 8 * Date: 2006-10-12
9 * 9 *
10 * This program is free software; you can redistribute it and/or modify 10 * This program is free software; you can redistribute it and/or modify
diff --git a/include/linux/console.h b/include/linux/console.h
index a4f27fbdf549..248e6e3b9b73 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -108,6 +108,8 @@ struct console {
108 struct console *next; 108 struct console *next;
109}; 109};
110 110
111extern int console_set_on_cmdline;
112
111extern int add_preferred_console(char *name, int idx, char *options); 113extern int add_preferred_console(char *name, int idx, char *options);
112extern int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options); 114extern int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options);
113extern void register_console(struct console *); 115extern void register_console(struct console *);
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index 5df3db58fcc6..c24875bd9c5b 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -353,6 +353,10 @@ static inline void __cpus_fold(cpumask_t *dstp, const cpumask_t *origp,
353 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask) 353 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
354#endif /* NR_CPUS */ 354#endif /* NR_CPUS */
355 355
356#define next_cpu_nr(n, src) next_cpu(n, src)
357#define cpus_weight_nr(cpumask) cpus_weight(cpumask)
358#define for_each_cpu_mask_nr(cpu, mask) for_each_cpu_mask(cpu, mask)
359
356/* 360/*
357 * The following particular system cpumasks and operations manage 361 * The following particular system cpumasks and operations manage
358 * possible, present and online cpus. Each of them is a fixed size 362 * possible, present and online cpus. Each of them is a fixed size
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index 2a6639407c80..d982eb89c77d 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -300,7 +300,7 @@ extern int d_validate(struct dentry *, struct dentry *);
300extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); 300extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...);
301 301
302extern char *__d_path(const struct path *path, struct path *root, char *, int); 302extern char *__d_path(const struct path *path, struct path *root, char *, int);
303extern char *d_path(struct path *, char *, int); 303extern char *d_path(const struct path *, char *, int);
304extern char *dentry_path(struct dentry *, char *, int); 304extern char *dentry_path(struct dentry *, char *, int);
305 305
306/* Allocation counts.. */ 306/* Allocation counts.. */
diff --git a/include/linux/debug_locks.h b/include/linux/debug_locks.h
index f4a5871767f5..4aaa4afb1cb9 100644
--- a/include/linux/debug_locks.h
+++ b/include/linux/debug_locks.h
@@ -1,6 +1,8 @@
1#ifndef __LINUX_DEBUG_LOCKING_H 1#ifndef __LINUX_DEBUG_LOCKING_H
2#define __LINUX_DEBUG_LOCKING_H 2#define __LINUX_DEBUG_LOCKING_H
3 3
4#include <linux/kernel.h>
5
4struct task_struct; 6struct task_struct;
5 7
6extern int debug_locks; 8extern int debug_locks;
@@ -11,14 +13,6 @@ extern int debug_locks_silent;
11 */ 13 */
12extern int debug_locks_off(void); 14extern int debug_locks_off(void);
13 15
14/*
15 * In the debug case we carry the caller's instruction pointer into
16 * other functions, but we dont want the function argument overhead
17 * in the nondebug case - hence these macros:
18 */
19#define _RET_IP_ (unsigned long)__builtin_return_address(0)
20#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
21
22#define DEBUG_LOCKS_WARN_ON(c) \ 16#define DEBUG_LOCKS_WARN_ON(c) \
23({ \ 17({ \
24 int __ret = 0; \ 18 int __ret = 0; \
diff --git a/include/linux/firmware.h b/include/linux/firmware.h
index 4d10c7328d2d..6c7eff2ebada 100644
--- a/include/linux/firmware.h
+++ b/include/linux/firmware.h
@@ -13,7 +13,7 @@ struct firmware {
13 13
14struct device; 14struct device;
15 15
16#if defined(CONFIG_FW_LOADER) || defined(CONFIG_FW_LOADER_MODULE) 16#if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE))
17int request_firmware(const struct firmware **fw, const char *name, 17int request_firmware(const struct firmware **fw, const char *name,
18 struct device *device); 18 struct device *device);
19int request_firmware_nowait( 19int request_firmware_nowait(
diff --git a/include/linux/fs.h b/include/linux/fs.h
index d490779f18d9..d8e2762ed14d 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -83,6 +83,7 @@ extern int dir_notify_enable;
83#define READ_SYNC (READ | (1 << BIO_RW_SYNC)) 83#define READ_SYNC (READ | (1 << BIO_RW_SYNC))
84#define READ_META (READ | (1 << BIO_RW_META)) 84#define READ_META (READ | (1 << BIO_RW_META))
85#define WRITE_SYNC (WRITE | (1 << BIO_RW_SYNC)) 85#define WRITE_SYNC (WRITE | (1 << BIO_RW_SYNC))
86#define SWRITE_SYNC (SWRITE | (1 << BIO_RW_SYNC))
86#define WRITE_BARRIER ((1 << BIO_RW) | (1 << BIO_RW_BARRIER)) 87#define WRITE_BARRIER ((1 << BIO_RW) | (1 << BIO_RW_BARRIER))
87 88
88#define SEL_IN 1 89#define SEL_IN 1
@@ -894,8 +895,6 @@ static inline int file_check_writeable(struct file *filp)
894typedef struct files_struct *fl_owner_t; 895typedef struct files_struct *fl_owner_t;
895 896
896struct file_lock_operations { 897struct file_lock_operations {
897 void (*fl_insert)(struct file_lock *); /* lock insertion callback */
898 void (*fl_remove)(struct file_lock *); /* lock removal callback */
899 void (*fl_copy_lock)(struct file_lock *, struct file_lock *); 898 void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
900 void (*fl_release_private)(struct file_lock *); 899 void (*fl_release_private)(struct file_lock *);
901}; 900};
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index fb9af6a0fe9c..8dc730132192 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -171,7 +171,7 @@ struct i2c_client {
171 struct i2c_adapter *adapter; /* the adapter we sit on */ 171 struct i2c_adapter *adapter; /* the adapter we sit on */
172 struct i2c_driver *driver; /* and our access routines */ 172 struct i2c_driver *driver; /* and our access routines */
173 struct device dev; /* the device structure */ 173 struct device dev; /* the device structure */
174 int irq; /* irq issued by device (or -1) */ 174 int irq; /* irq issued by device */
175 struct list_head list; /* DEPRECATED */ 175 struct list_head list; /* DEPRECATED */
176 struct completion released; 176 struct completion released;
177}; 177};
diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h
index f1fbe9c930d7..d4efe4014705 100644
--- a/include/linux/if_tunnel.h
+++ b/include/linux/if_tunnel.h
@@ -41,7 +41,7 @@ struct ip_tunnel_prl {
41 __u16 __reserved; 41 __u16 __reserved;
42 __u32 datalen; 42 __u32 datalen;
43 __u32 __reserved2; 43 __u32 __reserved2;
44 void __user *data; 44 /* data follows */
45}; 45};
46 46
47/* PRL flags */ 47/* PRL flags */
diff --git a/include/linux/inet_lro.h b/include/linux/inet_lro.h
index 80335b7d77c5..c4335faebb63 100644
--- a/include/linux/inet_lro.h
+++ b/include/linux/inet_lro.h
@@ -84,7 +84,11 @@ struct net_lro_mgr {
84 from received packets and eth protocol 84 from received packets and eth protocol
85 is still ETH_P_8021Q */ 85 is still ETH_P_8021Q */
86 86
87 u32 ip_summed; /* Set in non generated SKBs in page mode */ 87 /*
88 * Set for generated SKBs that are not added to
89 * the frag list in fragmented mode
90 */
91 u32 ip_summed;
88 u32 ip_summed_aggr; /* Set in aggregated SKBs: CHECKSUM_UNNECESSARY 92 u32 ip_summed_aggr; /* Set in aggregated SKBs: CHECKSUM_UNNECESSARY
89 * or CHECKSUM_NONE */ 93 * or CHECKSUM_NONE */
90 94
diff --git a/include/linux/input.h b/include/linux/input.h
index e075c4b762fb..d150c57e5f0a 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -534,8 +534,8 @@ struct input_absinfo {
534 534
535#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */ 535#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */
536#define KEY_FRAMEFORWARD 0x1b5 536#define KEY_FRAMEFORWARD 0x1b5
537
538#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */ 537#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */
538#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */
539 539
540#define KEY_DEL_EOL 0x1c0 540#define KEY_DEL_EOL 0x1c0
541#define KEY_DEL_EOS 0x1c1 541#define KEY_DEL_EOS 0x1c1
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 792bf0aa779b..2e70006c7fa8 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -46,6 +46,9 @@ extern const char linux_proc_banner[];
46#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) 46#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
47#define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) 47#define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y))
48 48
49#define _RET_IP_ (unsigned long)__builtin_return_address(0)
50#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
51
49#ifdef CONFIG_LBD 52#ifdef CONFIG_LBD
50# include <asm/div64.h> 53# include <asm/div64.h>
51# define sector_div(a, b) do_div(a, b) 54# define sector_div(a, b) do_div(a, b)
diff --git a/include/linux/ks0108.h b/include/linux/ks0108.h
index a2c54acceb4e..cb311798e0bc 100644
--- a/include/linux/ks0108.h
+++ b/include/linux/ks0108.h
@@ -4,7 +4,7 @@
4 * Description: ks0108 LCD Controller driver header 4 * Description: ks0108 LCD Controller driver header
5 * License: GPLv2 5 * License: GPLv2
6 * 6 *
7 * Author: Copyright (C) Miguel Ojeda Sandonis <maxextreme@gmail.com> 7 * Author: Copyright (C) Miguel Ojeda Sandonis
8 * Date: 2006-10-31 8 * Date: 2006-10-31
9 * 9 *
10 * This program is free software; you can redistribute it and/or modify 10 * This program is free software; you can redistribute it and/or modify
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 092b1b25291d..de9d1df4bba2 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -33,6 +33,7 @@
33#define KVM_REQ_REPORT_TPR_ACCESS 2 33#define KVM_REQ_REPORT_TPR_ACCESS 2
34#define KVM_REQ_MMU_RELOAD 3 34#define KVM_REQ_MMU_RELOAD 3
35#define KVM_REQ_TRIPLE_FAULT 4 35#define KVM_REQ_TRIPLE_FAULT 4
36#define KVM_REQ_PENDING_TIMER 5
36 37
37struct kvm_vcpu; 38struct kvm_vcpu;
38extern struct kmem_cache *kvm_vcpu_cache; 39extern struct kmem_cache *kvm_vcpu_cache;
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index f27fd2009334..25f87102ab66 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -88,6 +88,8 @@ struct wireless_dev;
88#define NETDEV_TX_BUSY 1 /* driver tx path was busy*/ 88#define NETDEV_TX_BUSY 1 /* driver tx path was busy*/
89#define NETDEV_TX_LOCKED -1 /* driver tx lock was already taken */ 89#define NETDEV_TX_LOCKED -1 /* driver tx lock was already taken */
90 90
91#ifdef __KERNEL__
92
91/* 93/*
92 * Compute the worst case header length according to the protocols 94 * Compute the worst case header length according to the protocols
93 * used. 95 * used.
@@ -114,6 +116,8 @@ struct wireless_dev;
114#define MAX_HEADER (LL_MAX_HEADER + 48) 116#define MAX_HEADER (LL_MAX_HEADER + 48)
115#endif 117#endif
116 118
119#endif /* __KERNEL__ */
120
117struct net_device_subqueue 121struct net_device_subqueue
118{ 122{
119 /* Give a control state for each queue. This struct may contain 123 /* Give a control state for each queue. This struct may contain
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index f31debfac926..0d2a4e7012aa 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -157,6 +157,7 @@ PAGEFLAG(Active, active) __CLEARPAGEFLAG(Active, active)
157__PAGEFLAG(Slab, slab) 157__PAGEFLAG(Slab, slab)
158PAGEFLAG(Checked, owner_priv_1) /* Used by some filesystems */ 158PAGEFLAG(Checked, owner_priv_1) /* Used by some filesystems */
159PAGEFLAG(Pinned, owner_priv_1) TESTSCFLAG(Pinned, owner_priv_1) /* Xen */ 159PAGEFLAG(Pinned, owner_priv_1) TESTSCFLAG(Pinned, owner_priv_1) /* Xen */
160PAGEFLAG(SavePinned, dirty); /* Xen */
160PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) 161PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved)
161PAGEFLAG(Private, private) __CLEARPAGEFLAG(Private, private) 162PAGEFLAG(Private, private) __CLEARPAGEFLAG(Private, private)
162 __SETPAGEFLAG(Private, private) 163 __SETPAGEFLAG(Private, private)
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index eafc9d6d2b35..65953822c9cb 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1520,6 +1520,7 @@
1520#define PCI_DEVICE_ID_MARVELL_GT64260 0x6430 1520#define PCI_DEVICE_ID_MARVELL_GT64260 0x6430
1521#define PCI_DEVICE_ID_MARVELL_MV64360 0x6460 1521#define PCI_DEVICE_ID_MARVELL_MV64360 0x6460
1522#define PCI_DEVICE_ID_MARVELL_MV64460 0x6480 1522#define PCI_DEVICE_ID_MARVELL_MV64460 0x6480
1523#define PCI_DEVICE_ID_MARVELL_CAFE_SD 0x4101
1523 1524
1524#define PCI_VENDOR_ID_V3 0x11b0 1525#define PCI_VENDOR_ID_V3 0x11b0
1525#define PCI_DEVICE_ID_V3_V960 0x0001 1526#define PCI_DEVICE_ID_V3_V960 0x0001
diff --git a/include/linux/rculist.h b/include/linux/rculist.h
new file mode 100644
index 000000000000..bde4586f4382
--- /dev/null
+++ b/include/linux/rculist.h
@@ -0,0 +1,6 @@
1#ifndef _LINUX_RCULIST_H
2#define _LINUX_RCULIST_H
3
4#include <linux/list.h>
5
6#endif /* _LINUX_RCULIST_H */
diff --git a/include/linux/resume-trace.h b/include/linux/resume-trace.h
index f3f4f28c6960..c9ba2fdf807d 100644
--- a/include/linux/resume-trace.h
+++ b/include/linux/resume-trace.h
@@ -8,7 +8,7 @@ extern int pm_trace_enabled;
8 8
9struct device; 9struct device;
10extern void set_trace_device(struct device *); 10extern void set_trace_device(struct device *);
11extern void generate_resume_trace(void *tracedata, unsigned int user); 11extern void generate_resume_trace(const void *tracedata, unsigned int user);
12 12
13#define TRACE_DEVICE(dev) do { \ 13#define TRACE_DEVICE(dev) do { \
14 if (pm_trace_enabled) \ 14 if (pm_trace_enabled) \
diff --git a/include/linux/securebits.h b/include/linux/securebits.h
index c1f19dbceb05..92f09bdf1175 100644
--- a/include/linux/securebits.h
+++ b/include/linux/securebits.h
@@ -7,14 +7,15 @@
7 inheritance of root-permissions and suid-root executable under 7 inheritance of root-permissions and suid-root executable under
8 compatibility mode. We raise the effective and inheritable bitmasks 8 compatibility mode. We raise the effective and inheritable bitmasks
9 *of the executable file* if the effective uid of the new process is 9 *of the executable file* if the effective uid of the new process is
10 0. If the real uid is 0, we raise the inheritable bitmask of the 10 0. If the real uid is 0, we raise the effective (legacy) bit of the
11 executable file. */ 11 executable file. */
12#define SECURE_NOROOT 0 12#define SECURE_NOROOT 0
13#define SECURE_NOROOT_LOCKED 1 /* make bit-0 immutable */ 13#define SECURE_NOROOT_LOCKED 1 /* make bit-0 immutable */
14 14
15/* When set, setuid to/from uid 0 does not trigger capability-"fixes" 15/* When set, setuid to/from uid 0 does not trigger capability-"fixup".
16 to be compatible with old programs relying on set*uid to loose 16 When unset, to provide compatiblility with old programs relying on
17 privileges. When unset, setuid doesn't change privileges. */ 17 set*uid to gain/lose privilege, transitions to/from uid 0 cause
18 capabilities to be gained/lost. */
18#define SECURE_NO_SETUID_FIXUP 2 19#define SECURE_NO_SETUID_FIXUP 2
19#define SECURE_NO_SETUID_FIXUP_LOCKED 3 /* make bit-2 immutable */ 20#define SECURE_NO_SETUID_FIXUP_LOCKED 3 /* make bit-2 immutable */
20 21
@@ -26,10 +27,10 @@
26#define SECURE_KEEP_CAPS 4 27#define SECURE_KEEP_CAPS 4
27#define SECURE_KEEP_CAPS_LOCKED 5 /* make bit-4 immutable */ 28#define SECURE_KEEP_CAPS_LOCKED 5 /* make bit-4 immutable */
28 29
29/* Each securesetting is implemented using two bits. One bit specify 30/* Each securesetting is implemented using two bits. One bit specifies
30 whether the setting is on or off. The other bit specify whether the 31 whether the setting is on or off. The other bit specify whether the
31 setting is fixed or not. A setting which is fixed cannot be changed 32 setting is locked or not. A setting which is locked cannot be
32 from user-level. */ 33 changed from user-level. */
33#define issecure_mask(X) (1 << (X)) 34#define issecure_mask(X) (1 << (X))
34#define issecure(X) (issecure_mask(X) & current->securebits) 35#define issecure(X) (issecure_mask(X) & current->securebits)
35 36
diff --git a/include/linux/slab.h b/include/linux/slab.h
index c2ad35016599..9aa90a6f20e0 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * Written by Mark Hemment, 1996 (markhe@nextd.demon.co.uk). 2 * Written by Mark Hemment, 1996 (markhe@nextd.demon.co.uk).
3 * 3 *
4 * (C) SGI 2006, Christoph Lameter <clameter@sgi.com> 4 * (C) SGI 2006, Christoph Lameter
5 * Cleaned up and restructured to ease the addition of alternative 5 * Cleaned up and restructured to ease the addition of alternative
6 * implementations of SLAB allocators. 6 * implementations of SLAB allocators.
7 */ 7 */
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index 71e43a12ebbb..d117ea2825a9 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -4,7 +4,7 @@
4/* 4/*
5 * SLUB : A Slab allocator without object queues. 5 * SLUB : A Slab allocator without object queues.
6 * 6 *
7 * (C) 2007 SGI, Christoph Lameter <clameter@sgi.com> 7 * (C) 2007 SGI, Christoph Lameter
8 */ 8 */
9#include <linux/types.h> 9#include <linux/types.h>
10#include <linux/gfp.h> 10#include <linux/gfp.h>
@@ -137,10 +137,12 @@ static __always_inline int kmalloc_index(size_t size)
137 if (size <= KMALLOC_MIN_SIZE) 137 if (size <= KMALLOC_MIN_SIZE)
138 return KMALLOC_SHIFT_LOW; 138 return KMALLOC_SHIFT_LOW;
139 139
140#if KMALLOC_MIN_SIZE <= 64
140 if (size > 64 && size <= 96) 141 if (size > 64 && size <= 96)
141 return 1; 142 return 1;
142 if (size > 128 && size <= 192) 143 if (size > 128 && size <= 192)
143 return 2; 144 return 2;
145#endif
144 if (size <= 8) return 3; 146 if (size <= 8) return 3;
145 if (size <= 16) return 4; 147 if (size <= 16) return 4;
146 if (size <= 32) return 5; 148 if (size <= 32) return 5;
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 06d3e6eb9ca8..917707e6151d 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -66,8 +66,7 @@ struct thermal_cooling_device {
66 ((long)t-2732+5)/10 : ((long)t-2732-5)/10) 66 ((long)t-2732+5)/10 : ((long)t-2732-5)/10)
67#define CELSIUS_TO_KELVIN(t) ((t)*10+2732) 67#define CELSIUS_TO_KELVIN(t) ((t)*10+2732)
68 68
69#if defined(CONFIG_HWMON) || \ 69#if defined(CONFIG_THERMAL_HWMON)
70 (defined(CONFIG_HWMON_MODULE) && defined(CONFIG_THERMAL_MODULE))
71/* thermal zone devices with the same type share one hwmon device */ 70/* thermal zone devices with the same type share one hwmon device */
72struct thermal_hwmon_device { 71struct thermal_hwmon_device {
73 char type[THERMAL_NAME_LENGTH]; 72 char type[THERMAL_NAME_LENGTH];
@@ -94,8 +93,7 @@ struct thermal_zone_device {
94 struct idr idr; 93 struct idr idr;
95 struct mutex lock; /* protect cooling devices list */ 94 struct mutex lock; /* protect cooling devices list */
96 struct list_head node; 95 struct list_head node;
97#if defined(CONFIG_HWMON) || \ 96#if defined(CONFIG_THERMAL_HWMON)
98 (defined(CONFIG_HWMON_MODULE) && defined(CONFIG_THERMAL_MODULE))
99 struct list_head hwmon_node; 97 struct list_head hwmon_node;
100 struct thermal_hwmon_device *hwmon; 98 struct thermal_hwmon_device *hwmon;
101 struct thermal_hwmon_attr temp_input; /* hwmon sys attr */ 99 struct thermal_hwmon_attr temp_input; /* hwmon sys attr */
diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
index 59f1c0bd8f9c..d2a003586761 100644
--- a/include/linux/tty_driver.h
+++ b/include/linux/tty_driver.h
@@ -27,8 +27,7 @@
27 * This routine is called by the kernel to write a series of 27 * This routine is called by the kernel to write a series of
28 * characters to the tty device. The characters may come from 28 * characters to the tty device. The characters may come from
29 * user space or kernel space. This routine will return the 29 * user space or kernel space. This routine will return the
30 * number of characters actually accepted for writing. This 30 * number of characters actually accepted for writing.
31 * routine is mandatory.
32 * 31 *
33 * Optional: Required for writable devices. 32 * Optional: Required for writable devices.
34 * 33 *
@@ -134,7 +133,7 @@
134 * This routine notifies the tty driver that it should hangup the 133 * This routine notifies the tty driver that it should hangup the
135 * tty device. 134 * tty device.
136 * 135 *
137 * Required: 136 * Optional:
138 * 137 *
139 * void (*break_ctl)(struct tty_stuct *tty, int state); 138 * void (*break_ctl)(struct tty_stuct *tty, int state);
140 * 139 *
diff --git a/include/media/cx25840.h b/include/media/cx25840.h
index cd599ad29fb2..db431d513f2f 100644
--- a/include/media/cx25840.h
+++ b/include/media/cx25840.h
@@ -32,12 +32,16 @@ enum cx25840_video_input {
32 CX25840_COMPOSITE7, 32 CX25840_COMPOSITE7,
33 CX25840_COMPOSITE8, 33 CX25840_COMPOSITE8,
34 34
35 /* S-Video inputs consist of one luma input (In1-In4) ORed with one 35 /* S-Video inputs consist of one luma input (In1-In8) ORed with one
36 chroma input (In5-In8) */ 36 chroma input (In5-In8) */
37 CX25840_SVIDEO_LUMA1 = 0x10, 37 CX25840_SVIDEO_LUMA1 = 0x10,
38 CX25840_SVIDEO_LUMA2 = 0x20, 38 CX25840_SVIDEO_LUMA2 = 0x20,
39 CX25840_SVIDEO_LUMA3 = 0x30, 39 CX25840_SVIDEO_LUMA3 = 0x30,
40 CX25840_SVIDEO_LUMA4 = 0x40, 40 CX25840_SVIDEO_LUMA4 = 0x40,
41 CX25840_SVIDEO_LUMA5 = 0x50,
42 CX25840_SVIDEO_LUMA6 = 0x60,
43 CX25840_SVIDEO_LUMA7 = 0x70,
44 CX25840_SVIDEO_LUMA8 = 0x80,
41 CX25840_SVIDEO_CHROMA4 = 0x400, 45 CX25840_SVIDEO_CHROMA4 = 0x400,
42 CX25840_SVIDEO_CHROMA5 = 0x500, 46 CX25840_SVIDEO_CHROMA5 = 0x500,
43 CX25840_SVIDEO_CHROMA6 = 0x600, 47 CX25840_SVIDEO_CHROMA6 = 0x600,
diff --git a/include/media/ir-common.h b/include/media/ir-common.h
index bfee8be5d63f..b8e8aa91905a 100644
--- a/include/media/ir-common.h
+++ b/include/media/ir-common.h
@@ -146,6 +146,7 @@ extern IR_KEYTAB_TYPE ir_codes_behold_columbus[IR_KEYTAB_SIZE];
146extern IR_KEYTAB_TYPE ir_codes_pinnacle_pctv_hd[IR_KEYTAB_SIZE]; 146extern IR_KEYTAB_TYPE ir_codes_pinnacle_pctv_hd[IR_KEYTAB_SIZE];
147extern IR_KEYTAB_TYPE ir_codes_genius_tvgo_a11mce[IR_KEYTAB_SIZE]; 147extern IR_KEYTAB_TYPE ir_codes_genius_tvgo_a11mce[IR_KEYTAB_SIZE];
148extern IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE]; 148extern IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE];
149extern IR_KEYTAB_TYPE ir_codes_avermedia_a16d[IR_KEYTAB_SIZE];
149 150
150#endif 151#endif
151 152
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index 33f01ae08f76..859f7a6f6f67 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -40,9 +40,9 @@
40#define VFL_TYPE_VTX 3 40#define VFL_TYPE_VTX 3
41 41
42/* Video standard functions */ 42/* Video standard functions */
43extern char *v4l2_norm_to_name(v4l2_std_id id); 43extern const char *v4l2_norm_to_name(v4l2_std_id id);
44extern int v4l2_video_std_construct(struct v4l2_standard *vs, 44extern int v4l2_video_std_construct(struct v4l2_standard *vs,
45 int id, char *name); 45 int id, const char *name);
46/* Prints the ioctl in a human-readable format */ 46/* Prints the ioctl in a human-readable format */
47extern void v4l_printk_ioctl(unsigned int cmd); 47extern void v4l_printk_ioctl(unsigned int cmd);
48 48
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index e0a612bc9c4e..f422f7218e1c 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -367,6 +367,12 @@ static inline int ipv6_addr_any(const struct in6_addr *a)
367 a->s6_addr32[2] | a->s6_addr32[3] ) == 0); 367 a->s6_addr32[2] | a->s6_addr32[3] ) == 0);
368} 368}
369 369
370static inline int ipv6_addr_loopback(const struct in6_addr *a)
371{
372 return ((a->s6_addr32[0] | a->s6_addr32[1] |
373 a->s6_addr32[2] | (a->s6_addr32[3] ^ htonl(1))) == 0);
374}
375
370static inline int ipv6_addr_v4mapped(const struct in6_addr *a) 376static inline int ipv6_addr_v4mapped(const struct in6_addr *a)
371{ 377{
372 return ((a->s6_addr32[0] | a->s6_addr32[1] | 378 return ((a->s6_addr32[0] | a->s6_addr32[1] |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index dae3f9ec1154..bcd1623245cb 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -595,6 +595,15 @@ enum ieee80211_key_alg {
595 ALG_CCMP, 595 ALG_CCMP,
596}; 596};
597 597
598/**
599 * enum ieee80211_key_len - key length
600 * @WEP40: WEP 5 byte long key
601 * @WEP104: WEP 13 byte long key
602 */
603enum ieee80211_key_len {
604 LEN_WEP40 = 5,
605 LEN_WEP104 = 13,
606};
598 607
599/** 608/**
600 * enum ieee80211_key_flags - key flags 609 * enum ieee80211_key_flags - key flags
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
index aa540e6be502..d9dd0f707296 100644
--- a/include/net/net_namespace.h
+++ b/include/net/net_namespace.h
@@ -95,6 +95,11 @@ extern struct list_head net_namespace_list;
95#ifdef CONFIG_NET_NS 95#ifdef CONFIG_NET_NS
96extern void __put_net(struct net *net); 96extern void __put_net(struct net *net);
97 97
98static inline int net_alive(struct net *net)
99{
100 return net && atomic_read(&net->count);
101}
102
98static inline struct net *get_net(struct net *net) 103static inline struct net *get_net(struct net *net)
99{ 104{
100 atomic_inc(&net->count); 105 atomic_inc(&net->count);
@@ -125,6 +130,12 @@ int net_eq(const struct net *net1, const struct net *net2)
125 return net1 == net2; 130 return net1 == net2;
126} 131}
127#else 132#else
133
134static inline int net_alive(struct net *net)
135{
136 return 1;
137}
138
128static inline struct net *get_net(struct net *net) 139static inline struct net *get_net(struct net *net)
129{ 140{
130 return net; 141 return net;
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h
index f736e842977f..f80c0ed6d870 100644
--- a/include/net/netfilter/nf_conntrack_extend.h
+++ b/include/net/netfilter/nf_conntrack_extend.h
@@ -15,6 +15,7 @@ enum nf_ct_ext_id
15 15
16/* Extensions: optional stuff which isn't permanently in struct. */ 16/* Extensions: optional stuff which isn't permanently in struct. */
17struct nf_ct_ext { 17struct nf_ct_ext {
18 struct rcu_head rcu;
18 u8 offset[NF_CT_EXT_NUM]; 19 u8 offset[NF_CT_EXT_NUM];
19 u8 len; 20 u8 len;
20 char data[0]; 21 char data[0];
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index ab502ec1c61c..a87fc0312edc 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -178,7 +178,7 @@ extern struct Qdisc *qdisc_alloc(struct net_device *dev, struct Qdisc_ops *ops);
178extern struct Qdisc *qdisc_create_dflt(struct net_device *dev, 178extern struct Qdisc *qdisc_create_dflt(struct net_device *dev,
179 struct Qdisc_ops *ops, u32 parentid); 179 struct Qdisc_ops *ops, u32 parentid);
180extern void tcf_destroy(struct tcf_proto *tp); 180extern void tcf_destroy(struct tcf_proto *tp);
181extern void tcf_destroy_chain(struct tcf_proto *fl); 181extern void tcf_destroy_chain(struct tcf_proto **fl);
182 182
183static inline int __qdisc_enqueue_tail(struct sk_buff *skb, struct Qdisc *sch, 183static inline int __qdisc_enqueue_tail(struct sk_buff *skb, struct Qdisc *sch,
184 struct sk_buff_head *list) 184 struct sk_buff_head *list)
diff --git a/include/xen/events.h b/include/xen/events.h
index acd8e062c85f..67c4436554a9 100644
--- a/include/xen/events.h
+++ b/include/xen/events.h
@@ -32,6 +32,7 @@ void unbind_from_irqhandler(unsigned int irq, void *dev_id);
32 32
33void xen_send_IPI_one(unsigned int cpu, enum ipi_vector vector); 33void xen_send_IPI_one(unsigned int cpu, enum ipi_vector vector);
34int resend_irq_on_evtchn(unsigned int irq); 34int resend_irq_on_evtchn(unsigned int irq);
35void rebind_evtchn_irq(int evtchn, int irq);
35 36
36static inline void notify_remote_via_evtchn(int port) 37static inline void notify_remote_via_evtchn(int port)
37{ 38{
@@ -40,4 +41,7 @@ static inline void notify_remote_via_evtchn(int port)
40} 41}
41 42
42extern void notify_remote_via_irq(int irq); 43extern void notify_remote_via_irq(int irq);
44
45extern void xen_irq_resume(void);
46
43#endif /* _XEN_EVENTS_H */ 47#endif /* _XEN_EVENTS_H */
diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h
index 466204846121..a40f1cd91be1 100644
--- a/include/xen/grant_table.h
+++ b/include/xen/grant_table.h
@@ -51,6 +51,9 @@ struct gnttab_free_callback {
51 u16 count; 51 u16 count;
52}; 52};
53 53
54int gnttab_suspend(void);
55int gnttab_resume(void);
56
54int gnttab_grant_foreign_access(domid_t domid, unsigned long frame, 57int gnttab_grant_foreign_access(domid_t domid, unsigned long frame,
55 int readonly); 58 int readonly);
56 59
diff --git a/include/xen/hvc-console.h b/include/xen/hvc-console.h
index 21c0ecfd786d..98b79bc404dd 100644
--- a/include/xen/hvc-console.h
+++ b/include/xen/hvc-console.h
@@ -3,4 +3,13 @@
3 3
4extern struct console xenboot_console; 4extern struct console xenboot_console;
5 5
6#ifdef CONFIG_HVC_XEN
7void xen_console_resume(void);
8#else
9static inline void xen_console_resume(void) { }
10#endif
11
12void xen_raw_console_write(const char *str);
13void xen_raw_printk(const char *fmt, ...);
14
6#endif /* XEN_HVC_CONSOLE_H */ 15#endif /* XEN_HVC_CONSOLE_H */
diff --git a/include/xen/interface/elfnote.h b/include/xen/interface/elfnote.h
index a64d3df5bd95..7a8262c375cc 100644
--- a/include/xen/interface/elfnote.h
+++ b/include/xen/interface/elfnote.h
@@ -120,6 +120,26 @@
120 */ 120 */
121#define XEN_ELFNOTE_BSD_SYMTAB 11 121#define XEN_ELFNOTE_BSD_SYMTAB 11
122 122
123/*
124 * The lowest address the hypervisor hole can begin at (numeric).
125 *
126 * This must not be set higher than HYPERVISOR_VIRT_START. Its presence
127 * also indicates to the hypervisor that the kernel can deal with the
128 * hole starting at a higher address.
129 */
130#define XEN_ELFNOTE_HV_START_LOW 12
131
132/*
133 * List of maddr_t-sized mask/value pairs describing how to recognize
134 * (non-present) L1 page table entries carrying valid MFNs (numeric).
135 */
136#define XEN_ELFNOTE_L1_MFN_VALID 13
137
138/*
139 * Whether or not the guest supports cooperative suspend cancellation.
140 */
141#define XEN_ELFNOTE_SUSPEND_CANCEL 14
142
123#endif /* __XEN_PUBLIC_ELFNOTE_H__ */ 143#endif /* __XEN_PUBLIC_ELFNOTE_H__ */
124 144
125/* 145/*
diff --git a/include/xen/interface/features.h b/include/xen/interface/features.h
index d73228d16488..f51b6413b054 100644
--- a/include/xen/interface/features.h
+++ b/include/xen/interface/features.h
@@ -38,6 +38,9 @@
38 */ 38 */
39#define XENFEAT_pae_pgdir_above_4gb 4 39#define XENFEAT_pae_pgdir_above_4gb 4
40 40
41/* x86: Does this Xen host support the MMU_PT_UPDATE_PRESERVE_AD hypercall? */
42#define XENFEAT_mmu_pt_update_preserve_ad 5
43
41#define XENFEAT_NR_SUBMAPS 1 44#define XENFEAT_NR_SUBMAPS 1
42 45
43#endif /* __XEN_PUBLIC_FEATURES_H__ */ 46#endif /* __XEN_PUBLIC_FEATURES_H__ */
diff --git a/include/xen/interface/io/fbif.h b/include/xen/interface/io/fbif.h
index 5a934dd7796d..974a51ed9165 100644
--- a/include/xen/interface/io/fbif.h
+++ b/include/xen/interface/io/fbif.h
@@ -49,11 +49,27 @@ struct xenfb_update {
49 int32_t height; /* rect height */ 49 int32_t height; /* rect height */
50}; 50};
51 51
52/*
53 * Framebuffer resize notification event
54 * Capable backend sets feature-resize in xenstore.
55 */
56#define XENFB_TYPE_RESIZE 3
57
58struct xenfb_resize {
59 uint8_t type; /* XENFB_TYPE_RESIZE */
60 int32_t width; /* width in pixels */
61 int32_t height; /* height in pixels */
62 int32_t stride; /* stride in bytes */
63 int32_t depth; /* depth in bits */
64 int32_t offset; /* start offset within framebuffer */
65};
66
52#define XENFB_OUT_EVENT_SIZE 40 67#define XENFB_OUT_EVENT_SIZE 40
53 68
54union xenfb_out_event { 69union xenfb_out_event {
55 uint8_t type; 70 uint8_t type;
56 struct xenfb_update update; 71 struct xenfb_update update;
72 struct xenfb_resize resize;
57 char pad[XENFB_OUT_EVENT_SIZE]; 73 char pad[XENFB_OUT_EVENT_SIZE];
58}; 74};
59 75
@@ -105,15 +121,18 @@ struct xenfb_page {
105 * Each directory page holds PAGE_SIZE / sizeof(*pd) 121 * Each directory page holds PAGE_SIZE / sizeof(*pd)
106 * framebuffer pages, and can thus map up to PAGE_SIZE * 122 * framebuffer pages, and can thus map up to PAGE_SIZE *
107 * PAGE_SIZE / sizeof(*pd) bytes. With PAGE_SIZE == 4096 and 123 * PAGE_SIZE / sizeof(*pd) bytes. With PAGE_SIZE == 4096 and
108 * sizeof(unsigned long) == 4, that's 4 Megs. Two directory 124 * sizeof(unsigned long) == 4/8, that's 4 Megs 32 bit and 2
109 * pages should be enough for a while. 125 * Megs 64 bit. 256 directories give enough room for a 512
126 * Meg framebuffer with a max resolution of 12,800x10,240.
127 * Should be enough for a while with room leftover for
128 * expansion.
110 */ 129 */
111 unsigned long pd[2]; 130 unsigned long pd[256];
112}; 131};
113 132
114/* 133/*
115 * Wart: xenkbd needs to know resolution. Put it here until a better 134 * Wart: xenkbd needs to know default resolution. Put it here until a
116 * solution is found, but don't leak it to the backend. 135 * better solution is found, but don't leak it to the backend.
117 */ 136 */
118#ifdef __KERNEL__ 137#ifdef __KERNEL__
119#define XENFB_WIDTH 800 138#define XENFB_WIDTH 800
diff --git a/include/xen/interface/io/kbdif.h b/include/xen/interface/io/kbdif.h
index fb97f4284ffd..8066c7849fbe 100644
--- a/include/xen/interface/io/kbdif.h
+++ b/include/xen/interface/io/kbdif.h
@@ -49,6 +49,7 @@ struct xenkbd_motion {
49 uint8_t type; /* XENKBD_TYPE_MOTION */ 49 uint8_t type; /* XENKBD_TYPE_MOTION */
50 int32_t rel_x; /* relative X motion */ 50 int32_t rel_x; /* relative X motion */
51 int32_t rel_y; /* relative Y motion */ 51 int32_t rel_y; /* relative Y motion */
52 int32_t rel_z; /* relative Z motion (wheel) */
52}; 53};
53 54
54struct xenkbd_key { 55struct xenkbd_key {
@@ -61,6 +62,7 @@ struct xenkbd_position {
61 uint8_t type; /* XENKBD_TYPE_POS */ 62 uint8_t type; /* XENKBD_TYPE_POS */
62 int32_t abs_x; /* absolute X position (in FB pixels) */ 63 int32_t abs_x; /* absolute X position (in FB pixels) */
63 int32_t abs_y; /* absolute Y position (in FB pixels) */ 64 int32_t abs_y; /* absolute Y position (in FB pixels) */
65 int32_t rel_z; /* relative Z motion (wheel) */
64}; 66};
65 67
66#define XENKBD_IN_EVENT_SIZE 40 68#define XENKBD_IN_EVENT_SIZE 40
diff --git a/include/xen/interface/memory.h b/include/xen/interface/memory.h
index da768469aa92..af36ead16817 100644
--- a/include/xen/interface/memory.h
+++ b/include/xen/interface/memory.h
@@ -29,7 +29,7 @@ struct xen_memory_reservation {
29 * OUT: GMFN bases of extents that were allocated 29 * OUT: GMFN bases of extents that were allocated
30 * (NB. This command also updates the mach_to_phys translation table) 30 * (NB. This command also updates the mach_to_phys translation table)
31 */ 31 */
32 ulong extent_start; 32 GUEST_HANDLE(ulong) extent_start;
33 33
34 /* Number of extents, and size/alignment of each (2^extent_order pages). */ 34 /* Number of extents, and size/alignment of each (2^extent_order pages). */
35 unsigned long nr_extents; 35 unsigned long nr_extents;
@@ -50,6 +50,7 @@ struct xen_memory_reservation {
50 domid_t domid; 50 domid_t domid;
51 51
52}; 52};
53DEFINE_GUEST_HANDLE_STRUCT(xen_memory_reservation);
53 54
54/* 55/*
55 * Returns the maximum machine frame number of mapped RAM in this system. 56 * Returns the maximum machine frame number of mapped RAM in this system.
@@ -85,7 +86,7 @@ struct xen_machphys_mfn_list {
85 * any large discontiguities in the machine address space, 2MB gaps in 86 * any large discontiguities in the machine address space, 2MB gaps in
86 * the machphys table will be represented by an MFN base of zero. 87 * the machphys table will be represented by an MFN base of zero.
87 */ 88 */
88 ulong extent_start; 89 GUEST_HANDLE(ulong) extent_start;
89 90
90 /* 91 /*
91 * Number of extents written to the above array. This will be smaller 92 * Number of extents written to the above array. This will be smaller
@@ -93,6 +94,7 @@ struct xen_machphys_mfn_list {
93 */ 94 */
94 unsigned int nr_extents; 95 unsigned int nr_extents;
95}; 96};
97DEFINE_GUEST_HANDLE_STRUCT(xen_machphys_mfn_list);
96 98
97/* 99/*
98 * Sets the GPFN at which a particular page appears in the specified guest's 100 * Sets the GPFN at which a particular page appears in the specified guest's
@@ -115,6 +117,7 @@ struct xen_add_to_physmap {
115 /* GPFN where the source mapping page should appear. */ 117 /* GPFN where the source mapping page should appear. */
116 unsigned long gpfn; 118 unsigned long gpfn;
117}; 119};
120DEFINE_GUEST_HANDLE_STRUCT(xen_add_to_physmap);
118 121
119/* 122/*
120 * Translates a list of domain-specific GPFNs into MFNs. Returns a -ve error 123 * Translates a list of domain-specific GPFNs into MFNs. Returns a -ve error
@@ -129,13 +132,14 @@ struct xen_translate_gpfn_list {
129 unsigned long nr_gpfns; 132 unsigned long nr_gpfns;
130 133
131 /* List of GPFNs to translate. */ 134 /* List of GPFNs to translate. */
132 ulong gpfn_list; 135 GUEST_HANDLE(ulong) gpfn_list;
133 136
134 /* 137 /*
135 * Output list to contain MFN translations. May be the same as the input 138 * Output list to contain MFN translations. May be the same as the input
136 * list (in which case each input GPFN is overwritten with the output MFN). 139 * list (in which case each input GPFN is overwritten with the output MFN).
137 */ 140 */
138 ulong mfn_list; 141 GUEST_HANDLE(ulong) mfn_list;
139}; 142};
143DEFINE_GUEST_HANDLE_STRUCT(xen_translate_gpfn_list);
140 144
141#endif /* __XEN_PUBLIC_MEMORY_H__ */ 145#endif /* __XEN_PUBLIC_MEMORY_H__ */
diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h
index 9b018da48cf3..2befa3e2f1bc 100644
--- a/include/xen/interface/xen.h
+++ b/include/xen/interface/xen.h
@@ -10,6 +10,7 @@
10#define __XEN_PUBLIC_XEN_H__ 10#define __XEN_PUBLIC_XEN_H__
11 11
12#include <asm/xen/interface.h> 12#include <asm/xen/interface.h>
13#include <asm/pvclock-abi.h>
13 14
14/* 15/*
15 * XEN "SYSTEM CALLS" (a.k.a. HYPERCALLS). 16 * XEN "SYSTEM CALLS" (a.k.a. HYPERCALLS).
@@ -113,9 +114,14 @@
113 * ptr[:2] -- Machine address within the frame whose mapping to modify. 114 * ptr[:2] -- Machine address within the frame whose mapping to modify.
114 * The frame must belong to the FD, if one is specified. 115 * The frame must belong to the FD, if one is specified.
115 * val -- Value to write into the mapping entry. 116 * val -- Value to write into the mapping entry.
117 *
118 * ptr[1:0] == MMU_PT_UPDATE_PRESERVE_AD:
119 * As MMU_NORMAL_PT_UPDATE above, but A/D bits currently in the PTE are ORed
120 * with those in @val.
116 */ 121 */
117#define MMU_NORMAL_PT_UPDATE 0 /* checked '*ptr = val'. ptr is MA. */ 122#define MMU_NORMAL_PT_UPDATE 0 /* checked '*ptr = val'. ptr is MA. */
118#define MMU_MACHPHYS_UPDATE 1 /* ptr = MA of frame to modify entry for */ 123#define MMU_MACHPHYS_UPDATE 1 /* ptr = MA of frame to modify entry for */
124#define MMU_PT_UPDATE_PRESERVE_AD 2 /* atomically: *ptr = val | (*ptr&(A|D)) */
119 125
120/* 126/*
121 * MMU EXTENDED OPERATIONS 127 * MMU EXTENDED OPERATIONS
@@ -336,7 +342,7 @@ struct vcpu_info {
336 uint8_t evtchn_upcall_mask; 342 uint8_t evtchn_upcall_mask;
337 unsigned long evtchn_pending_sel; 343 unsigned long evtchn_pending_sel;
338 struct arch_vcpu_info arch; 344 struct arch_vcpu_info arch;
339 struct vcpu_time_info time; 345 struct pvclock_vcpu_time_info time;
340}; /* 64 bytes (x86) */ 346}; /* 64 bytes (x86) */
341 347
342/* 348/*
@@ -384,9 +390,7 @@ struct shared_info {
384 * Wallclock time: updated only by control software. Guests should base 390 * Wallclock time: updated only by control software. Guests should base
385 * their gettimeofday() syscall on this wallclock-base value. 391 * their gettimeofday() syscall on this wallclock-base value.
386 */ 392 */
387 uint32_t wc_version; /* Version counter: see vcpu_time_info_t. */ 393 struct pvclock_wall_clock wc;
388 uint32_t wc_sec; /* Secs 00:00:00 UTC, Jan 1, 1970. */
389 uint32_t wc_nsec; /* Nsecs 00:00:00 UTC, Jan 1, 1970. */
390 394
391 struct arch_shared_info arch; 395 struct arch_shared_info arch;
392 396
diff --git a/include/xen/xen-ops.h b/include/xen/xen-ops.h
index 10ddfe0142d0..a706d6a78960 100644
--- a/include/xen/xen-ops.h
+++ b/include/xen/xen-ops.h
@@ -5,4 +5,10 @@
5 5
6DECLARE_PER_CPU(struct vcpu_info *, xen_vcpu); 6DECLARE_PER_CPU(struct vcpu_info *, xen_vcpu);
7 7
8void xen_pre_suspend(void);
9void xen_post_suspend(int suspend_cancelled);
10
11void xen_mm_pin_all(void);
12void xen_mm_unpin_all(void);
13
8#endif /* INCLUDE_XEN_OPS_H */ 14#endif /* INCLUDE_XEN_OPS_H */
diff --git a/kernel/audit.c b/kernel/audit.c
index e8692a5748c2..e092f1c0ce30 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -738,7 +738,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
738 if (!audit_enabled && msg_type != AUDIT_USER_AVC) 738 if (!audit_enabled && msg_type != AUDIT_USER_AVC)
739 return 0; 739 return 0;
740 740
741 err = audit_filter_user(&NETLINK_CB(skb), msg_type); 741 err = audit_filter_user(&NETLINK_CB(skb));
742 if (err == 1) { 742 if (err == 1) {
743 err = 0; 743 err = 0;
744 if (msg_type == AUDIT_USER_TTY) { 744 if (msg_type == AUDIT_USER_TTY) {
@@ -779,7 +779,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
779 } 779 }
780 /* fallthrough */ 780 /* fallthrough */
781 case AUDIT_LIST: 781 case AUDIT_LIST:
782 err = audit_receive_filter(nlh->nlmsg_type, NETLINK_CB(skb).pid, 782 err = audit_receive_filter(msg_type, NETLINK_CB(skb).pid,
783 uid, seq, data, nlmsg_len(nlh), 783 uid, seq, data, nlmsg_len(nlh),
784 loginuid, sessionid, sid); 784 loginuid, sessionid, sid);
785 break; 785 break;
@@ -798,7 +798,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
798 } 798 }
799 /* fallthrough */ 799 /* fallthrough */
800 case AUDIT_LIST_RULES: 800 case AUDIT_LIST_RULES:
801 err = audit_receive_filter(nlh->nlmsg_type, NETLINK_CB(skb).pid, 801 err = audit_receive_filter(msg_type, NETLINK_CB(skb).pid,
802 uid, seq, data, nlmsg_len(nlh), 802 uid, seq, data, nlmsg_len(nlh),
803 loginuid, sessionid, sid); 803 loginuid, sessionid, sid);
804 break; 804 break;
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c
index 0e0bd27e6512..98c50cc671bb 100644
--- a/kernel/auditfilter.c
+++ b/kernel/auditfilter.c
@@ -1544,6 +1544,7 @@ static void audit_log_rule_change(uid_t loginuid, u32 sessionid, u32 sid,
1544 * @data: payload data 1544 * @data: payload data
1545 * @datasz: size of payload data 1545 * @datasz: size of payload data
1546 * @loginuid: loginuid of sender 1546 * @loginuid: loginuid of sender
1547 * @sessionid: sessionid for netlink audit message
1547 * @sid: SE Linux Security ID of sender 1548 * @sid: SE Linux Security ID of sender
1548 */ 1549 */
1549int audit_receive_filter(int type, int pid, int uid, int seq, void *data, 1550int audit_receive_filter(int type, int pid, int uid, int seq, void *data,
@@ -1720,7 +1721,7 @@ static int audit_filter_user_rules(struct netlink_skb_parms *cb,
1720 return 1; 1721 return 1;
1721} 1722}
1722 1723
1723int audit_filter_user(struct netlink_skb_parms *cb, int type) 1724int audit_filter_user(struct netlink_skb_parms *cb)
1724{ 1725{
1725 enum audit_state state = AUDIT_DISABLED; 1726 enum audit_state state = AUDIT_DISABLED;
1726 struct audit_entry *e; 1727 struct audit_entry *e;
diff --git a/kernel/capability.c b/kernel/capability.c
index cfbe44299488..901e0fdc3fff 100644
--- a/kernel/capability.c
+++ b/kernel/capability.c
@@ -121,6 +121,27 @@ static int cap_validate_magic(cap_user_header_t header, unsigned *tocopy)
121 * uninteresting and/or not to be changed. 121 * uninteresting and/or not to be changed.
122 */ 122 */
123 123
124/*
125 * Atomically modify the effective capabilities returning the original
126 * value. No permission check is performed here - it is assumed that the
127 * caller is permitted to set the desired effective capabilities.
128 */
129kernel_cap_t cap_set_effective(const kernel_cap_t pE_new)
130{
131 kernel_cap_t pE_old;
132
133 spin_lock(&task_capability_lock);
134
135 pE_old = current->cap_effective;
136 current->cap_effective = pE_new;
137
138 spin_unlock(&task_capability_lock);
139
140 return pE_old;
141}
142
143EXPORT_SYMBOL(cap_set_effective);
144
124/** 145/**
125 * sys_capget - get the capabilities of a given process. 146 * sys_capget - get the capabilities of a given process.
126 * @header: pointer to struct that contains capability version and 147 * @header: pointer to struct that contains capability version and
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 039baa4cd90c..9fceb97e989c 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -1037,8 +1037,8 @@ int current_cpuset_is_being_rebound(void)
1037 1037
1038static int update_relax_domain_level(struct cpuset *cs, s64 val) 1038static int update_relax_domain_level(struct cpuset *cs, s64 val)
1039{ 1039{
1040 if ((int)val < 0) 1040 if (val < -1 || val >= SD_LV_MAX)
1041 val = -1; 1041 return -EINVAL;
1042 1042
1043 if (val != cs->relax_domain_level) { 1043 if (val != cs->relax_domain_level) {
1044 cs->relax_domain_level = val; 1044 cs->relax_domain_level = val;
@@ -1890,6 +1890,12 @@ static void common_cpu_mem_hotplug_unplug(void)
1890 top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; 1890 top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY];
1891 scan_for_empty_cpusets(&top_cpuset); 1891 scan_for_empty_cpusets(&top_cpuset);
1892 1892
1893 /*
1894 * Scheduler destroys domains on hotplug events.
1895 * Rebuild them based on the current settings.
1896 */
1897 rebuild_sched_domains();
1898
1893 cgroup_unlock(); 1899 cgroup_unlock();
1894} 1900}
1895 1901
diff --git a/kernel/futex.c b/kernel/futex.c
index 449def8074fe..7d1136e97c14 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1096,21 +1096,64 @@ static void unqueue_me_pi(struct futex_q *q)
1096 * private futexes. 1096 * private futexes.
1097 */ 1097 */
1098static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, 1098static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q,
1099 struct task_struct *newowner) 1099 struct task_struct *newowner,
1100 struct rw_semaphore *fshared)
1100{ 1101{
1101 u32 newtid = task_pid_vnr(newowner) | FUTEX_WAITERS; 1102 u32 newtid = task_pid_vnr(newowner) | FUTEX_WAITERS;
1102 struct futex_pi_state *pi_state = q->pi_state; 1103 struct futex_pi_state *pi_state = q->pi_state;
1104 struct task_struct *oldowner = pi_state->owner;
1103 u32 uval, curval, newval; 1105 u32 uval, curval, newval;
1104 int ret; 1106 int ret, attempt = 0;
1105 1107
1106 /* Owner died? */ 1108 /* Owner died? */
1109 if (!pi_state->owner)
1110 newtid |= FUTEX_OWNER_DIED;
1111
1112 /*
1113 * We are here either because we stole the rtmutex from the
1114 * pending owner or we are the pending owner which failed to
1115 * get the rtmutex. We have to replace the pending owner TID
1116 * in the user space variable. This must be atomic as we have
1117 * to preserve the owner died bit here.
1118 *
1119 * Note: We write the user space value _before_ changing the
1120 * pi_state because we can fault here. Imagine swapped out
1121 * pages or a fork, which was running right before we acquired
1122 * mmap_sem, that marked all the anonymous memory readonly for
1123 * cow.
1124 *
1125 * Modifying pi_state _before_ the user space value would
1126 * leave the pi_state in an inconsistent state when we fault
1127 * here, because we need to drop the hash bucket lock to
1128 * handle the fault. This might be observed in the PID check
1129 * in lookup_pi_state.
1130 */
1131retry:
1132 if (get_futex_value_locked(&uval, uaddr))
1133 goto handle_fault;
1134
1135 while (1) {
1136 newval = (uval & FUTEX_OWNER_DIED) | newtid;
1137
1138 curval = cmpxchg_futex_value_locked(uaddr, uval, newval);
1139
1140 if (curval == -EFAULT)
1141 goto handle_fault;
1142 if (curval == uval)
1143 break;
1144 uval = curval;
1145 }
1146
1147 /*
1148 * We fixed up user space. Now we need to fix the pi_state
1149 * itself.
1150 */
1107 if (pi_state->owner != NULL) { 1151 if (pi_state->owner != NULL) {
1108 spin_lock_irq(&pi_state->owner->pi_lock); 1152 spin_lock_irq(&pi_state->owner->pi_lock);
1109 WARN_ON(list_empty(&pi_state->list)); 1153 WARN_ON(list_empty(&pi_state->list));
1110 list_del_init(&pi_state->list); 1154 list_del_init(&pi_state->list);
1111 spin_unlock_irq(&pi_state->owner->pi_lock); 1155 spin_unlock_irq(&pi_state->owner->pi_lock);
1112 } else 1156 }
1113 newtid |= FUTEX_OWNER_DIED;
1114 1157
1115 pi_state->owner = newowner; 1158 pi_state->owner = newowner;
1116 1159
@@ -1118,26 +1161,35 @@ static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q,
1118 WARN_ON(!list_empty(&pi_state->list)); 1161 WARN_ON(!list_empty(&pi_state->list));
1119 list_add(&pi_state->list, &newowner->pi_state_list); 1162 list_add(&pi_state->list, &newowner->pi_state_list);
1120 spin_unlock_irq(&newowner->pi_lock); 1163 spin_unlock_irq(&newowner->pi_lock);
1164 return 0;
1121 1165
1122 /* 1166 /*
1123 * We own it, so we have to replace the pending owner 1167 * To handle the page fault we need to drop the hash bucket
1124 * TID. This must be atomic as we have preserve the 1168 * lock here. That gives the other task (either the pending
1125 * owner died bit here. 1169 * owner itself or the task which stole the rtmutex) the
1170 * chance to try the fixup of the pi_state. So once we are
1171 * back from handling the fault we need to check the pi_state
1172 * after reacquiring the hash bucket lock and before trying to
1173 * do another fixup. When the fixup has been done already we
1174 * simply return.
1126 */ 1175 */
1127 ret = get_futex_value_locked(&uval, uaddr); 1176handle_fault:
1177 spin_unlock(q->lock_ptr);
1128 1178
1129 while (!ret) { 1179 ret = futex_handle_fault((unsigned long)uaddr, fshared, attempt++);
1130 newval = (uval & FUTEX_OWNER_DIED) | newtid;
1131 1180
1132 curval = cmpxchg_futex_value_locked(uaddr, uval, newval); 1181 spin_lock(q->lock_ptr);
1133 1182
1134 if (curval == -EFAULT) 1183 /*
1135 ret = -EFAULT; 1184 * Check if someone else fixed it for us:
1136 if (curval == uval) 1185 */
1137 break; 1186 if (pi_state->owner != oldowner)
1138 uval = curval; 1187 return 0;
1139 } 1188
1140 return ret; 1189 if (ret)
1190 return ret;
1191
1192 goto retry;
1141} 1193}
1142 1194
1143/* 1195/*
@@ -1507,7 +1559,7 @@ static int futex_lock_pi(u32 __user *uaddr, struct rw_semaphore *fshared,
1507 * that case: 1559 * that case:
1508 */ 1560 */
1509 if (q.pi_state->owner != curr) 1561 if (q.pi_state->owner != curr)
1510 ret = fixup_pi_state_owner(uaddr, &q, curr); 1562 ret = fixup_pi_state_owner(uaddr, &q, curr, fshared);
1511 } else { 1563 } else {
1512 /* 1564 /*
1513 * Catch the rare case, where the lock was released 1565 * Catch the rare case, where the lock was released
@@ -1539,7 +1591,8 @@ static int futex_lock_pi(u32 __user *uaddr, struct rw_semaphore *fshared,
1539 int res; 1591 int res;
1540 1592
1541 owner = rt_mutex_owner(&q.pi_state->pi_mutex); 1593 owner = rt_mutex_owner(&q.pi_state->pi_mutex);
1542 res = fixup_pi_state_owner(uaddr, &q, owner); 1594 res = fixup_pi_state_owner(uaddr, &q, owner,
1595 fshared);
1543 1596
1544 /* propagate -EFAULT, if the fixup failed */ 1597 /* propagate -EFAULT, if the fixup failed */
1545 if (res) 1598 if (res)
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index 421be5fe5cc7..ab80515008f4 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -1003,10 +1003,18 @@ hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode)
1003 */ 1003 */
1004 raise = timer->state == HRTIMER_STATE_PENDING; 1004 raise = timer->state == HRTIMER_STATE_PENDING;
1005 1005
1006 /*
1007 * We use preempt_disable to prevent this task from migrating after
1008 * setting up the softirq and raising it. Otherwise, if me migrate
1009 * we will raise the softirq on the wrong CPU.
1010 */
1011 preempt_disable();
1012
1006 unlock_hrtimer_base(timer, &flags); 1013 unlock_hrtimer_base(timer, &flags);
1007 1014
1008 if (raise) 1015 if (raise)
1009 hrtimer_raise_softirq(); 1016 hrtimer_raise_softirq();
1017 preempt_enable();
1010 1018
1011 return ret; 1019 return ret;
1012} 1020}
diff --git a/kernel/kgdb.c b/kernel/kgdb.c
index 79e3c90113c2..3ec23c3ec97f 100644
--- a/kernel/kgdb.c
+++ b/kernel/kgdb.c
@@ -1499,7 +1499,8 @@ int kgdb_nmicallback(int cpu, void *regs)
1499 return 1; 1499 return 1;
1500} 1500}
1501 1501
1502void kgdb_console_write(struct console *co, const char *s, unsigned count) 1502static void kgdb_console_write(struct console *co, const char *s,
1503 unsigned count)
1503{ 1504{
1504 unsigned long flags; 1505 unsigned long flags;
1505 1506
diff --git a/kernel/printk.c b/kernel/printk.c
index 8fb01c32aa3b..028ed75d4864 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -121,6 +121,8 @@ struct console_cmdline
121static struct console_cmdline console_cmdline[MAX_CMDLINECONSOLES]; 121static struct console_cmdline console_cmdline[MAX_CMDLINECONSOLES];
122static int selected_console = -1; 122static int selected_console = -1;
123static int preferred_console = -1; 123static int preferred_console = -1;
124int console_set_on_cmdline;
125EXPORT_SYMBOL(console_set_on_cmdline);
124 126
125/* Flag: console code may call schedule() */ 127/* Flag: console code may call schedule() */
126static int console_may_schedule; 128static int console_may_schedule;
@@ -890,6 +892,7 @@ static int __init console_setup(char *str)
890 *s = 0; 892 *s = 0;
891 893
892 __add_preferred_console(buf, idx, options, brl_options); 894 __add_preferred_console(buf, idx, options, brl_options);
895 console_set_on_cmdline = 1;
893 return 1; 896 return 1;
894} 897}
895__setup("console=", console_setup); 898__setup("console=", console_setup);
diff --git a/kernel/rcuclassic.c b/kernel/rcuclassic.c
index f4ffbd0f306f..a38895a5b8e2 100644
--- a/kernel/rcuclassic.c
+++ b/kernel/rcuclassic.c
@@ -89,8 +89,22 @@ static void force_quiescent_state(struct rcu_data *rdp,
89 /* 89 /*
90 * Don't send IPI to itself. With irqs disabled, 90 * Don't send IPI to itself. With irqs disabled,
91 * rdp->cpu is the current cpu. 91 * rdp->cpu is the current cpu.
92 *
93 * cpu_online_map is updated by the _cpu_down()
94 * using stop_machine_run(). Since we're in irqs disabled
95 * section, stop_machine_run() is not exectuting, hence
96 * the cpu_online_map is stable.
97 *
98 * However, a cpu might have been offlined _just_ before
99 * we disabled irqs while entering here.
100 * And rcu subsystem might not yet have handled the CPU_DEAD
101 * notification, leading to the offlined cpu's bit
102 * being set in the rcp->cpumask.
103 *
104 * Hence cpumask = (rcp->cpumask & cpu_online_map) to prevent
105 * sending smp_reschedule() to an offlined CPU.
92 */ 106 */
93 cpumask = rcp->cpumask; 107 cpus_and(cpumask, rcp->cpumask, cpu_online_map);
94 cpu_clear(rdp->cpu, cpumask); 108 cpu_clear(rdp->cpu, cpumask);
95 for_each_cpu_mask(cpu, cpumask) 109 for_each_cpu_mask(cpu, cpumask)
96 smp_send_reschedule(cpu); 110 smp_send_reschedule(cpu);
diff --git a/kernel/rcupreempt.c b/kernel/rcupreempt.c
index e1cdf196a515..5e02b7740702 100644
--- a/kernel/rcupreempt.c
+++ b/kernel/rcupreempt.c
@@ -217,8 +217,6 @@ long rcu_batches_completed(void)
217} 217}
218EXPORT_SYMBOL_GPL(rcu_batches_completed); 218EXPORT_SYMBOL_GPL(rcu_batches_completed);
219 219
220EXPORT_SYMBOL_GPL(rcu_batches_completed_bh);
221
222void __rcu_read_lock(void) 220void __rcu_read_lock(void)
223{ 221{
224 int idx; 222 int idx;
diff --git a/kernel/sched.c b/kernel/sched.c
index eaf6751e7612..94ead43eda62 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1127,6 +1127,7 @@ static enum hrtimer_restart hrtick(struct hrtimer *timer)
1127 return HRTIMER_NORESTART; 1127 return HRTIMER_NORESTART;
1128} 1128}
1129 1129
1130#ifdef CONFIG_SMP
1130static void hotplug_hrtick_disable(int cpu) 1131static void hotplug_hrtick_disable(int cpu)
1131{ 1132{
1132 struct rq *rq = cpu_rq(cpu); 1133 struct rq *rq = cpu_rq(cpu);
@@ -1182,6 +1183,7 @@ static void init_hrtick(void)
1182{ 1183{
1183 hotcpu_notifier(hotplug_hrtick, 0); 1184 hotcpu_notifier(hotplug_hrtick, 0);
1184} 1185}
1186#endif /* CONFIG_SMP */
1185 1187
1186static void init_rq_hrtick(struct rq *rq) 1188static void init_rq_hrtick(struct rq *rq)
1187{ 1189{
@@ -4396,22 +4398,20 @@ do_wait_for_common(struct completion *x, long timeout, int state)
4396 signal_pending(current)) || 4398 signal_pending(current)) ||
4397 (state == TASK_KILLABLE && 4399 (state == TASK_KILLABLE &&
4398 fatal_signal_pending(current))) { 4400 fatal_signal_pending(current))) {
4399 __remove_wait_queue(&x->wait, &wait); 4401 timeout = -ERESTARTSYS;
4400 return -ERESTARTSYS; 4402 break;
4401 } 4403 }
4402 __set_current_state(state); 4404 __set_current_state(state);
4403 spin_unlock_irq(&x->wait.lock); 4405 spin_unlock_irq(&x->wait.lock);
4404 timeout = schedule_timeout(timeout); 4406 timeout = schedule_timeout(timeout);
4405 spin_lock_irq(&x->wait.lock); 4407 spin_lock_irq(&x->wait.lock);
4406 if (!timeout) { 4408 } while (!x->done && timeout);
4407 __remove_wait_queue(&x->wait, &wait);
4408 return timeout;
4409 }
4410 } while (!x->done);
4411 __remove_wait_queue(&x->wait, &wait); 4409 __remove_wait_queue(&x->wait, &wait);
4410 if (!x->done)
4411 return timeout;
4412 } 4412 }
4413 x->done--; 4413 x->done--;
4414 return timeout; 4414 return timeout ?: 1;
4415} 4415}
4416 4416
4417static long __sched 4417static long __sched
@@ -5887,6 +5887,7 @@ static void migrate_dead_tasks(unsigned int dead_cpu)
5887 next = pick_next_task(rq, rq->curr); 5887 next = pick_next_task(rq, rq->curr);
5888 if (!next) 5888 if (!next)
5889 break; 5889 break;
5890 next->sched_class->put_prev_task(rq, next);
5890 migrate_dead(dead_cpu, next); 5891 migrate_dead(dead_cpu, next);
5891 5892
5892 } 5893 }
@@ -6877,7 +6878,12 @@ static int default_relax_domain_level = -1;
6877 6878
6878static int __init setup_relax_domain_level(char *str) 6879static int __init setup_relax_domain_level(char *str)
6879{ 6880{
6880 default_relax_domain_level = simple_strtoul(str, NULL, 0); 6881 unsigned long val;
6882
6883 val = simple_strtoul(str, NULL, 0);
6884 if (val < SD_LV_MAX)
6885 default_relax_domain_level = val;
6886
6881 return 1; 6887 return 1;
6882} 6888}
6883__setup("relax_domain_level=", setup_relax_domain_level); 6889__setup("relax_domain_level=", setup_relax_domain_level);
@@ -7236,6 +7242,18 @@ void __attribute__((weak)) arch_update_cpu_topology(void)
7236} 7242}
7237 7243
7238/* 7244/*
7245 * Free current domain masks.
7246 * Called after all cpus are attached to NULL domain.
7247 */
7248static void free_sched_domains(void)
7249{
7250 ndoms_cur = 0;
7251 if (doms_cur != &fallback_doms)
7252 kfree(doms_cur);
7253 doms_cur = &fallback_doms;
7254}
7255
7256/*
7239 * Set up scheduler domains and groups. Callers must hold the hotplug lock. 7257 * Set up scheduler domains and groups. Callers must hold the hotplug lock.
7240 * For now this just excludes isolated cpus, but could be used to 7258 * For now this just excludes isolated cpus, but could be used to
7241 * exclude other special cases in the future. 7259 * exclude other special cases in the future.
@@ -7382,6 +7400,7 @@ int arch_reinit_sched_domains(void)
7382 get_online_cpus(); 7400 get_online_cpus();
7383 mutex_lock(&sched_domains_mutex); 7401 mutex_lock(&sched_domains_mutex);
7384 detach_destroy_domains(&cpu_online_map); 7402 detach_destroy_domains(&cpu_online_map);
7403 free_sched_domains();
7385 err = arch_init_sched_domains(&cpu_online_map); 7404 err = arch_init_sched_domains(&cpu_online_map);
7386 mutex_unlock(&sched_domains_mutex); 7405 mutex_unlock(&sched_domains_mutex);
7387 put_online_cpus(); 7406 put_online_cpus();
@@ -7467,6 +7486,7 @@ static int update_sched_domains(struct notifier_block *nfb,
7467 case CPU_DOWN_PREPARE: 7486 case CPU_DOWN_PREPARE:
7468 case CPU_DOWN_PREPARE_FROZEN: 7487 case CPU_DOWN_PREPARE_FROZEN:
7469 detach_destroy_domains(&cpu_online_map); 7488 detach_destroy_domains(&cpu_online_map);
7489 free_sched_domains();
7470 return NOTIFY_OK; 7490 return NOTIFY_OK;
7471 7491
7472 case CPU_UP_CANCELED: 7492 case CPU_UP_CANCELED:
@@ -7485,8 +7505,16 @@ static int update_sched_domains(struct notifier_block *nfb,
7485 return NOTIFY_DONE; 7505 return NOTIFY_DONE;
7486 } 7506 }
7487 7507
7508#ifndef CONFIG_CPUSETS
7509 /*
7510 * Create default domain partitioning if cpusets are disabled.
7511 * Otherwise we let cpusets rebuild the domains based on the
7512 * current setup.
7513 */
7514
7488 /* The hotplug lock is already held by cpu_up/cpu_down */ 7515 /* The hotplug lock is already held by cpu_up/cpu_down */
7489 arch_init_sched_domains(&cpu_online_map); 7516 arch_init_sched_domains(&cpu_online_map);
7517#endif
7490 7518
7491 return NOTIFY_OK; 7519 return NOTIFY_OK;
7492} 7520}
@@ -7626,7 +7654,6 @@ static void init_tg_rt_entry(struct task_group *tg, struct rt_rq *rt_rq,
7626 else 7654 else
7627 rt_se->rt_rq = parent->my_q; 7655 rt_se->rt_rq = parent->my_q;
7628 7656
7629 rt_se->rt_rq = &rq->rt;
7630 rt_se->my_q = rt_rq; 7657 rt_se->my_q = rt_rq;
7631 rt_se->parent = parent; 7658 rt_se->parent = parent;
7632 INIT_LIST_HEAD(&rt_se->run_list); 7659 INIT_LIST_HEAD(&rt_se->run_list);
@@ -8348,7 +8375,7 @@ static unsigned long to_ratio(u64 period, u64 runtime)
8348#ifdef CONFIG_CGROUP_SCHED 8375#ifdef CONFIG_CGROUP_SCHED
8349static int __rt_schedulable(struct task_group *tg, u64 period, u64 runtime) 8376static int __rt_schedulable(struct task_group *tg, u64 period, u64 runtime)
8350{ 8377{
8351 struct task_group *tgi, *parent = tg->parent; 8378 struct task_group *tgi, *parent = tg ? tg->parent : NULL;
8352 unsigned long total = 0; 8379 unsigned long total = 0;
8353 8380
8354 if (!parent) { 8381 if (!parent) {
@@ -8475,6 +8502,9 @@ int sched_group_set_rt_period(struct task_group *tg, long rt_period_us)
8475 rt_period = (u64)rt_period_us * NSEC_PER_USEC; 8502 rt_period = (u64)rt_period_us * NSEC_PER_USEC;
8476 rt_runtime = tg->rt_bandwidth.rt_runtime; 8503 rt_runtime = tg->rt_bandwidth.rt_runtime;
8477 8504
8505 if (rt_period == 0)
8506 return -EINVAL;
8507
8478 return tg_set_bandwidth(tg, rt_period, rt_runtime); 8508 return tg_set_bandwidth(tg, rt_period, rt_runtime);
8479} 8509}
8480 8510
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index 3432d573205d..0f3c19197fa4 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -250,7 +250,8 @@ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
250 if (rt_rq->rt_time || rt_rq->rt_nr_running) 250 if (rt_rq->rt_time || rt_rq->rt_nr_running)
251 idle = 0; 251 idle = 0;
252 spin_unlock(&rt_rq->rt_runtime_lock); 252 spin_unlock(&rt_rq->rt_runtime_lock);
253 } 253 } else if (rt_rq->rt_nr_running)
254 idle = 0;
254 255
255 if (enqueue) 256 if (enqueue)
256 sched_rt_rq_enqueue(rt_rq); 257 sched_rt_rq_enqueue(rt_rq);
@@ -449,13 +450,19 @@ void dec_rt_tasks(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
449#endif 450#endif
450} 451}
451 452
452static void enqueue_rt_entity(struct sched_rt_entity *rt_se) 453static void __enqueue_rt_entity(struct sched_rt_entity *rt_se)
453{ 454{
454 struct rt_rq *rt_rq = rt_rq_of_se(rt_se); 455 struct rt_rq *rt_rq = rt_rq_of_se(rt_se);
455 struct rt_prio_array *array = &rt_rq->active; 456 struct rt_prio_array *array = &rt_rq->active;
456 struct rt_rq *group_rq = group_rt_rq(rt_se); 457 struct rt_rq *group_rq = group_rt_rq(rt_se);
457 458
458 if (group_rq && rt_rq_throttled(group_rq)) 459 /*
460 * Don't enqueue the group if its throttled, or when empty.
461 * The latter is a consequence of the former when a child group
462 * get throttled and the current group doesn't have any other
463 * active members.
464 */
465 if (group_rq && (rt_rq_throttled(group_rq) || !group_rq->rt_nr_running))
459 return; 466 return;
460 467
461 list_add_tail(&rt_se->run_list, array->queue + rt_se_prio(rt_se)); 468 list_add_tail(&rt_se->run_list, array->queue + rt_se_prio(rt_se));
@@ -464,7 +471,7 @@ static void enqueue_rt_entity(struct sched_rt_entity *rt_se)
464 inc_rt_tasks(rt_se, rt_rq); 471 inc_rt_tasks(rt_se, rt_rq);
465} 472}
466 473
467static void dequeue_rt_entity(struct sched_rt_entity *rt_se) 474static void __dequeue_rt_entity(struct sched_rt_entity *rt_se)
468{ 475{
469 struct rt_rq *rt_rq = rt_rq_of_se(rt_se); 476 struct rt_rq *rt_rq = rt_rq_of_se(rt_se);
470 struct rt_prio_array *array = &rt_rq->active; 477 struct rt_prio_array *array = &rt_rq->active;
@@ -480,11 +487,10 @@ static void dequeue_rt_entity(struct sched_rt_entity *rt_se)
480 * Because the prio of an upper entry depends on the lower 487 * Because the prio of an upper entry depends on the lower
481 * entries, we must remove entries top - down. 488 * entries, we must remove entries top - down.
482 */ 489 */
483static void dequeue_rt_stack(struct task_struct *p) 490static void dequeue_rt_stack(struct sched_rt_entity *rt_se)
484{ 491{
485 struct sched_rt_entity *rt_se, *back = NULL; 492 struct sched_rt_entity *back = NULL;
486 493
487 rt_se = &p->rt;
488 for_each_sched_rt_entity(rt_se) { 494 for_each_sched_rt_entity(rt_se) {
489 rt_se->back = back; 495 rt_se->back = back;
490 back = rt_se; 496 back = rt_se;
@@ -492,7 +498,26 @@ static void dequeue_rt_stack(struct task_struct *p)
492 498
493 for (rt_se = back; rt_se; rt_se = rt_se->back) { 499 for (rt_se = back; rt_se; rt_se = rt_se->back) {
494 if (on_rt_rq(rt_se)) 500 if (on_rt_rq(rt_se))
495 dequeue_rt_entity(rt_se); 501 __dequeue_rt_entity(rt_se);
502 }
503}
504
505static void enqueue_rt_entity(struct sched_rt_entity *rt_se)
506{
507 dequeue_rt_stack(rt_se);
508 for_each_sched_rt_entity(rt_se)
509 __enqueue_rt_entity(rt_se);
510}
511
512static void dequeue_rt_entity(struct sched_rt_entity *rt_se)
513{
514 dequeue_rt_stack(rt_se);
515
516 for_each_sched_rt_entity(rt_se) {
517 struct rt_rq *rt_rq = group_rt_rq(rt_se);
518
519 if (rt_rq && rt_rq->rt_nr_running)
520 __enqueue_rt_entity(rt_se);
496 } 521 }
497} 522}
498 523
@@ -506,32 +531,15 @@ static void enqueue_task_rt(struct rq *rq, struct task_struct *p, int wakeup)
506 if (wakeup) 531 if (wakeup)
507 rt_se->timeout = 0; 532 rt_se->timeout = 0;
508 533
509 dequeue_rt_stack(p); 534 enqueue_rt_entity(rt_se);
510
511 /*
512 * enqueue everybody, bottom - up.
513 */
514 for_each_sched_rt_entity(rt_se)
515 enqueue_rt_entity(rt_se);
516} 535}
517 536
518static void dequeue_task_rt(struct rq *rq, struct task_struct *p, int sleep) 537static void dequeue_task_rt(struct rq *rq, struct task_struct *p, int sleep)
519{ 538{
520 struct sched_rt_entity *rt_se = &p->rt; 539 struct sched_rt_entity *rt_se = &p->rt;
521 struct rt_rq *rt_rq;
522 540
523 update_curr_rt(rq); 541 update_curr_rt(rq);
524 542 dequeue_rt_entity(rt_se);
525 dequeue_rt_stack(p);
526
527 /*
528 * re-enqueue all non-empty rt_rq entities.
529 */
530 for_each_sched_rt_entity(rt_se) {
531 rt_rq = group_rt_rq(rt_se);
532 if (rt_rq && rt_rq->rt_nr_running)
533 enqueue_rt_entity(rt_se);
534 }
535} 543}
536 544
537/* 545/*
@@ -542,8 +550,10 @@ static
542void requeue_rt_entity(struct rt_rq *rt_rq, struct sched_rt_entity *rt_se) 550void requeue_rt_entity(struct rt_rq *rt_rq, struct sched_rt_entity *rt_se)
543{ 551{
544 struct rt_prio_array *array = &rt_rq->active; 552 struct rt_prio_array *array = &rt_rq->active;
553 struct list_head *queue = array->queue + rt_se_prio(rt_se);
545 554
546 list_move_tail(&rt_se->run_list, array->queue + rt_se_prio(rt_se)); 555 if (on_rt_rq(rt_se))
556 list_move_tail(&rt_se->run_list, queue);
547} 557}
548 558
549static void requeue_task_rt(struct rq *rq, struct task_struct *p) 559static void requeue_task_rt(struct rq *rq, struct task_struct *p)
diff --git a/kernel/sched_stats.h b/kernel/sched_stats.h
index a38878e0e49d..80179ef7450e 100644
--- a/kernel/sched_stats.h
+++ b/kernel/sched_stats.h
@@ -198,6 +198,9 @@ static inline void sched_info_queued(struct task_struct *t)
198/* 198/*
199 * Called when a process ceases being the active-running process, either 199 * Called when a process ceases being the active-running process, either
200 * voluntarily or involuntarily. Now we can calculate how long we ran. 200 * voluntarily or involuntarily. Now we can calculate how long we ran.
201 * Also, if the process is still in the TASK_RUNNING state, call
202 * sched_info_queued() to mark that it has now again started waiting on
203 * the runqueue.
201 */ 204 */
202static inline void sched_info_depart(struct task_struct *t) 205static inline void sched_info_depart(struct task_struct *t)
203{ 206{
@@ -206,6 +209,9 @@ static inline void sched_info_depart(struct task_struct *t)
206 209
207 t->sched_info.cpu_time += delta; 210 t->sched_info.cpu_time += delta;
208 rq_sched_info_depart(task_rq(t), delta); 211 rq_sched_info_depart(task_rq(t), delta);
212
213 if (t->state == TASK_RUNNING)
214 sched_info_queued(t);
209} 215}
210 216
211/* 217/*
diff --git a/kernel/softlockup.c b/kernel/softlockup.c
index 01b6522fd92b..a272d78185eb 100644
--- a/kernel/softlockup.c
+++ b/kernel/softlockup.c
@@ -49,12 +49,17 @@ static unsigned long get_timestamp(int this_cpu)
49 return cpu_clock(this_cpu) >> 30LL; /* 2^30 ~= 10^9 */ 49 return cpu_clock(this_cpu) >> 30LL; /* 2^30 ~= 10^9 */
50} 50}
51 51
52void touch_softlockup_watchdog(void) 52static void __touch_softlockup_watchdog(void)
53{ 53{
54 int this_cpu = raw_smp_processor_id(); 54 int this_cpu = raw_smp_processor_id();
55 55
56 __raw_get_cpu_var(touch_timestamp) = get_timestamp(this_cpu); 56 __raw_get_cpu_var(touch_timestamp) = get_timestamp(this_cpu);
57} 57}
58
59void touch_softlockup_watchdog(void)
60{
61 __raw_get_cpu_var(touch_timestamp) = 0;
62}
58EXPORT_SYMBOL(touch_softlockup_watchdog); 63EXPORT_SYMBOL(touch_softlockup_watchdog);
59 64
60void touch_all_softlockup_watchdogs(void) 65void touch_all_softlockup_watchdogs(void)
@@ -80,7 +85,7 @@ void softlockup_tick(void)
80 unsigned long now; 85 unsigned long now;
81 86
82 if (touch_timestamp == 0) { 87 if (touch_timestamp == 0) {
83 touch_softlockup_watchdog(); 88 __touch_softlockup_watchdog();
84 return; 89 return;
85 } 90 }
86 91
@@ -95,7 +100,7 @@ void softlockup_tick(void)
95 100
96 /* do not print during early bootup: */ 101 /* do not print during early bootup: */
97 if (unlikely(system_state != SYSTEM_RUNNING)) { 102 if (unlikely(system_state != SYSTEM_RUNNING)) {
98 touch_softlockup_watchdog(); 103 __touch_softlockup_watchdog();
99 return; 104 return;
100 } 105 }
101 106
@@ -115,6 +120,7 @@ void softlockup_tick(void)
115 printk(KERN_ERR "BUG: soft lockup - CPU#%d stuck for %lus! [%s:%d]\n", 120 printk(KERN_ERR "BUG: soft lockup - CPU#%d stuck for %lus! [%s:%d]\n",
116 this_cpu, now - touch_timestamp, 121 this_cpu, now - touch_timestamp,
117 current->comm, task_pid_nr(current)); 122 current->comm, task_pid_nr(current));
123 print_modules();
118 if (regs) 124 if (regs)
119 show_regs(regs); 125 show_regs(regs);
120 else 126 else
@@ -214,7 +220,7 @@ static int watchdog(void *__bind_cpu)
214 sched_setscheduler(current, SCHED_FIFO, &param); 220 sched_setscheduler(current, SCHED_FIFO, &param);
215 221
216 /* initialize timestamp */ 222 /* initialize timestamp */
217 touch_softlockup_watchdog(); 223 __touch_softlockup_watchdog();
218 224
219 set_current_state(TASK_INTERRUPTIBLE); 225 set_current_state(TASK_INTERRUPTIBLE);
220 /* 226 /*
@@ -223,7 +229,7 @@ static int watchdog(void *__bind_cpu)
223 * debug-printout triggers in softlockup_tick(). 229 * debug-printout triggers in softlockup_tick().
224 */ 230 */
225 while (!kthread_should_stop()) { 231 while (!kthread_should_stop()) {
226 touch_softlockup_watchdog(); 232 __touch_softlockup_watchdog();
227 schedule(); 233 schedule();
228 234
229 if (kthread_should_stop()) 235 if (kthread_should_stop())
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index 57a1f02e5ec0..67f80c261709 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -30,6 +30,7 @@
30struct tick_device tick_broadcast_device; 30struct tick_device tick_broadcast_device;
31static cpumask_t tick_broadcast_mask; 31static cpumask_t tick_broadcast_mask;
32static DEFINE_SPINLOCK(tick_broadcast_lock); 32static DEFINE_SPINLOCK(tick_broadcast_lock);
33static int tick_broadcast_force;
33 34
34#ifdef CONFIG_TICK_ONESHOT 35#ifdef CONFIG_TICK_ONESHOT
35static void tick_broadcast_clear_oneshot(int cpu); 36static void tick_broadcast_clear_oneshot(int cpu);
@@ -232,10 +233,11 @@ static void tick_do_broadcast_on_off(void *why)
232 CLOCK_EVT_MODE_SHUTDOWN); 233 CLOCK_EVT_MODE_SHUTDOWN);
233 } 234 }
234 if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE) 235 if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE)
235 dev->features |= CLOCK_EVT_FEAT_DUMMY; 236 tick_broadcast_force = 1;
236 break; 237 break;
237 case CLOCK_EVT_NOTIFY_BROADCAST_OFF: 238 case CLOCK_EVT_NOTIFY_BROADCAST_OFF:
238 if (cpu_isset(cpu, tick_broadcast_mask)) { 239 if (!tick_broadcast_force &&
240 cpu_isset(cpu, tick_broadcast_mask)) {
239 cpu_clear(cpu, tick_broadcast_mask); 241 cpu_clear(cpu, tick_broadcast_mask);
240 if (td->mode == TICKDEV_MODE_PERIODIC) 242 if (td->mode == TICKDEV_MODE_PERIODIC)
241 tick_setup_periodic(dev, 0); 243 tick_setup_periodic(dev, 0);
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 29fc39f1029c..ce7799540c91 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -13,7 +13,7 @@
13 * Kai Petzke <wpp@marie.physik.tu-berlin.de> 13 * Kai Petzke <wpp@marie.physik.tu-berlin.de>
14 * Theodore Ts'o <tytso@mit.edu> 14 * Theodore Ts'o <tytso@mit.edu>
15 * 15 *
16 * Made to use alloc_percpu by Christoph Lameter <clameter@sgi.com>. 16 * Made to use alloc_percpu by Christoph Lameter.
17 */ 17 */
18 18
19#include <linux/module.h> 19#include <linux/module.h>
diff --git a/lib/bug.c b/lib/bug.c
index 530f38f55787..bfeafd60ee9f 100644
--- a/lib/bug.c
+++ b/lib/bug.c
@@ -37,6 +37,7 @@
37 */ 37 */
38#include <linux/list.h> 38#include <linux/list.h>
39#include <linux/module.h> 39#include <linux/module.h>
40#include <linux/kernel.h>
40#include <linux/bug.h> 41#include <linux/bug.h>
41#include <linux/sched.h> 42#include <linux/sched.h>
42 43
@@ -149,6 +150,7 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs)
149 (void *)bugaddr); 150 (void *)bugaddr);
150 151
151 show_regs(regs); 152 show_regs(regs);
153 add_taint(TAINT_WARN);
152 return BUG_TRAP_TYPE_WARN; 154 return BUG_TRAP_TYPE_WARN;
153 } 155 }
154 156
diff --git a/lib/debugobjects.c b/lib/debugobjects.c
index a76a5e122ae1..85b18d79be89 100644
--- a/lib/debugobjects.c
+++ b/lib/debugobjects.c
@@ -68,6 +68,7 @@ static int fill_pool(void)
68{ 68{
69 gfp_t gfp = GFP_ATOMIC | __GFP_NORETRY | __GFP_NOWARN; 69 gfp_t gfp = GFP_ATOMIC | __GFP_NORETRY | __GFP_NOWARN;
70 struct debug_obj *new; 70 struct debug_obj *new;
71 unsigned long flags;
71 72
72 if (likely(obj_pool_free >= ODEBUG_POOL_MIN_LEVEL)) 73 if (likely(obj_pool_free >= ODEBUG_POOL_MIN_LEVEL))
73 return obj_pool_free; 74 return obj_pool_free;
@@ -81,10 +82,10 @@ static int fill_pool(void)
81 if (!new) 82 if (!new)
82 return obj_pool_free; 83 return obj_pool_free;
83 84
84 spin_lock(&pool_lock); 85 spin_lock_irqsave(&pool_lock, flags);
85 hlist_add_head(&new->node, &obj_pool); 86 hlist_add_head(&new->node, &obj_pool);
86 obj_pool_free++; 87 obj_pool_free++;
87 spin_unlock(&pool_lock); 88 spin_unlock_irqrestore(&pool_lock, flags);
88 } 89 }
89 return obj_pool_free; 90 return obj_pool_free;
90} 91}
@@ -110,16 +111,13 @@ static struct debug_obj *lookup_object(void *addr, struct debug_bucket *b)
110} 111}
111 112
112/* 113/*
113 * Allocate a new object. If the pool is empty and no refill possible, 114 * Allocate a new object. If the pool is empty, switch off the debugger.
114 * switch off the debugger.
115 */ 115 */
116static struct debug_obj * 116static struct debug_obj *
117alloc_object(void *addr, struct debug_bucket *b, struct debug_obj_descr *descr) 117alloc_object(void *addr, struct debug_bucket *b, struct debug_obj_descr *descr)
118{ 118{
119 struct debug_obj *obj = NULL; 119 struct debug_obj *obj = NULL;
120 int retry = 0;
121 120
122repeat:
123 spin_lock(&pool_lock); 121 spin_lock(&pool_lock);
124 if (obj_pool.first) { 122 if (obj_pool.first) {
125 obj = hlist_entry(obj_pool.first, typeof(*obj), node); 123 obj = hlist_entry(obj_pool.first, typeof(*obj), node);
@@ -141,9 +139,6 @@ repeat:
141 } 139 }
142 spin_unlock(&pool_lock); 140 spin_unlock(&pool_lock);
143 141
144 if (fill_pool() && !obj && !retry++)
145 goto repeat;
146
147 return obj; 142 return obj;
148} 143}
149 144
@@ -261,6 +256,8 @@ __debug_object_init(void *addr, struct debug_obj_descr *descr, int onstack)
261 struct debug_obj *obj; 256 struct debug_obj *obj;
262 unsigned long flags; 257 unsigned long flags;
263 258
259 fill_pool();
260
264 db = get_bucket((unsigned long) addr); 261 db = get_bucket((unsigned long) addr);
265 262
266 spin_lock_irqsave(&db->lock, flags); 263 spin_lock_irqsave(&db->lock, flags);
diff --git a/lib/radix-tree.c b/lib/radix-tree.c
index 169a2f8dabcc..56ec21a7f73d 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Copyright (C) 2001 Momchil Velikov 2 * Copyright (C) 2001 Momchil Velikov
3 * Portions Copyright (C) 2001 Christoph Hellwig 3 * Portions Copyright (C) 2001 Christoph Hellwig
4 * Copyright (C) 2005 SGI, Christoph Lameter <clameter@sgi.com> 4 * Copyright (C) 2005 SGI, Christoph Lameter
5 * Copyright (C) 2006 Nick Piggin 5 * Copyright (C) 2006 Nick Piggin
6 * 6 *
7 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
diff --git a/lib/ts_bm.c b/lib/ts_bm.c
index d90822c378a4..4a7fce72898e 100644
--- a/lib/ts_bm.c
+++ b/lib/ts_bm.c
@@ -63,7 +63,7 @@ static unsigned int bm_find(struct ts_config *conf, struct ts_state *state)
63 struct ts_bm *bm = ts_config_priv(conf); 63 struct ts_bm *bm = ts_config_priv(conf);
64 unsigned int i, text_len, consumed = state->offset; 64 unsigned int i, text_len, consumed = state->offset;
65 const u8 *text; 65 const u8 *text;
66 int shift = bm->patlen, bs; 66 int shift = bm->patlen - 1, bs;
67 67
68 for (;;) { 68 for (;;) {
69 text_len = conf->get_next_block(consumed, &text, conf, state); 69 text_len = conf->get_next_block(consumed, &text, conf, state);
diff --git a/mm/allocpercpu.c b/mm/allocpercpu.c
index f4026bae6eed..05f2b4009ccc 100644
--- a/mm/allocpercpu.c
+++ b/mm/allocpercpu.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * linux/mm/allocpercpu.c 2 * linux/mm/allocpercpu.c
3 * 3 *
4 * Separated from slab.c August 11, 2006 Christoph Lameter <clameter@sgi.com> 4 * Separated from slab.c August 11, 2006 Christoph Lameter
5 */ 5 */
6#include <linux/mm.h> 6#include <linux/mm.h>
7#include <linux/module.h> 7#include <linux/module.h>
diff --git a/mm/bootmem.c b/mm/bootmem.c
index e8fb927392b9..8d9f60e06f62 100644
--- a/mm/bootmem.c
+++ b/mm/bootmem.c
@@ -442,15 +442,17 @@ unsigned long __init init_bootmem_node(pg_data_t *pgdat, unsigned long freepfn,
442 return init_bootmem_core(pgdat, freepfn, startpfn, endpfn); 442 return init_bootmem_core(pgdat, freepfn, startpfn, endpfn);
443} 443}
444 444
445void __init reserve_bootmem_node(pg_data_t *pgdat, unsigned long physaddr, 445int __init reserve_bootmem_node(pg_data_t *pgdat, unsigned long physaddr,
446 unsigned long size, int flags) 446 unsigned long size, int flags)
447{ 447{
448 int ret; 448 int ret;
449 449
450 ret = can_reserve_bootmem_core(pgdat->bdata, physaddr, size, flags); 450 ret = can_reserve_bootmem_core(pgdat->bdata, physaddr, size, flags);
451 if (ret < 0) 451 if (ret < 0)
452 return; 452 return -ENOMEM;
453 reserve_bootmem_core(pgdat->bdata, physaddr, size, flags); 453 reserve_bootmem_core(pgdat->bdata, physaddr, size, flags);
454
455 return 0;
454} 456}
455 457
456void __init free_bootmem_node(pg_data_t *pgdat, unsigned long physaddr, 458void __init free_bootmem_node(pg_data_t *pgdat, unsigned long physaddr,
diff --git a/mm/memory.c b/mm/memory.c
index 19e0ae9beecb..2302d228fe04 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -999,17 +999,15 @@ struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
999 goto no_page_table; 999 goto no_page_table;
1000 1000
1001 ptep = pte_offset_map_lock(mm, pmd, address, &ptl); 1001 ptep = pte_offset_map_lock(mm, pmd, address, &ptl);
1002 if (!ptep)
1003 goto out;
1004 1002
1005 pte = *ptep; 1003 pte = *ptep;
1006 if (!pte_present(pte)) 1004 if (!pte_present(pte))
1007 goto unlock; 1005 goto no_page;
1008 if ((flags & FOLL_WRITE) && !pte_write(pte)) 1006 if ((flags & FOLL_WRITE) && !pte_write(pte))
1009 goto unlock; 1007 goto unlock;
1010 page = vm_normal_page(vma, address, pte); 1008 page = vm_normal_page(vma, address, pte);
1011 if (unlikely(!page)) 1009 if (unlikely(!page))
1012 goto unlock; 1010 goto bad_page;
1013 1011
1014 if (flags & FOLL_GET) 1012 if (flags & FOLL_GET)
1015 get_page(page); 1013 get_page(page);
@@ -1024,6 +1022,15 @@ unlock:
1024out: 1022out:
1025 return page; 1023 return page;
1026 1024
1025bad_page:
1026 pte_unmap_unlock(ptep, ptl);
1027 return ERR_PTR(-EFAULT);
1028
1029no_page:
1030 pte_unmap_unlock(ptep, ptl);
1031 if (!pte_none(pte))
1032 return page;
1033 /* Fall through to ZERO_PAGE handling */
1027no_page_table: 1034no_page_table:
1028 /* 1035 /*
1029 * When core dumping an enormous anonymous area that nobody 1036 * When core dumping an enormous anonymous area that nobody
@@ -1038,6 +1045,26 @@ no_page_table:
1038 return page; 1045 return page;
1039} 1046}
1040 1047
1048/* Can we do the FOLL_ANON optimization? */
1049static inline int use_zero_page(struct vm_area_struct *vma)
1050{
1051 /*
1052 * We don't want to optimize FOLL_ANON for make_pages_present()
1053 * when it tries to page in a VM_LOCKED region. As to VM_SHARED,
1054 * we want to get the page from the page tables to make sure
1055 * that we serialize and update with any other user of that
1056 * mapping.
1057 */
1058 if (vma->vm_flags & (VM_LOCKED | VM_SHARED))
1059 return 0;
1060 /*
1061 * And if we have a fault or a nopfn routine, it's not an
1062 * anonymous region.
1063 */
1064 return !vma->vm_ops ||
1065 (!vma->vm_ops->fault && !vma->vm_ops->nopfn);
1066}
1067
1041int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, 1068int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
1042 unsigned long start, int len, int write, int force, 1069 unsigned long start, int len, int write, int force,
1043 struct page **pages, struct vm_area_struct **vmas) 1070 struct page **pages, struct vm_area_struct **vmas)
@@ -1112,8 +1139,7 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
1112 foll_flags = FOLL_TOUCH; 1139 foll_flags = FOLL_TOUCH;
1113 if (pages) 1140 if (pages)
1114 foll_flags |= FOLL_GET; 1141 foll_flags |= FOLL_GET;
1115 if (!write && !(vma->vm_flags & VM_LOCKED) && 1142 if (!write && use_zero_page(vma))
1116 (!vma->vm_ops || !vma->vm_ops->fault))
1117 foll_flags |= FOLL_ANON; 1143 foll_flags |= FOLL_ANON;
1118 1144
1119 do { 1145 do {
@@ -1125,7 +1151,7 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
1125 * be processed until returning to user space. 1151 * be processed until returning to user space.
1126 */ 1152 */
1127 if (unlikely(test_tsk_thread_flag(tsk, TIF_MEMDIE))) 1153 if (unlikely(test_tsk_thread_flag(tsk, TIF_MEMDIE)))
1128 return -ENOMEM; 1154 return i ? i : -ENOMEM;
1129 1155
1130 if (write) 1156 if (write)
1131 foll_flags |= FOLL_WRITE; 1157 foll_flags |= FOLL_WRITE;
@@ -1159,6 +1185,8 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
1159 1185
1160 cond_resched(); 1186 cond_resched();
1161 } 1187 }
1188 if (IS_ERR(page))
1189 return i ? i : PTR_ERR(page);
1162 if (pages) { 1190 if (pages) {
1163 pages[i] = page; 1191 pages[i] = page;
1164 1192
@@ -1669,8 +1697,19 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
1669 struct page *dirty_page = NULL; 1697 struct page *dirty_page = NULL;
1670 1698
1671 old_page = vm_normal_page(vma, address, orig_pte); 1699 old_page = vm_normal_page(vma, address, orig_pte);
1672 if (!old_page) 1700 if (!old_page) {
1701 /*
1702 * VM_MIXEDMAP !pfn_valid() case
1703 *
1704 * We should not cow pages in a shared writeable mapping.
1705 * Just mark the pages writable as we can't do any dirty
1706 * accounting on raw pfn maps.
1707 */
1708 if ((vma->vm_flags & (VM_WRITE|VM_SHARED)) ==
1709 (VM_WRITE|VM_SHARED))
1710 goto reuse;
1673 goto gotten; 1711 goto gotten;
1712 }
1674 1713
1675 /* 1714 /*
1676 * Take out anonymous pages first, anonymous shared vmas are 1715 * Take out anonymous pages first, anonymous shared vmas are
@@ -1723,6 +1762,7 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
1723 } 1762 }
1724 1763
1725 if (reuse) { 1764 if (reuse) {
1765reuse:
1726 flush_cache_page(vma, address, pte_pfn(orig_pte)); 1766 flush_cache_page(vma, address, pte_pfn(orig_pte));
1727 entry = pte_mkyoung(orig_pte); 1767 entry = pte_mkyoung(orig_pte);
1728 entry = maybe_mkwrite(pte_mkdirty(entry), vma); 1768 entry = maybe_mkwrite(pte_mkdirty(entry), vma);
@@ -1757,7 +1797,6 @@ gotten:
1757 page_table = pte_offset_map_lock(mm, pmd, address, &ptl); 1797 page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
1758 if (likely(pte_same(*page_table, orig_pte))) { 1798 if (likely(pte_same(*page_table, orig_pte))) {
1759 if (old_page) { 1799 if (old_page) {
1760 page_remove_rmap(old_page, vma);
1761 if (!PageAnon(old_page)) { 1800 if (!PageAnon(old_page)) {
1762 dec_mm_counter(mm, file_rss); 1801 dec_mm_counter(mm, file_rss);
1763 inc_mm_counter(mm, anon_rss); 1802 inc_mm_counter(mm, anon_rss);
@@ -1779,6 +1818,32 @@ gotten:
1779 lru_cache_add_active(new_page); 1818 lru_cache_add_active(new_page);
1780 page_add_new_anon_rmap(new_page, vma, address); 1819 page_add_new_anon_rmap(new_page, vma, address);
1781 1820
1821 if (old_page) {
1822 /*
1823 * Only after switching the pte to the new page may
1824 * we remove the mapcount here. Otherwise another
1825 * process may come and find the rmap count decremented
1826 * before the pte is switched to the new page, and
1827 * "reuse" the old page writing into it while our pte
1828 * here still points into it and can be read by other
1829 * threads.
1830 *
1831 * The critical issue is to order this
1832 * page_remove_rmap with the ptp_clear_flush above.
1833 * Those stores are ordered by (if nothing else,)
1834 * the barrier present in the atomic_add_negative
1835 * in page_remove_rmap.
1836 *
1837 * Then the TLB flush in ptep_clear_flush ensures that
1838 * no process can access the old page before the
1839 * decremented mapcount is visible. And the old page
1840 * cannot be reused until after the decremented
1841 * mapcount is visible. So transitively, TLBs to
1842 * old page will be flushed before it can be reused.
1843 */
1844 page_remove_rmap(old_page, vma);
1845 }
1846
1782 /* Free the old page.. */ 1847 /* Free the old page.. */
1783 new_page = old_page; 1848 new_page = old_page;
1784 ret |= VM_FAULT_WRITE; 1849 ret |= VM_FAULT_WRITE;
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index a37a5034f63d..c94e58b192c3 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -729,7 +729,11 @@ static long do_get_mempolicy(int *policy, nodemask_t *nmask,
729 } else { 729 } else {
730 *policy = pol == &default_policy ? MPOL_DEFAULT : 730 *policy = pol == &default_policy ? MPOL_DEFAULT :
731 pol->mode; 731 pol->mode;
732 *policy |= pol->flags; 732 /*
733 * Internal mempolicy flags must be masked off before exposing
734 * the policy to userspace.
735 */
736 *policy |= (pol->flags & MPOL_MODE_FLAGS);
733 } 737 }
734 738
735 if (vma) { 739 if (vma) {
diff --git a/mm/migrate.c b/mm/migrate.c
index 449d77d409f5..55bd355d170d 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -9,7 +9,7 @@
9 * IWAMOTO Toshihiro <iwamoto@valinux.co.jp> 9 * IWAMOTO Toshihiro <iwamoto@valinux.co.jp>
10 * Hirokazu Takahashi <taka@valinux.co.jp> 10 * Hirokazu Takahashi <taka@valinux.co.jp>
11 * Dave Hansen <haveblue@us.ibm.com> 11 * Dave Hansen <haveblue@us.ibm.com>
12 * Christoph Lameter <clameter@sgi.com> 12 * Christoph Lameter
13 */ 13 */
14 14
15#include <linux/migrate.h> 15#include <linux/migrate.h>
@@ -865,6 +865,11 @@ static int do_move_pages(struct mm_struct *mm, struct page_to_node *pm,
865 goto set_status; 865 goto set_status;
866 866
867 page = follow_page(vma, pp->addr, FOLL_GET); 867 page = follow_page(vma, pp->addr, FOLL_GET);
868
869 err = PTR_ERR(page);
870 if (IS_ERR(page))
871 goto set_status;
872
868 err = -ENOENT; 873 err = -ENOENT;
869 if (!page) 874 if (!page)
870 goto set_status; 875 goto set_status;
@@ -928,6 +933,11 @@ static int do_pages_stat(struct mm_struct *mm, struct page_to_node *pm)
928 goto set_status; 933 goto set_status;
929 934
930 page = follow_page(vma, pm->addr, 0); 935 page = follow_page(vma, pm->addr, 0);
936
937 err = PTR_ERR(page);
938 if (IS_ERR(page))
939 goto set_status;
940
931 err = -ENOENT; 941 err = -ENOENT;
932 /* Use PageReserved to check for zero page */ 942 /* Use PageReserved to check for zero page */
933 if (!page || PageReserved(page)) 943 if (!page || PageReserved(page))
diff --git a/mm/mprotect.c b/mm/mprotect.c
index a5bf31c27375..acfe7c8d72fc 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -47,19 +47,17 @@ static void change_pte_range(struct mm_struct *mm, pmd_t *pmd,
47 if (pte_present(oldpte)) { 47 if (pte_present(oldpte)) {
48 pte_t ptent; 48 pte_t ptent;
49 49
50 /* Avoid an SMP race with hardware updated dirty/clean 50 ptent = ptep_modify_prot_start(mm, addr, pte);
51 * bits by wiping the pte and then setting the new pte
52 * into place.
53 */
54 ptent = ptep_get_and_clear(mm, addr, pte);
55 ptent = pte_modify(ptent, newprot); 51 ptent = pte_modify(ptent, newprot);
52
56 /* 53 /*
57 * Avoid taking write faults for pages we know to be 54 * Avoid taking write faults for pages we know to be
58 * dirty. 55 * dirty.
59 */ 56 */
60 if (dirty_accountable && pte_dirty(ptent)) 57 if (dirty_accountable && pte_dirty(ptent))
61 ptent = pte_mkwrite(ptent); 58 ptent = pte_mkwrite(ptent);
62 set_pte_at(mm, addr, pte, ptent); 59
60 ptep_modify_prot_commit(mm, addr, pte, ptent);
63#ifdef CONFIG_MIGRATION 61#ifdef CONFIG_MIGRATION
64 } else if (!pte_file(oldpte)) { 62 } else if (!pte_file(oldpte)) {
65 swp_entry_t entry = pte_to_swp_entry(oldpte); 63 swp_entry_t entry = pte_to_swp_entry(oldpte);
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 2f552955a02f..f32fae3121f0 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2328,7 +2328,6 @@ static void build_zonelists(pg_data_t *pgdat)
2328static void build_zonelist_cache(pg_data_t *pgdat) 2328static void build_zonelist_cache(pg_data_t *pgdat)
2329{ 2329{
2330 pgdat->node_zonelists[0].zlcache_ptr = NULL; 2330 pgdat->node_zonelists[0].zlcache_ptr = NULL;
2331 pgdat->node_zonelists[1].zlcache_ptr = NULL;
2332} 2331}
2333 2332
2334#endif /* CONFIG_NUMA */ 2333#endif /* CONFIG_NUMA */
diff --git a/mm/slab.c b/mm/slab.c
index 06236e4ddc1b..046607f05f3e 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3263,9 +3263,12 @@ retry:
3263 3263
3264 if (cpuset_zone_allowed_hardwall(zone, flags) && 3264 if (cpuset_zone_allowed_hardwall(zone, flags) &&
3265 cache->nodelists[nid] && 3265 cache->nodelists[nid] &&
3266 cache->nodelists[nid]->free_objects) 3266 cache->nodelists[nid]->free_objects) {
3267 obj = ____cache_alloc_node(cache, 3267 obj = ____cache_alloc_node(cache,
3268 flags | GFP_THISNODE, nid); 3268 flags | GFP_THISNODE, nid);
3269 if (obj)
3270 break;
3271 }
3269 } 3272 }
3270 3273
3271 if (!obj) { 3274 if (!obj) {
diff --git a/mm/slub.c b/mm/slub.c
index 0987d1cd943c..1a427c0ae83b 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -5,7 +5,7 @@
5 * The allocator synchronizes using per slab locks and only 5 * The allocator synchronizes using per slab locks and only
6 * uses a centralized lock to manage a pool of partial slabs. 6 * uses a centralized lock to manage a pool of partial slabs.
7 * 7 *
8 * (C) 2007 SGI, Christoph Lameter <clameter@sgi.com> 8 * (C) 2007 SGI, Christoph Lameter
9 */ 9 */
10 10
11#include <linux/mm.h> 11#include <linux/mm.h>
@@ -2995,8 +2995,6 @@ void __init kmem_cache_init(void)
2995 create_kmalloc_cache(&kmalloc_caches[1], 2995 create_kmalloc_cache(&kmalloc_caches[1],
2996 "kmalloc-96", 96, GFP_KERNEL); 2996 "kmalloc-96", 96, GFP_KERNEL);
2997 caches++; 2997 caches++;
2998 }
2999 if (KMALLOC_MIN_SIZE <= 128) {
3000 create_kmalloc_cache(&kmalloc_caches[2], 2998 create_kmalloc_cache(&kmalloc_caches[2],
3001 "kmalloc-192", 192, GFP_KERNEL); 2999 "kmalloc-192", 192, GFP_KERNEL);
3002 caches++; 3000 caches++;
@@ -3026,6 +3024,16 @@ void __init kmem_cache_init(void)
3026 for (i = 8; i < KMALLOC_MIN_SIZE; i += 8) 3024 for (i = 8; i < KMALLOC_MIN_SIZE; i += 8)
3027 size_index[(i - 1) / 8] = KMALLOC_SHIFT_LOW; 3025 size_index[(i - 1) / 8] = KMALLOC_SHIFT_LOW;
3028 3026
3027 if (KMALLOC_MIN_SIZE == 128) {
3028 /*
3029 * The 192 byte sized cache is not used if the alignment
3030 * is 128 byte. Redirect kmalloc to use the 256 byte cache
3031 * instead.
3032 */
3033 for (i = 128 + 8; i <= 192; i += 8)
3034 size_index[(i - 1) / 8] = 8;
3035 }
3036
3029 slab_state = UP; 3037 slab_state = UP;
3030 3038
3031 /* Provide the correct kmalloc names now that the caches are up */ 3039 /* Provide the correct kmalloc names now that the caches are up */
diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
index 99c4f36eb8a3..a91b5f8fcaf6 100644
--- a/mm/sparse-vmemmap.c
+++ b/mm/sparse-vmemmap.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Virtual Memory Map support 2 * Virtual Memory Map support
3 * 3 *
4 * (C) 2007 sgi. Christoph Lameter <clameter@sgi.com>. 4 * (C) 2007 sgi. Christoph Lameter.
5 * 5 *
6 * Virtual memory maps allow VM primitives pfn_to_page, page_to_pfn, 6 * Virtual memory maps allow VM primitives pfn_to_page, page_to_pfn,
7 * virt_to_page, page_address() to be implemented as a base offset 7 * virt_to_page, page_address() to be implemented as a base offset
diff --git a/net/atm/br2684.c b/net/atm/br2684.c
index 9d52ebfc1962..05fafdc2eea3 100644
--- a/net/atm/br2684.c
+++ b/net/atm/br2684.c
@@ -188,10 +188,13 @@ static int br2684_xmit_vcc(struct sk_buff *skb, struct br2684_dev *brdev,
188 return 0; 188 return 0;
189 } 189 }
190 } 190 }
191 } else { 191 } else { /* e_vc */
192 skb_push(skb, 2); 192 if (brdev->payload == p_bridged) {
193 if (brdev->payload == p_bridged) 193 skb_push(skb, 2);
194 memset(skb->data, 0, 2); 194 memset(skb->data, 0, 2);
195 } else { /* p_routed */
196 skb_pull(skb, ETH_HLEN);
197 }
195 } 198 }
196 skb_debug(skb); 199 skb_debug(skb);
197 200
@@ -377,11 +380,8 @@ static void br2684_push(struct atm_vcc *atmvcc, struct sk_buff *skb)
377 (skb->data + 6, ethertype_ipv4, 380 (skb->data + 6, ethertype_ipv4,
378 sizeof(ethertype_ipv4)) == 0) 381 sizeof(ethertype_ipv4)) == 0)
379 skb->protocol = __constant_htons(ETH_P_IP); 382 skb->protocol = __constant_htons(ETH_P_IP);
380 else { 383 else
381 brdev->stats.rx_errors++; 384 goto error;
382 dev_kfree_skb(skb);
383 return;
384 }
385 skb_pull(skb, sizeof(llc_oui_ipv4)); 385 skb_pull(skb, sizeof(llc_oui_ipv4));
386 skb_reset_network_header(skb); 386 skb_reset_network_header(skb);
387 skb->pkt_type = PACKET_HOST; 387 skb->pkt_type = PACKET_HOST;
@@ -394,44 +394,56 @@ static void br2684_push(struct atm_vcc *atmvcc, struct sk_buff *skb)
394 (memcmp(skb->data, llc_oui_pid_pad, 7) == 0)) { 394 (memcmp(skb->data, llc_oui_pid_pad, 7) == 0)) {
395 skb_pull(skb, sizeof(llc_oui_pid_pad)); 395 skb_pull(skb, sizeof(llc_oui_pid_pad));
396 skb->protocol = eth_type_trans(skb, net_dev); 396 skb->protocol = eth_type_trans(skb, net_dev);
397 } else { 397 } else
398 brdev->stats.rx_errors++; 398 goto error;
399 dev_kfree_skb(skb);
400 return;
401 }
402 399
403 } else { 400 } else { /* e_vc */
404 /* first 2 chars should be 0 */ 401 if (brdev->payload == p_routed) {
405 if (*((u16 *) (skb->data)) != 0) { 402 struct iphdr *iph;
406 brdev->stats.rx_errors++; 403
407 dev_kfree_skb(skb); 404 skb_reset_network_header(skb);
408 return; 405 iph = ip_hdr(skb);
406 if (iph->version == 4)
407 skb->protocol = __constant_htons(ETH_P_IP);
408 else if (iph->version == 6)
409 skb->protocol = __constant_htons(ETH_P_IPV6);
410 else
411 goto error;
412 skb->pkt_type = PACKET_HOST;
413 } else { /* p_bridged */
414 /* first 2 chars should be 0 */
415 if (*((u16 *) (skb->data)) != 0)
416 goto error;
417 skb_pull(skb, BR2684_PAD_LEN);
418 skb->protocol = eth_type_trans(skb, net_dev);
409 } 419 }
410 skb_pull(skb, BR2684_PAD_LEN + ETH_HLEN); /* pad, dstmac, srcmac, ethtype */
411 skb->protocol = eth_type_trans(skb, net_dev);
412 } 420 }
413 421
414#ifdef CONFIG_ATM_BR2684_IPFILTER 422#ifdef CONFIG_ATM_BR2684_IPFILTER
415 if (unlikely(packet_fails_filter(skb->protocol, brvcc, skb))) { 423 if (unlikely(packet_fails_filter(skb->protocol, brvcc, skb)))
416 brdev->stats.rx_dropped++; 424 goto dropped;
417 dev_kfree_skb(skb);
418 return;
419 }
420#endif /* CONFIG_ATM_BR2684_IPFILTER */ 425#endif /* CONFIG_ATM_BR2684_IPFILTER */
421 skb->dev = net_dev; 426 skb->dev = net_dev;
422 ATM_SKB(skb)->vcc = atmvcc; /* needed ? */ 427 ATM_SKB(skb)->vcc = atmvcc; /* needed ? */
423 pr_debug("received packet's protocol: %x\n", ntohs(skb->protocol)); 428 pr_debug("received packet's protocol: %x\n", ntohs(skb->protocol));
424 skb_debug(skb); 429 skb_debug(skb);
425 if (unlikely(!(net_dev->flags & IFF_UP))) { 430 /* sigh, interface is down? */
426 /* sigh, interface is down */ 431 if (unlikely(!(net_dev->flags & IFF_UP)))
427 brdev->stats.rx_dropped++; 432 goto dropped;
428 dev_kfree_skb(skb);
429 return;
430 }
431 brdev->stats.rx_packets++; 433 brdev->stats.rx_packets++;
432 brdev->stats.rx_bytes += skb->len; 434 brdev->stats.rx_bytes += skb->len;
433 memset(ATM_SKB(skb), 0, sizeof(struct atm_skb_data)); 435 memset(ATM_SKB(skb), 0, sizeof(struct atm_skb_data));
434 netif_rx(skb); 436 netif_rx(skb);
437 return;
438
439dropped:
440 brdev->stats.rx_dropped++;
441 goto free_skb;
442error:
443 brdev->stats.rx_errors++;
444free_skb:
445 dev_kfree_skb(skb);
446 return;
435} 447}
436 448
437/* 449/*
@@ -518,9 +530,9 @@ static int br2684_regvcc(struct atm_vcc *atmvcc, void __user * arg)
518 struct sk_buff *next = skb->next; 530 struct sk_buff *next = skb->next;
519 531
520 skb->next = skb->prev = NULL; 532 skb->next = skb->prev = NULL;
533 br2684_push(atmvcc, skb);
521 BRPRIV(skb->dev)->stats.rx_bytes -= skb->len; 534 BRPRIV(skb->dev)->stats.rx_bytes -= skb->len;
522 BRPRIV(skb->dev)->stats.rx_packets--; 535 BRPRIV(skb->dev)->stats.rx_packets--;
523 br2684_push(atmvcc, skb);
524 536
525 skb = next; 537 skb = next;
526 } 538 }
diff --git a/net/core/dev.c b/net/core/dev.c
index 582963077877..fca23a3bf12c 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -119,6 +119,7 @@
119#include <linux/err.h> 119#include <linux/err.h>
120#include <linux/ctype.h> 120#include <linux/ctype.h>
121#include <linux/if_arp.h> 121#include <linux/if_arp.h>
122#include <linux/if_vlan.h>
122 123
123#include "net-sysfs.h" 124#include "net-sysfs.h"
124 125
@@ -453,7 +454,7 @@ static int netdev_boot_setup_add(char *name, struct ifmap *map)
453 for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) { 454 for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
454 if (s[i].name[0] == '\0' || s[i].name[0] == ' ') { 455 if (s[i].name[0] == '\0' || s[i].name[0] == ' ') {
455 memset(s[i].name, 0, sizeof(s[i].name)); 456 memset(s[i].name, 0, sizeof(s[i].name));
456 strcpy(s[i].name, name); 457 strlcpy(s[i].name, name, IFNAMSIZ);
457 memcpy(&s[i].map, map, sizeof(s[i].map)); 458 memcpy(&s[i].map, map, sizeof(s[i].map));
458 break; 459 break;
459 } 460 }
@@ -478,7 +479,7 @@ int netdev_boot_setup_check(struct net_device *dev)
478 479
479 for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) { 480 for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
480 if (s[i].name[0] != '\0' && s[i].name[0] != ' ' && 481 if (s[i].name[0] != '\0' && s[i].name[0] != ' ' &&
481 !strncmp(dev->name, s[i].name, strlen(s[i].name))) { 482 !strcmp(dev->name, s[i].name)) {
482 dev->irq = s[i].map.irq; 483 dev->irq = s[i].map.irq;
483 dev->base_addr = s[i].map.base_addr; 484 dev->base_addr = s[i].map.base_addr;
484 dev->mem_start = s[i].map.mem_start; 485 dev->mem_start = s[i].map.mem_start;
@@ -1362,6 +1363,29 @@ void netif_device_attach(struct net_device *dev)
1362} 1363}
1363EXPORT_SYMBOL(netif_device_attach); 1364EXPORT_SYMBOL(netif_device_attach);
1364 1365
1366static bool can_checksum_protocol(unsigned long features, __be16 protocol)
1367{
1368 return ((features & NETIF_F_GEN_CSUM) ||
1369 ((features & NETIF_F_IP_CSUM) &&
1370 protocol == htons(ETH_P_IP)) ||
1371 ((features & NETIF_F_IPV6_CSUM) &&
1372 protocol == htons(ETH_P_IPV6)));
1373}
1374
1375static bool dev_can_checksum(struct net_device *dev, struct sk_buff *skb)
1376{
1377 if (can_checksum_protocol(dev->features, skb->protocol))
1378 return true;
1379
1380 if (skb->protocol == htons(ETH_P_8021Q)) {
1381 struct vlan_ethhdr *veh = (struct vlan_ethhdr *)skb->data;
1382 if (can_checksum_protocol(dev->features & dev->vlan_features,
1383 veh->h_vlan_encapsulated_proto))
1384 return true;
1385 }
1386
1387 return false;
1388}
1365 1389
1366/* 1390/*
1367 * Invalidate hardware checksum when packet is to be mangled, and 1391 * Invalidate hardware checksum when packet is to be mangled, and
@@ -1640,14 +1664,8 @@ int dev_queue_xmit(struct sk_buff *skb)
1640 if (skb->ip_summed == CHECKSUM_PARTIAL) { 1664 if (skb->ip_summed == CHECKSUM_PARTIAL) {
1641 skb_set_transport_header(skb, skb->csum_start - 1665 skb_set_transport_header(skb, skb->csum_start -
1642 skb_headroom(skb)); 1666 skb_headroom(skb));
1643 1667 if (!dev_can_checksum(dev, skb) && skb_checksum_help(skb))
1644 if (!(dev->features & NETIF_F_GEN_CSUM) && 1668 goto out_kfree_skb;
1645 !((dev->features & NETIF_F_IP_CSUM) &&
1646 skb->protocol == htons(ETH_P_IP)) &&
1647 !((dev->features & NETIF_F_IPV6_CSUM) &&
1648 skb->protocol == htons(ETH_P_IPV6)))
1649 if (skb_checksum_help(skb))
1650 goto out_kfree_skb;
1651 } 1669 }
1652 1670
1653gso: 1671gso:
@@ -2059,6 +2077,10 @@ int netif_receive_skb(struct sk_buff *skb)
2059 2077
2060 rcu_read_lock(); 2078 rcu_read_lock();
2061 2079
2080 /* Don't receive packets in an exiting network namespace */
2081 if (!net_alive(dev_net(skb->dev)))
2082 goto out;
2083
2062#ifdef CONFIG_NET_CLS_ACT 2084#ifdef CONFIG_NET_CLS_ACT
2063 if (skb->tc_verd & TC_NCLS) { 2085 if (skb->tc_verd & TC_NCLS) {
2064 skb->tc_verd = CLR_TC_NCLS(skb->tc_verd); 2086 skb->tc_verd = CLR_TC_NCLS(skb->tc_verd);
@@ -2951,7 +2973,7 @@ EXPORT_SYMBOL(dev_unicast_delete);
2951/** 2973/**
2952 * dev_unicast_add - add a secondary unicast address 2974 * dev_unicast_add - add a secondary unicast address
2953 * @dev: device 2975 * @dev: device
2954 * @addr: address to delete 2976 * @addr: address to add
2955 * @alen: length of @addr 2977 * @alen: length of @addr
2956 * 2978 *
2957 * Add a secondary unicast address to the device or increase 2979 * Add a secondary unicast address to the device or increase
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c
index e3e9ab0f74e3..277a2302eb3a 100644
--- a/net/core/fib_rules.c
+++ b/net/core/fib_rules.c
@@ -226,7 +226,7 @@ static int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
226 226
227 ops = lookup_rules_ops(net, frh->family); 227 ops = lookup_rules_ops(net, frh->family);
228 if (ops == NULL) { 228 if (ops == NULL) {
229 err = EAFNOSUPPORT; 229 err = -EAFNOSUPPORT;
230 goto errout; 230 goto errout;
231 } 231 }
232 232
@@ -365,7 +365,7 @@ static int fib_nl_delrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
365 365
366 ops = lookup_rules_ops(net, frh->family); 366 ops = lookup_rules_ops(net, frh->family);
367 if (ops == NULL) { 367 if (ops == NULL) {
368 err = EAFNOSUPPORT; 368 err = -EAFNOSUPPORT;
369 goto errout; 369 goto errout;
370 } 370 }
371 371
diff --git a/net/core/filter.c b/net/core/filter.c
index 4f8369729a4e..df3744355839 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -68,7 +68,6 @@ static inline void *load_pointer(struct sk_buff *skb, int k,
68 * sk_filter - run a packet through a socket filter 68 * sk_filter - run a packet through a socket filter
69 * @sk: sock associated with &sk_buff 69 * @sk: sock associated with &sk_buff
70 * @skb: buffer to filter 70 * @skb: buffer to filter
71 * @needlock: set to 1 if the sock is not locked by caller.
72 * 71 *
73 * Run the filter code and then cut skb->data to correct size returned by 72 * Run the filter code and then cut skb->data to correct size returned by
74 * sk_run_filter. If pkt_len is 0 we toss packet. If skb->len is smaller 73 * sk_run_filter. If pkt_len is 0 we toss packet. If skb->len is smaller
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 72b4c184dd84..7c52fe277b62 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -140,6 +140,9 @@ static void cleanup_net(struct work_struct *work)
140 struct pernet_operations *ops; 140 struct pernet_operations *ops;
141 struct net *net; 141 struct net *net;
142 142
143 /* Be very certain incoming network packets will not find us */
144 rcu_barrier();
145
143 net = container_of(work, struct net, work); 146 net = container_of(work, struct net, work);
144 147
145 mutex_lock(&net_mutex); 148 mutex_lock(&net_mutex);
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 1e556d312117..366621610e76 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -1292,12 +1292,14 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset,
1292{ 1292{
1293 unsigned int nr_pages = spd->nr_pages; 1293 unsigned int nr_pages = spd->nr_pages;
1294 unsigned int poff, plen, len, toff, tlen; 1294 unsigned int poff, plen, len, toff, tlen;
1295 int headlen, seg; 1295 int headlen, seg, error = 0;
1296 1296
1297 toff = *offset; 1297 toff = *offset;
1298 tlen = *total_len; 1298 tlen = *total_len;
1299 if (!tlen) 1299 if (!tlen) {
1300 error = 1;
1300 goto err; 1301 goto err;
1302 }
1301 1303
1302 /* 1304 /*
1303 * if the offset is greater than the linear part, go directly to 1305 * if the offset is greater than the linear part, go directly to
@@ -1339,7 +1341,8 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset,
1339 * just jump directly to update and return, no point 1341 * just jump directly to update and return, no point
1340 * in going over fragments when the output is full. 1342 * in going over fragments when the output is full.
1341 */ 1343 */
1342 if (spd_fill_page(spd, virt_to_page(p), plen, poff, skb)) 1344 error = spd_fill_page(spd, virt_to_page(p), plen, poff, skb);
1345 if (error)
1343 goto done; 1346 goto done;
1344 1347
1345 tlen -= plen; 1348 tlen -= plen;
@@ -1369,7 +1372,8 @@ map_frag:
1369 if (!plen) 1372 if (!plen)
1370 break; 1373 break;
1371 1374
1372 if (spd_fill_page(spd, f->page, plen, poff, skb)) 1375 error = spd_fill_page(spd, f->page, plen, poff, skb);
1376 if (error)
1373 break; 1377 break;
1374 1378
1375 tlen -= plen; 1379 tlen -= plen;
@@ -1382,7 +1386,10 @@ done:
1382 return 0; 1386 return 0;
1383 } 1387 }
1384err: 1388err:
1385 return 1; 1389 /* update the offset to reflect the linear part skip, if any */
1390 if (!error)
1391 *offset = toff;
1392 return error;
1386} 1393}
1387 1394
1388/* 1395/*
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
index 045e799d3e1d..ec834480abe7 100644
--- a/net/ipv4/inet_connection_sock.c
+++ b/net/ipv4/inet_connection_sock.c
@@ -466,9 +466,9 @@ void inet_csk_reqsk_queue_prune(struct sock *parent,
466 reqp=&lopt->syn_table[i]; 466 reqp=&lopt->syn_table[i];
467 while ((req = *reqp) != NULL) { 467 while ((req = *reqp) != NULL) {
468 if (time_after_eq(now, req->expires)) { 468 if (time_after_eq(now, req->expires)) {
469 if ((req->retrans < (inet_rsk(req)->acked ? max_retries : thresh)) && 469 if ((req->retrans < thresh ||
470 (inet_rsk(req)->acked || 470 (inet_rsk(req)->acked && req->retrans < max_retries))
471 !req->rsk_ops->rtx_syn_ack(parent, req))) { 471 && !req->rsk_ops->rtx_syn_ack(parent, req)) {
472 unsigned long timeo; 472 unsigned long timeo;
473 473
474 if (req->retrans++ == 0) 474 if (req->retrans++ == 0)
diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c
index 4ed429bd5951..0546a0bc97ea 100644
--- a/net/ipv4/inet_fragment.c
+++ b/net/ipv4/inet_fragment.c
@@ -192,14 +192,21 @@ EXPORT_SYMBOL(inet_frag_evictor);
192 192
193static struct inet_frag_queue *inet_frag_intern(struct netns_frags *nf, 193static struct inet_frag_queue *inet_frag_intern(struct netns_frags *nf,
194 struct inet_frag_queue *qp_in, struct inet_frags *f, 194 struct inet_frag_queue *qp_in, struct inet_frags *f,
195 unsigned int hash, void *arg) 195 void *arg)
196{ 196{
197 struct inet_frag_queue *qp; 197 struct inet_frag_queue *qp;
198#ifdef CONFIG_SMP 198#ifdef CONFIG_SMP
199 struct hlist_node *n; 199 struct hlist_node *n;
200#endif 200#endif
201 unsigned int hash;
201 202
202 write_lock(&f->lock); 203 write_lock(&f->lock);
204 /*
205 * While we stayed w/o the lock other CPU could update
206 * the rnd seed, so we need to re-calculate the hash
207 * chain. Fortunatelly the qp_in can be used to get one.
208 */
209 hash = f->hashfn(qp_in);
203#ifdef CONFIG_SMP 210#ifdef CONFIG_SMP
204 /* With SMP race we have to recheck hash table, because 211 /* With SMP race we have to recheck hash table, because
205 * such entry could be created on other cpu, while we 212 * such entry could be created on other cpu, while we
@@ -247,7 +254,7 @@ static struct inet_frag_queue *inet_frag_alloc(struct netns_frags *nf,
247} 254}
248 255
249static struct inet_frag_queue *inet_frag_create(struct netns_frags *nf, 256static struct inet_frag_queue *inet_frag_create(struct netns_frags *nf,
250 struct inet_frags *f, void *arg, unsigned int hash) 257 struct inet_frags *f, void *arg)
251{ 258{
252 struct inet_frag_queue *q; 259 struct inet_frag_queue *q;
253 260
@@ -255,7 +262,7 @@ static struct inet_frag_queue *inet_frag_create(struct netns_frags *nf,
255 if (q == NULL) 262 if (q == NULL)
256 return NULL; 263 return NULL;
257 264
258 return inet_frag_intern(nf, q, f, hash, arg); 265 return inet_frag_intern(nf, q, f, arg);
259} 266}
260 267
261struct inet_frag_queue *inet_frag_find(struct netns_frags *nf, 268struct inet_frag_queue *inet_frag_find(struct netns_frags *nf,
@@ -264,7 +271,6 @@ struct inet_frag_queue *inet_frag_find(struct netns_frags *nf,
264 struct inet_frag_queue *q; 271 struct inet_frag_queue *q;
265 struct hlist_node *n; 272 struct hlist_node *n;
266 273
267 read_lock(&f->lock);
268 hlist_for_each_entry(q, n, &f->hash[hash], list) { 274 hlist_for_each_entry(q, n, &f->hash[hash], list) {
269 if (q->net == nf && f->match(q, key)) { 275 if (q->net == nf && f->match(q, key)) {
270 atomic_inc(&q->refcnt); 276 atomic_inc(&q->refcnt);
@@ -274,6 +280,6 @@ struct inet_frag_queue *inet_frag_find(struct netns_frags *nf,
274 } 280 }
275 read_unlock(&f->lock); 281 read_unlock(&f->lock);
276 282
277 return inet_frag_create(nf, f, key, hash); 283 return inet_frag_create(nf, f, key);
278} 284}
279EXPORT_SYMBOL(inet_frag_find); 285EXPORT_SYMBOL(inet_frag_find);
diff --git a/net/ipv4/inet_lro.c b/net/ipv4/inet_lro.c
index 4a4d49fca1f2..cfd034a2b96e 100644
--- a/net/ipv4/inet_lro.c
+++ b/net/ipv4/inet_lro.c
@@ -383,8 +383,7 @@ static int __lro_proc_skb(struct net_lro_mgr *lro_mgr, struct sk_buff *skb,
383out2: /* send aggregated SKBs to stack */ 383out2: /* send aggregated SKBs to stack */
384 lro_flush(lro_mgr, lro_desc); 384 lro_flush(lro_mgr, lro_desc);
385 385
386out: /* Original SKB has to be posted to stack */ 386out:
387 skb->ip_summed = lro_mgr->ip_summed;
388 return 1; 387 return 1;
389} 388}
390 389
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
index cd6ce6ac6358..37221f659159 100644
--- a/net/ipv4/ip_fragment.c
+++ b/net/ipv4/ip_fragment.c
@@ -229,6 +229,8 @@ static inline struct ipq *ip_find(struct net *net, struct iphdr *iph, u32 user)
229 229
230 arg.iph = iph; 230 arg.iph = iph;
231 arg.user = user; 231 arg.user = user;
232
233 read_lock(&ip4_frags.lock);
232 hash = ipqhashfn(iph->id, iph->saddr, iph->daddr, iph->protocol); 234 hash = ipqhashfn(iph->id, iph->saddr, iph->daddr, iph->protocol);
233 235
234 q = inet_frag_find(&net->ipv4.frags, &ip4_frags, &arg, hash); 236 q = inet_frag_find(&net->ipv4.frags, &ip4_frags, &arg, hash);
diff --git a/net/ipv4/netfilter/nf_nat_core.c b/net/ipv4/netfilter/nf_nat_core.c
index 04578593e100..d2a887fc8d9b 100644
--- a/net/ipv4/netfilter/nf_nat_core.c
+++ b/net/ipv4/netfilter/nf_nat_core.c
@@ -556,7 +556,6 @@ static void nf_nat_cleanup_conntrack(struct nf_conn *ct)
556 556
557 spin_lock_bh(&nf_nat_lock); 557 spin_lock_bh(&nf_nat_lock);
558 hlist_del_rcu(&nat->bysource); 558 hlist_del_rcu(&nat->bysource);
559 nat->ct = NULL;
560 spin_unlock_bh(&nf_nat_lock); 559 spin_unlock_bh(&nf_nat_lock);
561} 560}
562 561
@@ -570,8 +569,8 @@ static void nf_nat_move_storage(void *new, void *old)
570 return; 569 return;
571 570
572 spin_lock_bh(&nf_nat_lock); 571 spin_lock_bh(&nf_nat_lock);
573 hlist_replace_rcu(&old_nat->bysource, &new_nat->bysource);
574 new_nat->ct = ct; 572 new_nat->ct = ct;
573 hlist_replace_rcu(&old_nat->bysource, &new_nat->bysource);
575 spin_unlock_bh(&nf_nat_lock); 574 spin_unlock_bh(&nf_nat_lock);
576} 575}
577 576
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index e7e091d365ff..37a1ecd9d600 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -934,7 +934,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
934 srcp = inet->num; 934 srcp = inet->num;
935 935
936 seq_printf(seq, "%4d: %08X:%04X %08X:%04X" 936 seq_printf(seq, "%4d: %08X:%04X %08X:%04X"
937 " %02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p %d", 937 " %02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p %d\n",
938 i, src, srcp, dest, destp, sp->sk_state, 938 i, src, srcp, dest, destp, sp->sk_state,
939 atomic_read(&sp->sk_wmem_alloc), 939 atomic_read(&sp->sk_wmem_alloc),
940 atomic_read(&sp->sk_rmem_alloc), 940 atomic_read(&sp->sk_rmem_alloc),
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index fc54a48fde1e..850825dc86e6 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -260,6 +260,8 @@
260#include <linux/socket.h> 260#include <linux/socket.h>
261#include <linux/random.h> 261#include <linux/random.h>
262#include <linux/bootmem.h> 262#include <linux/bootmem.h>
263#include <linux/highmem.h>
264#include <linux/swap.h>
263#include <linux/cache.h> 265#include <linux/cache.h>
264#include <linux/err.h> 266#include <linux/err.h>
265#include <linux/crypto.h> 267#include <linux/crypto.h>
@@ -2620,7 +2622,7 @@ __setup("thash_entries=", set_thash_entries);
2620void __init tcp_init(void) 2622void __init tcp_init(void)
2621{ 2623{
2622 struct sk_buff *skb = NULL; 2624 struct sk_buff *skb = NULL;
2623 unsigned long limit; 2625 unsigned long nr_pages, limit;
2624 int order, i, max_share; 2626 int order, i, max_share;
2625 2627
2626 BUILD_BUG_ON(sizeof(struct tcp_skb_cb) > sizeof(skb->cb)); 2628 BUILD_BUG_ON(sizeof(struct tcp_skb_cb) > sizeof(skb->cb));
@@ -2689,8 +2691,9 @@ void __init tcp_init(void)
2689 * is up to 1/2 at 256 MB, decreasing toward zero with the amount of 2691 * is up to 1/2 at 256 MB, decreasing toward zero with the amount of
2690 * memory, with a floor of 128 pages. 2692 * memory, with a floor of 128 pages.
2691 */ 2693 */
2692 limit = min(nr_all_pages, 1UL<<(28-PAGE_SHIFT)) >> (20-PAGE_SHIFT); 2694 nr_pages = totalram_pages - totalhigh_pages;
2693 limit = (limit * (nr_all_pages >> (20-PAGE_SHIFT))) >> (PAGE_SHIFT-11); 2695 limit = min(nr_pages, 1UL<<(28-PAGE_SHIFT)) >> (20-PAGE_SHIFT);
2696 limit = (limit * (nr_pages >> (20-PAGE_SHIFT))) >> (PAGE_SHIFT-11);
2694 limit = max(limit, 128UL); 2697 limit = max(limit, 128UL);
2695 sysctl_tcp_mem[0] = limit / 4 * 3; 2698 sysctl_tcp_mem[0] = limit / 4 * 3;
2696 sysctl_tcp_mem[1] = limit; 2699 sysctl_tcp_mem[1] = limit;
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 97a230026e13..ffe869ac1bcf 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -85,10 +85,6 @@
85int sysctl_tcp_tw_reuse __read_mostly; 85int sysctl_tcp_tw_reuse __read_mostly;
86int sysctl_tcp_low_latency __read_mostly; 86int sysctl_tcp_low_latency __read_mostly;
87 87
88/* Check TCP sequence numbers in ICMP packets. */
89#define ICMP_MIN_LENGTH 8
90
91void tcp_v4_send_check(struct sock *sk, int len, struct sk_buff *skb);
92 88
93#ifdef CONFIG_TCP_MD5SIG 89#ifdef CONFIG_TCP_MD5SIG
94static struct tcp_md5sig_key *tcp_v4_md5_do_lookup(struct sock *sk, 90static struct tcp_md5sig_key *tcp_v4_md5_do_lookup(struct sock *sk,
@@ -2295,7 +2291,7 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len)
2295 } 2291 }
2296 2292
2297 seq_printf(f, "%4d: %08X:%04X %08X:%04X %02X %08X:%08X %02X:%08lX " 2293 seq_printf(f, "%4d: %08X:%04X %08X:%04X %02X %08X:%08X %02X:%08lX "
2298 "%08X %5d %8d %lu %d %p %u %u %u %u %d%n", 2294 "%08X %5d %8d %lu %d %p %lu %lu %u %u %d%n",
2299 i, src, srcp, dest, destp, sk->sk_state, 2295 i, src, srcp, dest, destp, sk->sk_state,
2300 tp->write_seq - tp->snd_una, 2296 tp->write_seq - tp->snd_una,
2301 sk->sk_state == TCP_LISTEN ? sk->sk_ack_backlog : 2297 sk->sk_state == TCP_LISTEN ? sk->sk_ack_backlog :
@@ -2307,8 +2303,8 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len)
2307 icsk->icsk_probes_out, 2303 icsk->icsk_probes_out,
2308 sock_i_ino(sk), 2304 sock_i_ino(sk),
2309 atomic_read(&sk->sk_refcnt), sk, 2305 atomic_read(&sk->sk_refcnt), sk,
2310 icsk->icsk_rto, 2306 jiffies_to_clock_t(icsk->icsk_rto),
2311 icsk->icsk_ack.ato, 2307 jiffies_to_clock_t(icsk->icsk_ack.ato),
2312 (icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong, 2308 (icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong,
2313 tp->snd_cwnd, 2309 tp->snd_cwnd,
2314 tp->snd_ssthresh >= 0xFFFF ? -1 : tp->snd_ssthresh, 2310 tp->snd_ssthresh >= 0xFFFF ? -1 : tp->snd_ssthresh,
diff --git a/net/ipv4/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c
index 584e6d74e3a9..7135279f3f84 100644
--- a/net/ipv4/xfrm4_mode_tunnel.c
+++ b/net/ipv4/xfrm4_mode_tunnel.c
@@ -52,7 +52,7 @@ static int xfrm4_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
52 IP_ECN_clear(top_iph); 52 IP_ECN_clear(top_iph);
53 53
54 top_iph->frag_off = (flags & XFRM_STATE_NOPMTUDISC) ? 54 top_iph->frag_off = (flags & XFRM_STATE_NOPMTUDISC) ?
55 0 : XFRM_MODE_SKB_CB(skb)->frag_off; 55 0 : (XFRM_MODE_SKB_CB(skb)->frag_off & htons(IP_DF));
56 ip_select_ident(top_iph, dst->child, NULL); 56 ip_select_ident(top_iph, dst->child, NULL);
57 57
58 top_iph->ttl = dst_metric(dst->child, RTAX_HOPLIMIT); 58 top_iph->ttl = dst_metric(dst->child, RTAX_HOPLIMIT);
diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c
index 4e5c8615832c..17eb48b8e329 100644
--- a/net/ipv6/ip6_input.c
+++ b/net/ipv6/ip6_input.c
@@ -102,6 +102,15 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt
102 if (hdr->version != 6) 102 if (hdr->version != 6)
103 goto err; 103 goto err;
104 104
105 /*
106 * RFC4291 2.5.3
107 * A packet received on an interface with a destination address
108 * of loopback must be dropped.
109 */
110 if (!(dev->flags & IFF_LOOPBACK) &&
111 ipv6_addr_loopback(&hdr->daddr))
112 goto err;
113
105 skb->transport_header = skb->network_header + sizeof(*hdr); 114 skb->transport_header = skb->network_header + sizeof(*hdr);
106 IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr); 115 IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr);
107 116
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index c042ce19bd14..86e28a75267f 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -345,18 +345,21 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
345 case IPV6_DSTOPTS: 345 case IPV6_DSTOPTS:
346 { 346 {
347 struct ipv6_txoptions *opt; 347 struct ipv6_txoptions *opt;
348
349 /* remove any sticky options header with a zero option
350 * length, per RFC3542.
351 */
348 if (optlen == 0) 352 if (optlen == 0)
349 optval = NULL; 353 optval = NULL;
354 else if (optlen < sizeof(struct ipv6_opt_hdr) ||
355 optlen & 0x7 || optlen > 8 * 255)
356 goto e_inval;
350 357
351 /* hop-by-hop / destination options are privileged option */ 358 /* hop-by-hop / destination options are privileged option */
352 retv = -EPERM; 359 retv = -EPERM;
353 if (optname != IPV6_RTHDR && !capable(CAP_NET_RAW)) 360 if (optname != IPV6_RTHDR && !capable(CAP_NET_RAW))
354 break; 361 break;
355 362
356 if (optlen < sizeof(struct ipv6_opt_hdr) ||
357 optlen & 0x7 || optlen > 8 * 255)
358 goto e_inval;
359
360 opt = ipv6_renew_options(sk, np->opt, optname, 363 opt = ipv6_renew_options(sk, np->opt, optname,
361 (struct ipv6_opt_hdr __user *)optval, 364 (struct ipv6_opt_hdr __user *)optval,
362 optlen); 365 optlen);
diff --git a/net/ipv6/netfilter/ip6table_mangle.c b/net/ipv6/netfilter/ip6table_mangle.c
index 27a5e8b48d93..f405cea21a8b 100644
--- a/net/ipv6/netfilter/ip6table_mangle.c
+++ b/net/ipv6/netfilter/ip6table_mangle.c
@@ -129,7 +129,7 @@ static struct nf_hook_ops ip6t_ops[] __read_mostly = {
129 .priority = NF_IP6_PRI_MANGLE, 129 .priority = NF_IP6_PRI_MANGLE,
130 }, 130 },
131 { 131 {
132 .hook = ip6t_local_hook, 132 .hook = ip6t_route_hook,
133 .owner = THIS_MODULE, 133 .owner = THIS_MODULE,
134 .pf = PF_INET6, 134 .pf = PF_INET6,
135 .hooknum = NF_INET_LOCAL_IN, 135 .hooknum = NF_INET_LOCAL_IN,
diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
index e65e26e210ee..cf20bc4fd60d 100644
--- a/net/ipv6/netfilter/nf_conntrack_reasm.c
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
@@ -207,9 +207,10 @@ fq_find(__be32 id, struct in6_addr *src, struct in6_addr *dst)
207 arg.id = id; 207 arg.id = id;
208 arg.src = src; 208 arg.src = src;
209 arg.dst = dst; 209 arg.dst = dst;
210
211 read_lock_bh(&nf_frags.lock);
210 hash = ip6qhashfn(id, src, dst); 212 hash = ip6qhashfn(id, src, dst);
211 213
212 local_bh_disable();
213 q = inet_frag_find(&nf_init_frags, &nf_frags, &arg, hash); 214 q = inet_frag_find(&nf_init_frags, &nf_frags, &arg, hash);
214 local_bh_enable(); 215 local_bh_enable();
215 if (q == NULL) 216 if (q == NULL)
diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
index 798cabc7535b..a60d7d129713 100644
--- a/net/ipv6/reassembly.c
+++ b/net/ipv6/reassembly.c
@@ -247,6 +247,8 @@ fq_find(struct net *net, __be32 id, struct in6_addr *src, struct in6_addr *dst,
247 arg.id = id; 247 arg.id = id;
248 arg.src = src; 248 arg.src = src;
249 arg.dst = dst; 249 arg.dst = dst;
250
251 read_lock(&ip6_frags.lock);
250 hash = ip6qhashfn(id, src, dst); 252 hash = ip6qhashfn(id, src, dst);
251 253
252 q = inet_frag_find(&net->ipv6.frags, &ip6_frags, &arg, hash); 254 q = inet_frag_find(&net->ipv6.frags, &ip6_frags, &arg, hash);
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index d1f3e19b06c7..7ff687020fa9 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -240,7 +240,7 @@ static inline int rt6_need_strict(struct in6_addr *daddr)
240static inline struct rt6_info *rt6_device_match(struct net *net, 240static inline struct rt6_info *rt6_device_match(struct net *net,
241 struct rt6_info *rt, 241 struct rt6_info *rt,
242 int oif, 242 int oif,
243 int strict) 243 int flags)
244{ 244{
245 struct rt6_info *local = NULL; 245 struct rt6_info *local = NULL;
246 struct rt6_info *sprt; 246 struct rt6_info *sprt;
@@ -253,7 +253,7 @@ static inline struct rt6_info *rt6_device_match(struct net *net,
253 if (dev->flags & IFF_LOOPBACK) { 253 if (dev->flags & IFF_LOOPBACK) {
254 if (sprt->rt6i_idev == NULL || 254 if (sprt->rt6i_idev == NULL ||
255 sprt->rt6i_idev->dev->ifindex != oif) { 255 sprt->rt6i_idev->dev->ifindex != oif) {
256 if (strict && oif) 256 if (flags & RT6_LOOKUP_F_IFACE && oif)
257 continue; 257 continue;
258 if (local && (!oif || 258 if (local && (!oif ||
259 local->rt6i_idev->dev->ifindex == oif)) 259 local->rt6i_idev->dev->ifindex == oif))
@@ -266,7 +266,7 @@ static inline struct rt6_info *rt6_device_match(struct net *net,
266 if (local) 266 if (local)
267 return local; 267 return local;
268 268
269 if (strict) 269 if (flags & RT6_LOOKUP_F_IFACE)
270 return net->ipv6.ip6_null_entry; 270 return net->ipv6.ip6_null_entry;
271 } 271 }
272 return rt; 272 return rt;
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
index 3de6ffdaedf2..32e871a6c25a 100644
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -222,15 +222,18 @@ __ipip6_tunnel_locate_prl(struct ip_tunnel *t, __be32 addr)
222 222
223} 223}
224 224
225static int ipip6_tunnel_get_prl(struct ip_tunnel *t, struct ip_tunnel_prl *a) 225static int ipip6_tunnel_get_prl(struct ip_tunnel *t,
226 struct ip_tunnel_prl __user *a)
226{ 227{
227 struct ip_tunnel_prl *kp; 228 struct ip_tunnel_prl kprl, *kp;
228 struct ip_tunnel_prl_entry *prl; 229 struct ip_tunnel_prl_entry *prl;
229 unsigned int cmax, c = 0, ca, len; 230 unsigned int cmax, c = 0, ca, len;
230 int ret = 0; 231 int ret = 0;
231 232
232 cmax = a->datalen / sizeof(*a); 233 if (copy_from_user(&kprl, a, sizeof(kprl)))
233 if (cmax > 1 && a->addr != htonl(INADDR_ANY)) 234 return -EFAULT;
235 cmax = kprl.datalen / sizeof(kprl);
236 if (cmax > 1 && kprl.addr != htonl(INADDR_ANY))
234 cmax = 1; 237 cmax = 1;
235 238
236 /* For simple GET or for root users, 239 /* For simple GET or for root users,
@@ -261,26 +264,25 @@ static int ipip6_tunnel_get_prl(struct ip_tunnel *t, struct ip_tunnel_prl *a)
261 for (prl = t->prl; prl; prl = prl->next) { 264 for (prl = t->prl; prl; prl = prl->next) {
262 if (c > cmax) 265 if (c > cmax)
263 break; 266 break;
264 if (a->addr != htonl(INADDR_ANY) && prl->addr != a->addr) 267 if (kprl.addr != htonl(INADDR_ANY) && prl->addr != kprl.addr)
265 continue; 268 continue;
266 kp[c].addr = prl->addr; 269 kp[c].addr = prl->addr;
267 kp[c].flags = prl->flags; 270 kp[c].flags = prl->flags;
268 c++; 271 c++;
269 if (a->addr != htonl(INADDR_ANY)) 272 if (kprl.addr != htonl(INADDR_ANY))
270 break; 273 break;
271 } 274 }
272out: 275out:
273 read_unlock(&ipip6_lock); 276 read_unlock(&ipip6_lock);
274 277
275 len = sizeof(*kp) * c; 278 len = sizeof(*kp) * c;
276 ret = len ? copy_to_user(a->data, kp, len) : 0; 279 ret = 0;
280 if ((len && copy_to_user(a + 1, kp, len)) || put_user(len, &a->datalen))
281 ret = -EFAULT;
277 282
278 kfree(kp); 283 kfree(kp);
279 if (ret)
280 return -EFAULT;
281 284
282 a->datalen = len; 285 return ret;
283 return 0;
284} 286}
285 287
286static int 288static int
@@ -873,11 +875,20 @@ ipip6_tunnel_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd)
873 break; 875 break;
874 876
875 case SIOCGETPRL: 877 case SIOCGETPRL:
878 err = -EINVAL;
879 if (dev == sitn->fb_tunnel_dev)
880 goto done;
881 err = -ENOENT;
882 if (!(t = netdev_priv(dev)))
883 goto done;
884 err = ipip6_tunnel_get_prl(t, ifr->ifr_ifru.ifru_data);
885 break;
886
876 case SIOCADDPRL: 887 case SIOCADDPRL:
877 case SIOCDELPRL: 888 case SIOCDELPRL:
878 case SIOCCHGPRL: 889 case SIOCCHGPRL:
879 err = -EPERM; 890 err = -EPERM;
880 if (cmd != SIOCGETPRL && !capable(CAP_NET_ADMIN)) 891 if (!capable(CAP_NET_ADMIN))
881 goto done; 892 goto done;
882 err = -EINVAL; 893 err = -EINVAL;
883 if (dev == sitn->fb_tunnel_dev) 894 if (dev == sitn->fb_tunnel_dev)
@@ -890,12 +901,6 @@ ipip6_tunnel_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd)
890 goto done; 901 goto done;
891 902
892 switch (cmd) { 903 switch (cmd) {
893 case SIOCGETPRL:
894 err = ipip6_tunnel_get_prl(t, &prl);
895 if (!err && copy_to_user(ifr->ifr_ifru.ifru_data,
896 &prl, sizeof(prl)))
897 err = -EFAULT;
898 break;
899 case SIOCDELPRL: 904 case SIOCDELPRL:
900 err = ipip6_tunnel_del_prl(t, &prl); 905 err = ipip6_tunnel_del_prl(t, &prl);
901 break; 906 break;
@@ -904,8 +909,7 @@ ipip6_tunnel_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd)
904 err = ipip6_tunnel_add_prl(t, &prl, cmd == SIOCCHGPRL); 909 err = ipip6_tunnel_add_prl(t, &prl, cmd == SIOCCHGPRL);
905 break; 910 break;
906 } 911 }
907 if (cmd != SIOCGETPRL) 912 netdev_state_change(dev);
908 netdev_state_change(dev);
909 break; 913 break;
910 914
911 default: 915 default:
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index cb46749d4c32..40ea9c36d24b 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -2036,7 +2036,7 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
2036 2036
2037 seq_printf(seq, 2037 seq_printf(seq,
2038 "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " 2038 "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X "
2039 "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p %u %u %u %u %d\n", 2039 "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p %lu %lu %u %u %d\n",
2040 i, 2040 i,
2041 src->s6_addr32[0], src->s6_addr32[1], 2041 src->s6_addr32[0], src->s6_addr32[1],
2042 src->s6_addr32[2], src->s6_addr32[3], srcp, 2042 src->s6_addr32[2], src->s6_addr32[3], srcp,
@@ -2052,8 +2052,8 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
2052 icsk->icsk_probes_out, 2052 icsk->icsk_probes_out,
2053 sock_i_ino(sp), 2053 sock_i_ino(sp),
2054 atomic_read(&sp->sk_refcnt), sp, 2054 atomic_read(&sp->sk_refcnt), sp,
2055 icsk->icsk_rto, 2055 jiffies_to_clock_t(icsk->icsk_rto),
2056 icsk->icsk_ack.ato, 2056 jiffies_to_clock_t(icsk->icsk_ack.ato),
2057 (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong, 2057 (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong,
2058 tp->snd_cwnd, tp->snd_ssthresh>=0xFFFF?-1:tp->snd_ssthresh 2058 tp->snd_cwnd, tp->snd_ssthresh>=0xFFFF?-1:tp->snd_ssthresh
2059 ); 2059 );
diff --git a/net/mac80211/key.c b/net/mac80211/key.c
index 150d66dbda9d..220e83be3ef4 100644
--- a/net/mac80211/key.c
+++ b/net/mac80211/key.c
@@ -380,6 +380,15 @@ void ieee80211_key_free(struct ieee80211_key *key)
380 if (!key) 380 if (!key)
381 return; 381 return;
382 382
383 if (!key->sdata) {
384 /* The key has not been linked yet, simply free it
385 * and don't Oops */
386 if (key->conf.alg == ALG_CCMP)
387 ieee80211_aes_key_free(key->u.ccmp.tfm);
388 kfree(key);
389 return;
390 }
391
383 spin_lock_irqsave(&key->sdata->local->key_lock, flags); 392 spin_lock_irqsave(&key->sdata->local->key_lock, flags);
384 __ieee80211_key_free(key); 393 __ieee80211_key_free(key);
385 spin_unlock_irqrestore(&key->sdata->local->key_lock, flags); 394 spin_unlock_irqrestore(&key->sdata->local->key_lock, flags);
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 1d7dd54aacef..c80d5899f279 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1132,7 +1132,7 @@ static int ieee80211_tx(struct net_device *dev, struct sk_buff *skb,
1132 ieee80211_tx_handler *handler; 1132 ieee80211_tx_handler *handler;
1133 struct ieee80211_tx_data tx; 1133 struct ieee80211_tx_data tx;
1134 ieee80211_tx_result res = TX_DROP, res_prepare; 1134 ieee80211_tx_result res = TX_DROP, res_prepare;
1135 int ret, i; 1135 int ret, i, retries = 0;
1136 1136
1137 WARN_ON(__ieee80211_queue_pending(local, control->queue)); 1137 WARN_ON(__ieee80211_queue_pending(local, control->queue));
1138 1138
@@ -1216,6 +1216,13 @@ retry:
1216 if (!__ieee80211_queue_stopped(local, control->queue)) { 1216 if (!__ieee80211_queue_stopped(local, control->queue)) {
1217 clear_bit(IEEE80211_LINK_STATE_PENDING, 1217 clear_bit(IEEE80211_LINK_STATE_PENDING,
1218 &local->state[control->queue]); 1218 &local->state[control->queue]);
1219 retries++;
1220 /*
1221 * Driver bug, it's rejecting packets but
1222 * not stopping queues.
1223 */
1224 if (WARN_ON_ONCE(retries > 5))
1225 goto drop;
1219 goto retry; 1226 goto retry;
1220 } 1227 }
1221 memcpy(&store->control, control, 1228 memcpy(&store->control, control,
@@ -1562,13 +1569,13 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
1562 * be cloned. This could happen, e.g., with Linux bridge code passing 1569 * be cloned. This could happen, e.g., with Linux bridge code passing
1563 * us broadcast frames. */ 1570 * us broadcast frames. */
1564 1571
1565 if (head_need > 0 || skb_header_cloned(skb)) { 1572 if (head_need > 0 || skb_cloned(skb)) {
1566#if 0 1573#if 0
1567 printk(KERN_DEBUG "%s: need to reallocate buffer for %d bytes " 1574 printk(KERN_DEBUG "%s: need to reallocate buffer for %d bytes "
1568 "of headroom\n", dev->name, head_need); 1575 "of headroom\n", dev->name, head_need);
1569#endif 1576#endif
1570 1577
1571 if (skb_header_cloned(skb)) 1578 if (skb_cloned(skb))
1572 I802_DEBUG_INC(local->tx_expand_skb_head_cloned); 1579 I802_DEBUG_INC(local->tx_expand_skb_head_cloned);
1573 else 1580 else
1574 I802_DEBUG_INC(local->tx_expand_skb_head); 1581 I802_DEBUG_INC(local->tx_expand_skb_head);
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
index a8bb8e31b1ec..e8404212ad57 100644
--- a/net/mac80211/wext.c
+++ b/net/mac80211/wext.c
@@ -95,6 +95,13 @@ static int ieee80211_set_encryption(struct net_device *dev, u8 *sta_addr,
95 } 95 }
96 } 96 }
97 97
98 if (alg == ALG_WEP &&
99 key_len != LEN_WEP40 && key_len != LEN_WEP104) {
100 ieee80211_key_free(key);
101 err = -EINVAL;
102 goto out_unlock;
103 }
104
98 ieee80211_key_link(key, sdata, sta); 105 ieee80211_key_link(key, sdata, sta);
99 106
100 if (set_tx_key || (!sta && !sdata->default_key && key)) 107 if (set_tx_key || (!sta && !sdata->default_key && key))
@@ -496,7 +503,8 @@ static int ieee80211_ioctl_giwap(struct net_device *dev,
496 sdata = IEEE80211_DEV_TO_SUB_IF(dev); 503 sdata = IEEE80211_DEV_TO_SUB_IF(dev);
497 if (sdata->vif.type == IEEE80211_IF_TYPE_STA || 504 if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
498 sdata->vif.type == IEEE80211_IF_TYPE_IBSS) { 505 sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
499 if (sdata->u.sta.state == IEEE80211_ASSOCIATED) { 506 if (sdata->u.sta.state == IEEE80211_ASSOCIATED ||
507 sdata->u.sta.state == IEEE80211_IBSS_JOINED) {
500 ap_addr->sa_family = ARPHRD_ETHER; 508 ap_addr->sa_family = ARPHRD_ETHER;
501 memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN); 509 memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
502 return 0; 510 return 0;
diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c
index dc1598b86004..5d09e8698b57 100644
--- a/net/mac80211/wme.c
+++ b/net/mac80211/wme.c
@@ -323,8 +323,7 @@ static void wme_qdiscop_destroy(struct Qdisc* qd)
323 struct ieee80211_hw *hw = &local->hw; 323 struct ieee80211_hw *hw = &local->hw;
324 int queue; 324 int queue;
325 325
326 tcf_destroy_chain(q->filter_list); 326 tcf_destroy_chain(&q->filter_list);
327 q->filter_list = NULL;
328 327
329 for (queue=0; queue < hw->queues; queue++) { 328 for (queue=0; queue < hw->queues; queue++) {
330 skb_queue_purge(&q->requeued[queue]); 329 skb_queue_purge(&q->requeued[queue]);
@@ -673,7 +672,7 @@ int ieee80211_ht_agg_queue_add(struct ieee80211_local *local,
673#ifdef CONFIG_MAC80211_HT_DEBUG 672#ifdef CONFIG_MAC80211_HT_DEBUG
674 if (net_ratelimit()) 673 if (net_ratelimit())
675 printk(KERN_DEBUG "allocated aggregation queue" 674 printk(KERN_DEBUG "allocated aggregation queue"
676 " %d tid %d addr %s pool=0x%lX", 675 " %d tid %d addr %s pool=0x%lX\n",
677 i, tid, print_mac(mac, sta->addr), 676 i, tid, print_mac(mac, sta->addr),
678 q->qdisc_pool[0]); 677 q->qdisc_pool[0]);
679#endif /* CONFIG_MAC80211_HT_DEBUG */ 678#endif /* CONFIG_MAC80211_HT_DEBUG */
diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c
index bcc19fa4ed1e..8a3f8b34e466 100644
--- a/net/netfilter/nf_conntrack_extend.c
+++ b/net/netfilter/nf_conntrack_extend.c
@@ -59,12 +59,19 @@ nf_ct_ext_create(struct nf_ct_ext **ext, enum nf_ct_ext_id id, gfp_t gfp)
59 if (!*ext) 59 if (!*ext)
60 return NULL; 60 return NULL;
61 61
62 INIT_RCU_HEAD(&(*ext)->rcu);
62 (*ext)->offset[id] = off; 63 (*ext)->offset[id] = off;
63 (*ext)->len = len; 64 (*ext)->len = len;
64 65
65 return (void *)(*ext) + off; 66 return (void *)(*ext) + off;
66} 67}
67 68
69static void __nf_ct_ext_free_rcu(struct rcu_head *head)
70{
71 struct nf_ct_ext *ext = container_of(head, struct nf_ct_ext, rcu);
72 kfree(ext);
73}
74
68void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp) 75void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp)
69{ 76{
70 struct nf_ct_ext *new; 77 struct nf_ct_ext *new;
@@ -106,7 +113,7 @@ void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp)
106 (void *)ct->ext + ct->ext->offset[i]); 113 (void *)ct->ext + ct->ext->offset[i]);
107 rcu_read_unlock(); 114 rcu_read_unlock();
108 } 115 }
109 kfree(ct->ext); 116 call_rcu(&ct->ext->rcu, __nf_ct_ext_free_rcu);
110 ct->ext = new; 117 ct->ext = new;
111 } 118 }
112 119
diff --git a/net/netfilter/nf_conntrack_h323_main.c b/net/netfilter/nf_conntrack_h323_main.c
index 95da1a24aab7..2f83c158934d 100644
--- a/net/netfilter/nf_conntrack_h323_main.c
+++ b/net/netfilter/nf_conntrack_h323_main.c
@@ -619,6 +619,7 @@ static const struct nf_conntrack_expect_policy h245_exp_policy = {
619static struct nf_conntrack_helper nf_conntrack_helper_h245 __read_mostly = { 619static struct nf_conntrack_helper nf_conntrack_helper_h245 __read_mostly = {
620 .name = "H.245", 620 .name = "H.245",
621 .me = THIS_MODULE, 621 .me = THIS_MODULE,
622 .tuple.src.l3num = AF_UNSPEC,
622 .tuple.dst.protonum = IPPROTO_UDP, 623 .tuple.dst.protonum = IPPROTO_UDP,
623 .help = h245_help, 624 .help = h245_help,
624 .expect_policy = &h245_exp_policy, 625 .expect_policy = &h245_exp_policy,
@@ -1765,6 +1766,7 @@ static void __exit nf_conntrack_h323_fini(void)
1765 nf_conntrack_helper_unregister(&nf_conntrack_helper_ras[0]); 1766 nf_conntrack_helper_unregister(&nf_conntrack_helper_ras[0]);
1766 nf_conntrack_helper_unregister(&nf_conntrack_helper_q931[1]); 1767 nf_conntrack_helper_unregister(&nf_conntrack_helper_q931[1]);
1767 nf_conntrack_helper_unregister(&nf_conntrack_helper_q931[0]); 1768 nf_conntrack_helper_unregister(&nf_conntrack_helper_q931[0]);
1769 nf_conntrack_helper_unregister(&nf_conntrack_helper_h245);
1768 kfree(h323_buffer); 1770 kfree(h323_buffer);
1769 pr_debug("nf_ct_h323: fini\n"); 1771 pr_debug("nf_ct_h323: fini\n");
1770} 1772}
@@ -1777,28 +1779,34 @@ static int __init nf_conntrack_h323_init(void)
1777 h323_buffer = kmalloc(65536, GFP_KERNEL); 1779 h323_buffer = kmalloc(65536, GFP_KERNEL);
1778 if (!h323_buffer) 1780 if (!h323_buffer)
1779 return -ENOMEM; 1781 return -ENOMEM;
1780 ret = nf_conntrack_helper_register(&nf_conntrack_helper_q931[0]); 1782 ret = nf_conntrack_helper_register(&nf_conntrack_helper_h245);
1781 if (ret < 0) 1783 if (ret < 0)
1782 goto err1; 1784 goto err1;
1783 ret = nf_conntrack_helper_register(&nf_conntrack_helper_q931[1]); 1785 ret = nf_conntrack_helper_register(&nf_conntrack_helper_q931[0]);
1784 if (ret < 0) 1786 if (ret < 0)
1785 goto err2; 1787 goto err2;
1786 ret = nf_conntrack_helper_register(&nf_conntrack_helper_ras[0]); 1788 ret = nf_conntrack_helper_register(&nf_conntrack_helper_q931[1]);
1787 if (ret < 0) 1789 if (ret < 0)
1788 goto err3; 1790 goto err3;
1789 ret = nf_conntrack_helper_register(&nf_conntrack_helper_ras[1]); 1791 ret = nf_conntrack_helper_register(&nf_conntrack_helper_ras[0]);
1790 if (ret < 0) 1792 if (ret < 0)
1791 goto err4; 1793 goto err4;
1794 ret = nf_conntrack_helper_register(&nf_conntrack_helper_ras[1]);
1795 if (ret < 0)
1796 goto err5;
1792 pr_debug("nf_ct_h323: init success\n"); 1797 pr_debug("nf_ct_h323: init success\n");
1793 return 0; 1798 return 0;
1794 1799
1795err4: 1800err5:
1796 nf_conntrack_helper_unregister(&nf_conntrack_helper_ras[0]); 1801 nf_conntrack_helper_unregister(&nf_conntrack_helper_ras[0]);
1797err3: 1802err4:
1798 nf_conntrack_helper_unregister(&nf_conntrack_helper_q931[1]); 1803 nf_conntrack_helper_unregister(&nf_conntrack_helper_q931[1]);
1799err2: 1804err3:
1800 nf_conntrack_helper_unregister(&nf_conntrack_helper_q931[0]); 1805 nf_conntrack_helper_unregister(&nf_conntrack_helper_q931[0]);
1806err2:
1807 nf_conntrack_helper_unregister(&nf_conntrack_helper_h245);
1801err1: 1808err1:
1809 kfree(h323_buffer);
1802 return ret; 1810 return ret;
1803} 1811}
1804 1812
diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
index ba94004fe323..271cd01d57ae 100644
--- a/net/netfilter/nf_conntrack_proto_tcp.c
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
@@ -331,12 +331,13 @@ static unsigned int get_conntrack_index(const struct tcphdr *tcph)
331 331
332 I. Upper bound for valid data: seq <= sender.td_maxend 332 I. Upper bound for valid data: seq <= sender.td_maxend
333 II. Lower bound for valid data: seq + len >= sender.td_end - receiver.td_maxwin 333 II. Lower bound for valid data: seq + len >= sender.td_end - receiver.td_maxwin
334 III. Upper bound for valid ack: sack <= receiver.td_end 334 III. Upper bound for valid (s)ack: sack <= receiver.td_end
335 IV. Lower bound for valid ack: ack >= receiver.td_end - MAXACKWINDOW 335 IV. Lower bound for valid (s)ack: sack >= receiver.td_end - MAXACKWINDOW
336 336
337 where sack is the highest right edge of sack block found in the packet. 337 where sack is the highest right edge of sack block found in the packet
338 or ack in the case of packet without SACK option.
338 339
339 The upper bound limit for a valid ack is not ignored - 340 The upper bound limit for a valid (s)ack is not ignored -
340 we doesn't have to deal with fragments. 341 we doesn't have to deal with fragments.
341*/ 342*/
342 343
@@ -606,12 +607,12 @@ static bool tcp_in_window(const struct nf_conn *ct,
606 before(seq, sender->td_maxend + 1), 607 before(seq, sender->td_maxend + 1),
607 after(end, sender->td_end - receiver->td_maxwin - 1), 608 after(end, sender->td_end - receiver->td_maxwin - 1),
608 before(sack, receiver->td_end + 1), 609 before(sack, receiver->td_end + 1),
609 after(ack, receiver->td_end - MAXACKWINDOW(sender))); 610 after(sack, receiver->td_end - MAXACKWINDOW(sender) - 1));
610 611
611 if (before(seq, sender->td_maxend + 1) && 612 if (before(seq, sender->td_maxend + 1) &&
612 after(end, sender->td_end - receiver->td_maxwin - 1) && 613 after(end, sender->td_end - receiver->td_maxwin - 1) &&
613 before(sack, receiver->td_end + 1) && 614 before(sack, receiver->td_end + 1) &&
614 after(ack, receiver->td_end - MAXACKWINDOW(sender))) { 615 after(sack, receiver->td_end - MAXACKWINDOW(sender) - 1)) {
615 /* 616 /*
616 * Take into account window scaling (RFC 1323). 617 * Take into account window scaling (RFC 1323).
617 */ 618 */
diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c
index 0099da5b2591..52b2611a6eb6 100644
--- a/net/netlabel/netlabel_unlabeled.c
+++ b/net/netlabel/netlabel_unlabeled.c
@@ -1534,7 +1534,7 @@ static int netlbl_unlabel_staticlistdef(struct sk_buff *skb,
1534 } 1534 }
1535 } 1535 }
1536 list_for_each_entry_rcu(addr6, &iface->addr6_list, list) { 1536 list_for_each_entry_rcu(addr6, &iface->addr6_list, list) {
1537 if (addr6->valid || iter_addr6++ < skip_addr6) 1537 if (!addr6->valid || iter_addr6++ < skip_addr6)
1538 continue; 1538 continue;
1539 if (netlbl_unlabel_staticlist_gen(NLBL_UNLABEL_C_STATICLISTDEF, 1539 if (netlbl_unlabel_staticlist_gen(NLBL_UNLABEL_C_STATICLISTDEF,
1540 iface, 1540 iface,
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 9b97f8006c9c..349aba189558 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -886,7 +886,7 @@ retry:
886 return netlink_unicast_kernel(sk, skb); 886 return netlink_unicast_kernel(sk, skb);
887 887
888 if (sk_filter(sk, skb)) { 888 if (sk_filter(sk, skb)) {
889 int err = skb->len; 889 err = skb->len;
890 kfree_skb(skb); 890 kfree_skb(skb);
891 sock_put(sk); 891 sock_put(sk);
892 return err; 892 return err;
diff --git a/net/netlink/attr.c b/net/netlink/attr.c
index 47bbf45ae5d7..2d106cfe1d27 100644
--- a/net/netlink/attr.c
+++ b/net/netlink/attr.c
@@ -132,6 +132,7 @@ errout:
132 * @maxtype: maximum attribute type to be expected 132 * @maxtype: maximum attribute type to be expected
133 * @head: head of attribute stream 133 * @head: head of attribute stream
134 * @len: length of attribute stream 134 * @len: length of attribute stream
135 * @policy: validation policy
135 * 136 *
136 * Parses a stream of attributes and stores a pointer to each attribute in 137 * Parses a stream of attributes and stores a pointer to each attribute in
137 * the tb array accessable via the attribute type. Attributes with a type 138 * the tb array accessable via the attribute type. Attributes with a type
@@ -194,7 +195,7 @@ struct nlattr *nla_find(struct nlattr *head, int len, int attrtype)
194/** 195/**
195 * nla_strlcpy - Copy string attribute payload into a sized buffer 196 * nla_strlcpy - Copy string attribute payload into a sized buffer
196 * @dst: where to copy the string to 197 * @dst: where to copy the string to
197 * @src: attribute to copy the string from 198 * @nla: attribute to copy the string from
198 * @dstsize: size of destination buffer 199 * @dstsize: size of destination buffer
199 * 200 *
200 * Copies at most dstsize - 1 bytes into the destination buffer. 201 * Copies at most dstsize - 1 bytes into the destination buffer.
@@ -340,9 +341,9 @@ struct nlattr *nla_reserve(struct sk_buff *skb, int attrtype, int attrlen)
340} 341}
341 342
342/** 343/**
343 * nla_reserve - reserve room for attribute without header 344 * nla_reserve_nohdr - reserve room for attribute without header
344 * @skb: socket buffer to reserve room on 345 * @skb: socket buffer to reserve room on
345 * @len: length of attribute payload 346 * @attrlen: length of attribute payload
346 * 347 *
347 * Reserves room for attribute payload without a header. 348 * Reserves room for attribute payload without a header.
348 * 349 *
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
index f5aa23c3e886..3e1191cecaf0 100644
--- a/net/netlink/genetlink.c
+++ b/net/netlink/genetlink.c
@@ -444,8 +444,11 @@ static int genl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
444 if (ops->dumpit == NULL) 444 if (ops->dumpit == NULL)
445 return -EOPNOTSUPP; 445 return -EOPNOTSUPP;
446 446
447 return netlink_dump_start(genl_sock, skb, nlh, 447 genl_unlock();
448 ops->dumpit, ops->done); 448 err = netlink_dump_start(genl_sock, skb, nlh,
449 ops->dumpit, ops->done);
450 genl_lock();
451 return err;
449 } 452 }
450 453
451 if (ops->doit == NULL) 454 if (ops->doit == NULL)
@@ -603,9 +606,6 @@ static int ctrl_dumpfamily(struct sk_buff *skb, struct netlink_callback *cb)
603 int chains_to_skip = cb->args[0]; 606 int chains_to_skip = cb->args[0];
604 int fams_to_skip = cb->args[1]; 607 int fams_to_skip = cb->args[1];
605 608
606 if (chains_to_skip != 0)
607 genl_lock();
608
609 for (i = 0; i < GENL_FAM_TAB_SIZE; i++) { 609 for (i = 0; i < GENL_FAM_TAB_SIZE; i++) {
610 if (i < chains_to_skip) 610 if (i < chains_to_skip)
611 continue; 611 continue;
@@ -623,9 +623,6 @@ static int ctrl_dumpfamily(struct sk_buff *skb, struct netlink_callback *cb)
623 } 623 }
624 624
625errout: 625errout:
626 if (chains_to_skip != 0)
627 genl_unlock();
628
629 cb->args[0] = i; 626 cb->args[0] = i;
630 cb->args[1] = n; 627 cb->args[1] = n;
631 628
@@ -770,7 +767,7 @@ static int __init genl_init(void)
770 767
771 /* we'll bump the group number right afterwards */ 768 /* we'll bump the group number right afterwards */
772 genl_sock = netlink_kernel_create(&init_net, NETLINK_GENERIC, 0, 769 genl_sock = netlink_kernel_create(&init_net, NETLINK_GENERIC, 0,
773 genl_rcv, NULL, THIS_MODULE); 770 genl_rcv, &genl_mutex, THIS_MODULE);
774 if (genl_sock == NULL) 771 if (genl_sock == NULL)
775 panic("GENL: Cannot initialize generic netlink\n"); 772 panic("GENL: Cannot initialize generic netlink\n");
776 773
diff --git a/net/sched/Kconfig b/net/sched/Kconfig
index 82adfe6447d7..9437b27ff84d 100644
--- a/net/sched/Kconfig
+++ b/net/sched/Kconfig
@@ -106,17 +106,6 @@ config NET_SCH_PRIO
106 To compile this code as a module, choose M here: the 106 To compile this code as a module, choose M here: the
107 module will be called sch_prio. 107 module will be called sch_prio.
108 108
109config NET_SCH_RR
110 tristate "Multi Band Round Robin Queuing (RR)"
111 select NET_SCH_PRIO
112 ---help---
113 Say Y here if you want to use an n-band round robin packet
114 scheduler.
115
116 The module uses sch_prio for its framework and is aliased as
117 sch_rr, so it will load sch_prio, although it is referred
118 to using sch_rr.
119
120config NET_SCH_RED 109config NET_SCH_RED
121 tristate "Random Early Detection (RED)" 110 tristate "Random Early Detection (RED)"
122 ---help--- 111 ---help---
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index c40773cdbe45..10f01ad04380 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -1252,12 +1252,12 @@ void tcf_destroy(struct tcf_proto *tp)
1252 kfree(tp); 1252 kfree(tp);
1253} 1253}
1254 1254
1255void tcf_destroy_chain(struct tcf_proto *fl) 1255void tcf_destroy_chain(struct tcf_proto **fl)
1256{ 1256{
1257 struct tcf_proto *tp; 1257 struct tcf_proto *tp;
1258 1258
1259 while ((tp = fl) != NULL) { 1259 while ((tp = *fl) != NULL) {
1260 fl = tp->next; 1260 *fl = tp->next;
1261 tcf_destroy(tp); 1261 tcf_destroy(tp);
1262 } 1262 }
1263} 1263}
diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c
index 335273416384..db0e23ae85f8 100644
--- a/net/sched/sch_atm.c
+++ b/net/sched/sch_atm.c
@@ -160,7 +160,7 @@ static void atm_tc_put(struct Qdisc *sch, unsigned long cl)
160 *prev = flow->next; 160 *prev = flow->next;
161 pr_debug("atm_tc_put: qdisc %p\n", flow->q); 161 pr_debug("atm_tc_put: qdisc %p\n", flow->q);
162 qdisc_destroy(flow->q); 162 qdisc_destroy(flow->q);
163 tcf_destroy_chain(flow->filter_list); 163 tcf_destroy_chain(&flow->filter_list);
164 if (flow->sock) { 164 if (flow->sock) {
165 pr_debug("atm_tc_put: f_count %d\n", 165 pr_debug("atm_tc_put: f_count %d\n",
166 file_count(flow->sock->file)); 166 file_count(flow->sock->file));
@@ -586,10 +586,11 @@ static void atm_tc_destroy(struct Qdisc *sch)
586 struct atm_flow_data *flow; 586 struct atm_flow_data *flow;
587 587
588 pr_debug("atm_tc_destroy(sch %p,[qdisc %p])\n", sch, p); 588 pr_debug("atm_tc_destroy(sch %p,[qdisc %p])\n", sch, p);
589 for (flow = p->flows; flow; flow = flow->next)
590 tcf_destroy_chain(&flow->filter_list);
591
589 /* races ? */ 592 /* races ? */
590 while ((flow = p->flows)) { 593 while ((flow = p->flows)) {
591 tcf_destroy_chain(flow->filter_list);
592 flow->filter_list = NULL;
593 if (flow->ref > 1) 594 if (flow->ref > 1)
594 printk(KERN_ERR "atm_destroy: %p->ref = %d\n", flow, 595 printk(KERN_ERR "atm_destroy: %p->ref = %d\n", flow,
595 flow->ref); 596 flow->ref);
diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c
index 09969c1fbc08..2a3c97f7dc63 100644
--- a/net/sched/sch_cbq.c
+++ b/net/sched/sch_cbq.c
@@ -1704,7 +1704,7 @@ static void cbq_destroy_class(struct Qdisc *sch, struct cbq_class *cl)
1704 1704
1705 BUG_TRAP(!cl->filters); 1705 BUG_TRAP(!cl->filters);
1706 1706
1707 tcf_destroy_chain(cl->filter_list); 1707 tcf_destroy_chain(&cl->filter_list);
1708 qdisc_destroy(cl->q); 1708 qdisc_destroy(cl->q);
1709 qdisc_put_rtab(cl->R_tab); 1709 qdisc_put_rtab(cl->R_tab);
1710 gen_kill_estimator(&cl->bstats, &cl->rate_est); 1710 gen_kill_estimator(&cl->bstats, &cl->rate_est);
@@ -1728,10 +1728,8 @@ cbq_destroy(struct Qdisc* sch)
1728 * be bound to classes which have been destroyed already. --TGR '04 1728 * be bound to classes which have been destroyed already. --TGR '04
1729 */ 1729 */
1730 for (h = 0; h < 16; h++) { 1730 for (h = 0; h < 16; h++) {
1731 for (cl = q->classes[h]; cl; cl = cl->next) { 1731 for (cl = q->classes[h]; cl; cl = cl->next)
1732 tcf_destroy_chain(cl->filter_list); 1732 tcf_destroy_chain(&cl->filter_list);
1733 cl->filter_list = NULL;
1734 }
1735 } 1733 }
1736 for (h = 0; h < 16; h++) { 1734 for (h = 0; h < 16; h++) {
1737 struct cbq_class *next; 1735 struct cbq_class *next;
diff --git a/net/sched/sch_dsmark.c b/net/sched/sch_dsmark.c
index 64465bacbe79..c4c1317cd47d 100644
--- a/net/sched/sch_dsmark.c
+++ b/net/sched/sch_dsmark.c
@@ -416,7 +416,7 @@ static void dsmark_destroy(struct Qdisc *sch)
416 416
417 pr_debug("dsmark_destroy(sch %p,[qdisc %p])\n", sch, p); 417 pr_debug("dsmark_destroy(sch %p,[qdisc %p])\n", sch, p);
418 418
419 tcf_destroy_chain(p->filter_list); 419 tcf_destroy_chain(&p->filter_list);
420 qdisc_destroy(p->q); 420 qdisc_destroy(p->q);
421 kfree(p->mask); 421 kfree(p->mask);
422} 422}
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index d355e5e47fe3..13afa7214392 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -468,7 +468,7 @@ struct Qdisc *qdisc_alloc(struct net_device *dev, struct Qdisc_ops *ops)
468 468
469 return sch; 469 return sch;
470errout: 470errout:
471 return ERR_PTR(-err); 471 return ERR_PTR(err);
472} 472}
473 473
474struct Qdisc * qdisc_create_dflt(struct net_device *dev, struct Qdisc_ops *ops, 474struct Qdisc * qdisc_create_dflt(struct net_device *dev, struct Qdisc_ops *ops,
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c
index fdfaa3fcc16d..e817aa00441d 100644
--- a/net/sched/sch_hfsc.c
+++ b/net/sched/sch_hfsc.c
@@ -1123,7 +1123,7 @@ hfsc_destroy_class(struct Qdisc *sch, struct hfsc_class *cl)
1123{ 1123{
1124 struct hfsc_sched *q = qdisc_priv(sch); 1124 struct hfsc_sched *q = qdisc_priv(sch);
1125 1125
1126 tcf_destroy_chain(cl->filter_list); 1126 tcf_destroy_chain(&cl->filter_list);
1127 qdisc_destroy(cl->qdisc); 1127 qdisc_destroy(cl->qdisc);
1128 gen_kill_estimator(&cl->bstats, &cl->rate_est); 1128 gen_kill_estimator(&cl->bstats, &cl->rate_est);
1129 if (cl != &q->root) 1129 if (cl != &q->root)
@@ -1541,6 +1541,10 @@ hfsc_destroy_qdisc(struct Qdisc *sch)
1541 unsigned int i; 1541 unsigned int i;
1542 1542
1543 for (i = 0; i < HFSC_HSIZE; i++) { 1543 for (i = 0; i < HFSC_HSIZE; i++) {
1544 list_for_each_entry(cl, &q->clhash[i], hlist)
1545 tcf_destroy_chain(&cl->filter_list);
1546 }
1547 for (i = 0; i < HFSC_HSIZE; i++) {
1544 list_for_each_entry_safe(cl, next, &q->clhash[i], hlist) 1548 list_for_each_entry_safe(cl, next, &q->clhash[i], hlist)
1545 hfsc_destroy_class(sch, cl); 1549 hfsc_destroy_class(sch, cl);
1546 } 1550 }
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c
index 5bc1ed490180..3fb58f428f72 100644
--- a/net/sched/sch_htb.c
+++ b/net/sched/sch_htb.c
@@ -28,6 +28,7 @@
28 * $Id: sch_htb.c,v 1.25 2003/12/07 11:08:25 devik Exp devik $ 28 * $Id: sch_htb.c,v 1.25 2003/12/07 11:08:25 devik Exp devik $
29 */ 29 */
30#include <linux/module.h> 30#include <linux/module.h>
31#include <linux/moduleparam.h>
31#include <linux/types.h> 32#include <linux/types.h>
32#include <linux/kernel.h> 33#include <linux/kernel.h>
33#include <linux/string.h> 34#include <linux/string.h>
@@ -53,13 +54,17 @@
53*/ 54*/
54 55
55#define HTB_HSIZE 16 /* classid hash size */ 56#define HTB_HSIZE 16 /* classid hash size */
56#define HTB_HYSTERESIS 1 /* whether to use mode hysteresis for speedup */ 57static int htb_hysteresis __read_mostly = 0; /* whether to use mode hysteresis for speedup */
57#define HTB_VER 0x30011 /* major must be matched with number suplied by TC as version */ 58#define HTB_VER 0x30011 /* major must be matched with number suplied by TC as version */
58 59
59#if HTB_VER >> 16 != TC_HTB_PROTOVER 60#if HTB_VER >> 16 != TC_HTB_PROTOVER
60#error "Mismatched sch_htb.c and pkt_sch.h" 61#error "Mismatched sch_htb.c and pkt_sch.h"
61#endif 62#endif
62 63
64/* Module parameter and sysfs export */
65module_param (htb_hysteresis, int, 0640);
66MODULE_PARM_DESC(htb_hysteresis, "Hysteresis mode, less CPU load, less accurate");
67
63/* used internaly to keep status of single class */ 68/* used internaly to keep status of single class */
64enum htb_cmode { 69enum htb_cmode {
65 HTB_CANT_SEND, /* class can't send and can't borrow */ 70 HTB_CANT_SEND, /* class can't send and can't borrow */
@@ -462,19 +467,21 @@ static void htb_deactivate_prios(struct htb_sched *q, struct htb_class *cl)
462 htb_remove_class_from_row(q, cl, mask); 467 htb_remove_class_from_row(q, cl, mask);
463} 468}
464 469
465#if HTB_HYSTERESIS
466static inline long htb_lowater(const struct htb_class *cl) 470static inline long htb_lowater(const struct htb_class *cl)
467{ 471{
468 return cl->cmode != HTB_CANT_SEND ? -cl->cbuffer : 0; 472 if (htb_hysteresis)
473 return cl->cmode != HTB_CANT_SEND ? -cl->cbuffer : 0;
474 else
475 return 0;
469} 476}
470static inline long htb_hiwater(const struct htb_class *cl) 477static inline long htb_hiwater(const struct htb_class *cl)
471{ 478{
472 return cl->cmode == HTB_CAN_SEND ? -cl->buffer : 0; 479 if (htb_hysteresis)
480 return cl->cmode == HTB_CAN_SEND ? -cl->buffer : 0;
481 else
482 return 0;
473} 483}
474#else 484
475#define htb_lowater(cl) (0)
476#define htb_hiwater(cl) (0)
477#endif
478 485
479/** 486/**
480 * htb_class_mode - computes and returns current class mode 487 * htb_class_mode - computes and returns current class mode
@@ -1231,7 +1238,7 @@ static void htb_destroy_class(struct Qdisc *sch, struct htb_class *cl)
1231 qdisc_put_rtab(cl->rate); 1238 qdisc_put_rtab(cl->rate);
1232 qdisc_put_rtab(cl->ceil); 1239 qdisc_put_rtab(cl->ceil);
1233 1240
1234 tcf_destroy_chain(cl->filter_list); 1241 tcf_destroy_chain(&cl->filter_list);
1235 1242
1236 while (!list_empty(&cl->children)) 1243 while (!list_empty(&cl->children))
1237 htb_destroy_class(sch, list_entry(cl->children.next, 1244 htb_destroy_class(sch, list_entry(cl->children.next,
@@ -1260,7 +1267,7 @@ static void htb_destroy(struct Qdisc *sch)
1260 and surprisingly it worked in 2.4. But it must precede it 1267 and surprisingly it worked in 2.4. But it must precede it
1261 because filter need its target class alive to be able to call 1268 because filter need its target class alive to be able to call
1262 unbind_filter on it (without Oops). */ 1269 unbind_filter on it (without Oops). */
1263 tcf_destroy_chain(q->filter_list); 1270 tcf_destroy_chain(&q->filter_list);
1264 1271
1265 while (!list_empty(&q->root)) 1272 while (!list_empty(&q->root))
1266 htb_destroy_class(sch, list_entry(q->root.next, 1273 htb_destroy_class(sch, list_entry(q->root.next,
diff --git a/net/sched/sch_ingress.c b/net/sched/sch_ingress.c
index 274b1ddb160c..956c80ad5965 100644
--- a/net/sched/sch_ingress.c
+++ b/net/sched/sch_ingress.c
@@ -104,7 +104,7 @@ static void ingress_destroy(struct Qdisc *sch)
104{ 104{
105 struct ingress_qdisc_data *p = qdisc_priv(sch); 105 struct ingress_qdisc_data *p = qdisc_priv(sch);
106 106
107 tcf_destroy_chain(p->filter_list); 107 tcf_destroy_chain(&p->filter_list);
108} 108}
109 109
110static int ingress_dump(struct Qdisc *sch, struct sk_buff *skb) 110static int ingress_dump(struct Qdisc *sch, struct sk_buff *skb)
diff --git a/net/sched/sch_prio.c b/net/sched/sch_prio.c
index 4aa2b45dad0a..5532f1031ab5 100644
--- a/net/sched/sch_prio.c
+++ b/net/sched/sch_prio.c
@@ -219,7 +219,7 @@ prio_destroy(struct Qdisc* sch)
219 int prio; 219 int prio;
220 struct prio_sched_data *q = qdisc_priv(sch); 220 struct prio_sched_data *q = qdisc_priv(sch);
221 221
222 tcf_destroy_chain(q->filter_list); 222 tcf_destroy_chain(&q->filter_list);
223 for (prio=0; prio<q->bands; prio++) 223 for (prio=0; prio<q->bands; prio++)
224 qdisc_destroy(q->queues[prio]); 224 qdisc_destroy(q->queues[prio]);
225} 225}
diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c
index f0463d757a98..6a97afbfb952 100644
--- a/net/sched/sch_sfq.c
+++ b/net/sched/sch_sfq.c
@@ -520,7 +520,7 @@ static void sfq_destroy(struct Qdisc *sch)
520{ 520{
521 struct sfq_sched_data *q = qdisc_priv(sch); 521 struct sfq_sched_data *q = qdisc_priv(sch);
522 522
523 tcf_destroy_chain(q->filter_list); 523 tcf_destroy_chain(&q->filter_list);
524 q->perturb_period = 0; 524 q->perturb_period = 0;
525 del_timer_sync(&q->perturb_timer); 525 del_timer_sync(&q->perturb_timer);
526} 526}
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index 532634861db1..024c3ebd9661 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -474,6 +474,15 @@ static void sctp_association_destroy(struct sctp_association *asoc)
474void sctp_assoc_set_primary(struct sctp_association *asoc, 474void sctp_assoc_set_primary(struct sctp_association *asoc,
475 struct sctp_transport *transport) 475 struct sctp_transport *transport)
476{ 476{
477 int changeover = 0;
478
479 /* it's a changeover only if we already have a primary path
480 * that we are changing
481 */
482 if (asoc->peer.primary_path != NULL &&
483 asoc->peer.primary_path != transport)
484 changeover = 1 ;
485
477 asoc->peer.primary_path = transport; 486 asoc->peer.primary_path = transport;
478 487
479 /* Set a default msg_name for events. */ 488 /* Set a default msg_name for events. */
@@ -499,12 +508,12 @@ void sctp_assoc_set_primary(struct sctp_association *asoc,
499 * double switch to the same destination address. 508 * double switch to the same destination address.
500 */ 509 */
501 if (transport->cacc.changeover_active) 510 if (transport->cacc.changeover_active)
502 transport->cacc.cycling_changeover = 1; 511 transport->cacc.cycling_changeover = changeover;
503 512
504 /* 2) The sender MUST set CHANGEOVER_ACTIVE to indicate that 513 /* 2) The sender MUST set CHANGEOVER_ACTIVE to indicate that
505 * a changeover has occurred. 514 * a changeover has occurred.
506 */ 515 */
507 transport->cacc.changeover_active = 1; 516 transport->cacc.changeover_active = changeover;
508 517
509 /* 3) The sender MUST store the next TSN to be sent in 518 /* 3) The sender MUST store the next TSN to be sent in
510 * next_tsn_at_change. 519 * next_tsn_at_change.
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index b435a193c5df..9258dfe784ae 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -108,14 +108,23 @@ static __init int sctp_proc_init(void)
108 } 108 }
109 109
110 if (sctp_snmp_proc_init()) 110 if (sctp_snmp_proc_init())
111 goto out_nomem; 111 goto out_snmp_proc_init;
112 if (sctp_eps_proc_init()) 112 if (sctp_eps_proc_init())
113 goto out_nomem; 113 goto out_eps_proc_init;
114 if (sctp_assocs_proc_init()) 114 if (sctp_assocs_proc_init())
115 goto out_nomem; 115 goto out_assocs_proc_init;
116 116
117 return 0; 117 return 0;
118 118
119out_assocs_proc_init:
120 sctp_eps_proc_exit();
121out_eps_proc_init:
122 sctp_snmp_proc_exit();
123out_snmp_proc_init:
124 if (proc_net_sctp) {
125 proc_net_sctp = NULL;
126 remove_proc_entry("sctp", init_net.proc_net);
127 }
119out_nomem: 128out_nomem:
120 return -ENOMEM; 129 return -ENOMEM;
121} 130}
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index e7e3baf7009e..0dbcde6758ea 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -4401,7 +4401,9 @@ static int sctp_getsockopt_local_addrs_old(struct sock *sk, int len,
4401 if (copy_from_user(&getaddrs, optval, len)) 4401 if (copy_from_user(&getaddrs, optval, len))
4402 return -EFAULT; 4402 return -EFAULT;
4403 4403
4404 if (getaddrs.addr_num <= 0) return -EINVAL; 4404 if (getaddrs.addr_num <= 0 ||
4405 getaddrs.addr_num >= (INT_MAX / sizeof(union sctp_addr)))
4406 return -EINVAL;
4405 /* 4407 /*
4406 * For UDP-style sockets, id specifies the association to query. 4408 * For UDP-style sockets, id specifies the association to query.
4407 * If the id field is set to the value '0' then the locally bound 4409 * If the id field is set to the value '0' then the locally bound
diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
index 5905d56737d6..81ae3d62a0cc 100644
--- a/net/sunrpc/auth_gss/svcauth_gss.c
+++ b/net/sunrpc/auth_gss/svcauth_gss.c
@@ -1144,20 +1144,20 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp)
1144 case RPC_GSS_SVC_NONE: 1144 case RPC_GSS_SVC_NONE:
1145 break; 1145 break;
1146 case RPC_GSS_SVC_INTEGRITY: 1146 case RPC_GSS_SVC_INTEGRITY:
1147 /* placeholders for length and seq. number: */
1148 svc_putnl(resv, 0);
1149 svc_putnl(resv, 0);
1147 if (unwrap_integ_data(&rqstp->rq_arg, 1150 if (unwrap_integ_data(&rqstp->rq_arg,
1148 gc->gc_seq, rsci->mechctx)) 1151 gc->gc_seq, rsci->mechctx))
1149 goto garbage_args; 1152 goto garbage_args;
1153 break;
1154 case RPC_GSS_SVC_PRIVACY:
1150 /* placeholders for length and seq. number: */ 1155 /* placeholders for length and seq. number: */
1151 svc_putnl(resv, 0); 1156 svc_putnl(resv, 0);
1152 svc_putnl(resv, 0); 1157 svc_putnl(resv, 0);
1153 break;
1154 case RPC_GSS_SVC_PRIVACY:
1155 if (unwrap_priv_data(rqstp, &rqstp->rq_arg, 1158 if (unwrap_priv_data(rqstp, &rqstp->rq_arg,
1156 gc->gc_seq, rsci->mechctx)) 1159 gc->gc_seq, rsci->mechctx))
1157 goto garbage_args; 1160 goto garbage_args;
1158 /* placeholders for length and seq. number: */
1159 svc_putnl(resv, 0);
1160 svc_putnl(resv, 0);
1161 break; 1161 break;
1162 default: 1162 default:
1163 goto auth_err; 1163 goto auth_err;
@@ -1170,8 +1170,6 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp)
1170 goto out; 1170 goto out;
1171 } 1171 }
1172garbage_args: 1172garbage_args:
1173 /* Restore write pointer to its original value: */
1174 xdr_ressize_check(rqstp, reject_stat);
1175 ret = SVC_GARBAGE; 1173 ret = SVC_GARBAGE;
1176 goto out; 1174 goto out;
1177auth_err: 1175auth_err:
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index e18cd3628db4..783317dacd30 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -169,6 +169,11 @@ static inline int unix_may_send(struct sock *sk, struct sock *osk)
169 return (unix_peer(osk) == NULL || unix_our_peer(sk, osk)); 169 return (unix_peer(osk) == NULL || unix_our_peer(sk, osk));
170} 170}
171 171
172static inline int unix_recvq_full(struct sock const *sk)
173{
174 return skb_queue_len(&sk->sk_receive_queue) > sk->sk_max_ack_backlog;
175}
176
172static struct sock *unix_peer_get(struct sock *s) 177static struct sock *unix_peer_get(struct sock *s)
173{ 178{
174 struct sock *peer; 179 struct sock *peer;
@@ -482,6 +487,8 @@ static int unix_socketpair(struct socket *, struct socket *);
482static int unix_accept(struct socket *, struct socket *, int); 487static int unix_accept(struct socket *, struct socket *, int);
483static int unix_getname(struct socket *, struct sockaddr *, int *, int); 488static int unix_getname(struct socket *, struct sockaddr *, int *, int);
484static unsigned int unix_poll(struct file *, struct socket *, poll_table *); 489static unsigned int unix_poll(struct file *, struct socket *, poll_table *);
490static unsigned int unix_dgram_poll(struct file *, struct socket *,
491 poll_table *);
485static int unix_ioctl(struct socket *, unsigned int, unsigned long); 492static int unix_ioctl(struct socket *, unsigned int, unsigned long);
486static int unix_shutdown(struct socket *, int); 493static int unix_shutdown(struct socket *, int);
487static int unix_stream_sendmsg(struct kiocb *, struct socket *, 494static int unix_stream_sendmsg(struct kiocb *, struct socket *,
@@ -527,7 +534,7 @@ static const struct proto_ops unix_dgram_ops = {
527 .socketpair = unix_socketpair, 534 .socketpair = unix_socketpair,
528 .accept = sock_no_accept, 535 .accept = sock_no_accept,
529 .getname = unix_getname, 536 .getname = unix_getname,
530 .poll = datagram_poll, 537 .poll = unix_dgram_poll,
531 .ioctl = unix_ioctl, 538 .ioctl = unix_ioctl,
532 .listen = sock_no_listen, 539 .listen = sock_no_listen,
533 .shutdown = unix_shutdown, 540 .shutdown = unix_shutdown,
@@ -548,7 +555,7 @@ static const struct proto_ops unix_seqpacket_ops = {
548 .socketpair = unix_socketpair, 555 .socketpair = unix_socketpair,
549 .accept = unix_accept, 556 .accept = unix_accept,
550 .getname = unix_getname, 557 .getname = unix_getname,
551 .poll = datagram_poll, 558 .poll = unix_dgram_poll,
552 .ioctl = unix_ioctl, 559 .ioctl = unix_ioctl,
553 .listen = unix_listen, 560 .listen = unix_listen,
554 .shutdown = unix_shutdown, 561 .shutdown = unix_shutdown,
@@ -983,8 +990,7 @@ static long unix_wait_for_peer(struct sock *other, long timeo)
983 990
984 sched = !sock_flag(other, SOCK_DEAD) && 991 sched = !sock_flag(other, SOCK_DEAD) &&
985 !(other->sk_shutdown & RCV_SHUTDOWN) && 992 !(other->sk_shutdown & RCV_SHUTDOWN) &&
986 (skb_queue_len(&other->sk_receive_queue) > 993 unix_recvq_full(other);
987 other->sk_max_ack_backlog);
988 994
989 unix_state_unlock(other); 995 unix_state_unlock(other);
990 996
@@ -1058,8 +1064,7 @@ restart:
1058 if (other->sk_state != TCP_LISTEN) 1064 if (other->sk_state != TCP_LISTEN)
1059 goto out_unlock; 1065 goto out_unlock;
1060 1066
1061 if (skb_queue_len(&other->sk_receive_queue) > 1067 if (unix_recvq_full(other)) {
1062 other->sk_max_ack_backlog) {
1063 err = -EAGAIN; 1068 err = -EAGAIN;
1064 if (!timeo) 1069 if (!timeo)
1065 goto out_unlock; 1070 goto out_unlock;
@@ -1428,9 +1433,7 @@ restart:
1428 goto out_unlock; 1433 goto out_unlock;
1429 } 1434 }
1430 1435
1431 if (unix_peer(other) != sk && 1436 if (unix_peer(other) != sk && unix_recvq_full(other)) {
1432 (skb_queue_len(&other->sk_receive_queue) >
1433 other->sk_max_ack_backlog)) {
1434 if (!timeo) { 1437 if (!timeo) {
1435 err = -EAGAIN; 1438 err = -EAGAIN;
1436 goto out_unlock; 1439 goto out_unlock;
@@ -1991,6 +1994,60 @@ static unsigned int unix_poll(struct file * file, struct socket *sock, poll_tabl
1991 return mask; 1994 return mask;
1992} 1995}
1993 1996
1997static unsigned int unix_dgram_poll(struct file *file, struct socket *sock,
1998 poll_table *wait)
1999{
2000 struct sock *sk = sock->sk, *other;
2001 unsigned int mask, writable;
2002
2003 poll_wait(file, sk->sk_sleep, wait);
2004 mask = 0;
2005
2006 /* exceptional events? */
2007 if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue))
2008 mask |= POLLERR;
2009 if (sk->sk_shutdown & RCV_SHUTDOWN)
2010 mask |= POLLRDHUP;
2011 if (sk->sk_shutdown == SHUTDOWN_MASK)
2012 mask |= POLLHUP;
2013
2014 /* readable? */
2015 if (!skb_queue_empty(&sk->sk_receive_queue) ||
2016 (sk->sk_shutdown & RCV_SHUTDOWN))
2017 mask |= POLLIN | POLLRDNORM;
2018
2019 /* Connection-based need to check for termination and startup */
2020 if (sk->sk_type == SOCK_SEQPACKET) {
2021 if (sk->sk_state == TCP_CLOSE)
2022 mask |= POLLHUP;
2023 /* connection hasn't started yet? */
2024 if (sk->sk_state == TCP_SYN_SENT)
2025 return mask;
2026 }
2027
2028 /* writable? */
2029 writable = unix_writable(sk);
2030 if (writable) {
2031 other = unix_peer_get(sk);
2032 if (other) {
2033 if (unix_peer(other) != sk) {
2034 poll_wait(file, &unix_sk(other)->peer_wait,
2035 wait);
2036 if (unix_recvq_full(other))
2037 writable = 0;
2038 }
2039
2040 sock_put(other);
2041 }
2042 }
2043
2044 if (writable)
2045 mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
2046 else
2047 set_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags);
2048
2049 return mask;
2050}
1994 2051
1995#ifdef CONFIG_PROC_FS 2052#ifdef CONFIG_PROC_FS
1996static struct sock *first_unix_socket(int *i) 2053static struct sock *first_unix_socket(int *i)
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 185488da2466..855bff4b3250 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -80,6 +80,23 @@ static const struct ieee80211_channel_range ieee80211_JP_channels[] = {
80 IEEE80211_CHAN_RADAR), 80 IEEE80211_CHAN_RADAR),
81}; 81};
82 82
83static const struct ieee80211_channel_range ieee80211_EU_channels[] = {
84 /* IEEE 802.11b/g, channels 1..13 */
85 RANGE_PWR(2412, 2472, 20, 6, 0),
86 /* IEEE 802.11a, channel 36*/
87 RANGE_PWR(5180, 5180, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
88 /* IEEE 802.11a, channel 40*/
89 RANGE_PWR(5200, 5200, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
90 /* IEEE 802.11a, channel 44*/
91 RANGE_PWR(5220, 5220, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
92 /* IEEE 802.11a, channels 48..64 */
93 RANGE_PWR(5240, 5320, 23, 6, IEEE80211_CHAN_NO_IBSS |
94 IEEE80211_CHAN_RADAR),
95 /* IEEE 802.11a, channels 100..140 */
96 RANGE_PWR(5500, 5700, 30, 6, IEEE80211_CHAN_NO_IBSS |
97 IEEE80211_CHAN_RADAR),
98};
99
83#define REGDOM(_code) \ 100#define REGDOM(_code) \
84 { \ 101 { \
85 .code = __stringify(_code), \ 102 .code = __stringify(_code), \
@@ -90,6 +107,7 @@ static const struct ieee80211_channel_range ieee80211_JP_channels[] = {
90static const struct ieee80211_regdomain ieee80211_regdoms[] = { 107static const struct ieee80211_regdomain ieee80211_regdoms[] = {
91 REGDOM(US), 108 REGDOM(US),
92 REGDOM(JP), 109 REGDOM(JP),
110 REGDOM(EU),
93}; 111};
94 112
95 113
diff --git a/security/commoncap.c b/security/commoncap.c
index 5edabc7542ae..33d343308413 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -103,10 +103,16 @@ static inline int cap_inh_is_capped(void)
103 return (cap_capable(current, CAP_SETPCAP) != 0); 103 return (cap_capable(current, CAP_SETPCAP) != 0);
104} 104}
105 105
106static inline int cap_limit_ptraced_target(void) { return 1; }
107
106#else /* ie., ndef CONFIG_SECURITY_FILE_CAPABILITIES */ 108#else /* ie., ndef CONFIG_SECURITY_FILE_CAPABILITIES */
107 109
108static inline int cap_block_setpcap(struct task_struct *t) { return 0; } 110static inline int cap_block_setpcap(struct task_struct *t) { return 0; }
109static inline int cap_inh_is_capped(void) { return 1; } 111static inline int cap_inh_is_capped(void) { return 1; }
112static inline int cap_limit_ptraced_target(void)
113{
114 return !capable(CAP_SETPCAP);
115}
110 116
111#endif /* def CONFIG_SECURITY_FILE_CAPABILITIES */ 117#endif /* def CONFIG_SECURITY_FILE_CAPABILITIES */
112 118
@@ -342,9 +348,10 @@ void cap_bprm_apply_creds (struct linux_binprm *bprm, int unsafe)
342 bprm->e_uid = current->uid; 348 bprm->e_uid = current->uid;
343 bprm->e_gid = current->gid; 349 bprm->e_gid = current->gid;
344 } 350 }
345 if (!capable (CAP_SETPCAP)) { 351 if (cap_limit_ptraced_target()) {
346 new_permitted = cap_intersect (new_permitted, 352 new_permitted =
347 current->cap_permitted); 353 cap_intersect(new_permitted,
354 current->cap_permitted);
348 } 355 }
349 } 356 }
350 } 357 }
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index baf348834b66..fd764a0858d0 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -382,6 +382,8 @@ static ssize_t devcgroup_access_write(struct cgroup *cgroup, struct cftype *cft,
382 case 'a': 382 case 'a':
383 wh.type = DEV_ALL; 383 wh.type = DEV_ALL;
384 wh.access = ACC_MASK; 384 wh.access = ACC_MASK;
385 wh.major = ~0;
386 wh.minor = ~0;
385 goto handle; 387 goto handle;
386 case 'b': 388 case 'b':
387 wh.type = DEV_BLOCK; 389 wh.type = DEV_BLOCK;
diff --git a/sound/isa/sb/sb_mixer.c b/sound/isa/sb/sb_mixer.c
index 91d14224f6b3..73d4572d136b 100644
--- a/sound/isa/sb/sb_mixer.c
+++ b/sound/isa/sb/sb_mixer.c
@@ -925,7 +925,7 @@ static unsigned char als4000_saved_regs[] = {
925static void save_mixer(struct snd_sb *chip, unsigned char *regs, int num_regs) 925static void save_mixer(struct snd_sb *chip, unsigned char *regs, int num_regs)
926{ 926{
927 unsigned char *val = chip->saved_regs; 927 unsigned char *val = chip->saved_regs;
928 snd_assert(num_regs > ARRAY_SIZE(chip->saved_regs), return); 928 snd_assert(num_regs <= ARRAY_SIZE(chip->saved_regs), return);
929 for (; num_regs; num_regs--) 929 for (; num_regs; num_regs--)
930 *val++ = snd_sbmixer_read(chip, *regs++); 930 *val++ = snd_sbmixer_read(chip, *regs++);
931} 931}
@@ -933,7 +933,7 @@ static void save_mixer(struct snd_sb *chip, unsigned char *regs, int num_regs)
933static void restore_mixer(struct snd_sb *chip, unsigned char *regs, int num_regs) 933static void restore_mixer(struct snd_sb *chip, unsigned char *regs, int num_regs)
934{ 934{
935 unsigned char *val = chip->saved_regs; 935 unsigned char *val = chip->saved_regs;
936 snd_assert(num_regs > ARRAY_SIZE(chip->saved_regs), return); 936 snd_assert(num_regs <= ARRAY_SIZE(chip->saved_regs), return);
937 for (; num_regs; num_regs--) 937 for (; num_regs; num_regs--)
938 snd_sbmixer_write(chip, *regs++, *val++); 938 snd_sbmixer_write(chip, *regs++, *val++);
939} 939}
diff --git a/sound/pci/aw2/aw2-alsa.c b/sound/pci/aw2/aw2-alsa.c
index 56f87cd33c19..3f00ddf450f8 100644
--- a/sound/pci/aw2/aw2-alsa.c
+++ b/sound/pci/aw2/aw2-alsa.c
@@ -316,6 +316,8 @@ static int __devinit snd_aw2_create(struct snd_card *card,
316 return -ENOMEM; 316 return -ENOMEM;
317 } 317 }
318 318
319 /* (2) initialization of the chip hardware */
320 snd_aw2_saa7146_setup(&chip->saa7146, chip->iobase_virt);
319 321
320 if (request_irq(pci->irq, snd_aw2_saa7146_interrupt, 322 if (request_irq(pci->irq, snd_aw2_saa7146_interrupt,
321 IRQF_SHARED, "Audiowerk2", chip)) { 323 IRQF_SHARED, "Audiowerk2", chip)) {
@@ -329,8 +331,6 @@ static int __devinit snd_aw2_create(struct snd_card *card,
329 } 331 }
330 chip->irq = pci->irq; 332 chip->irq = pci->irq;
331 333
332 /* (2) initialization of the chip hardware */
333 snd_aw2_saa7146_setup(&chip->saa7146, chip->iobase_virt);
334 err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); 334 err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
335 if (err < 0) { 335 if (err < 0) {
336 free_irq(chip->irq, (void *)chip); 336 free_irq(chip->irq, (void *)chip);
diff --git a/sound/pci/oxygen/oxygen_mixer.c b/sound/pci/oxygen/oxygen_mixer.c
index cc0cddadd589..6facac5aed90 100644
--- a/sound/pci/oxygen/oxygen_mixer.c
+++ b/sound/pci/oxygen/oxygen_mixer.c
@@ -936,11 +936,13 @@ static int add_controls(struct oxygen *chip,
936 936
937 for (i = 0; i < count; ++i) { 937 for (i = 0; i < count; ++i) {
938 template = controls[i]; 938 template = controls[i];
939 err = chip->model->control_filter(&template); 939 if (chip->model->control_filter) {
940 if (err < 0) 940 err = chip->model->control_filter(&template);
941 return err; 941 if (err < 0)
942 if (err == 1) 942 return err;
943 continue; 943 if (err == 1)
944 continue;
945 }
944 if (!strcmp(template.name, "Master Playback Volume") && 946 if (!strcmp(template.name, "Master Playback Volume") &&
945 chip->model->dac_tlv) { 947 chip->model->dac_tlv) {
946 template.tlv.p = chip->model->dac_tlv; 948 template.tlv.p = chip->model->dac_tlv;
diff --git a/virt/kvm/ioapic.c b/virt/kvm/ioapic.c
index 98778cb69c6e..44589088941f 100644
--- a/virt/kvm/ioapic.c
+++ b/virt/kvm/ioapic.c
@@ -269,35 +269,26 @@ void kvm_ioapic_set_irq(struct kvm_ioapic *ioapic, int irq, int level)
269 } 269 }
270} 270}
271 271
272static int get_eoi_gsi(struct kvm_ioapic *ioapic, int vector) 272static void __kvm_ioapic_update_eoi(struct kvm_ioapic *ioapic, int gsi)
273{ 273{
274 int i;
275
276 for (i = 0; i < IOAPIC_NUM_PINS; i++)
277 if (ioapic->redirtbl[i].fields.vector == vector)
278 return i;
279 return -1;
280}
281
282void kvm_ioapic_update_eoi(struct kvm *kvm, int vector)
283{
284 struct kvm_ioapic *ioapic = kvm->arch.vioapic;
285 union ioapic_redir_entry *ent; 274 union ioapic_redir_entry *ent;
286 int gsi;
287
288 gsi = get_eoi_gsi(ioapic, vector);
289 if (gsi == -1) {
290 printk(KERN_WARNING "Can't find redir item for %d EOI\n",
291 vector);
292 return;
293 }
294 275
295 ent = &ioapic->redirtbl[gsi]; 276 ent = &ioapic->redirtbl[gsi];
296 ASSERT(ent->fields.trig_mode == IOAPIC_LEVEL_TRIG); 277 ASSERT(ent->fields.trig_mode == IOAPIC_LEVEL_TRIG);
297 278
298 ent->fields.remote_irr = 0; 279 ent->fields.remote_irr = 0;
299 if (!ent->fields.mask && (ioapic->irr & (1 << gsi))) 280 if (!ent->fields.mask && (ioapic->irr & (1 << gsi)))
300 ioapic_deliver(ioapic, gsi); 281 ioapic_service(ioapic, gsi);
282}
283
284void kvm_ioapic_update_eoi(struct kvm *kvm, int vector)
285{
286 struct kvm_ioapic *ioapic = kvm->arch.vioapic;
287 int i;
288
289 for (i = 0; i < IOAPIC_NUM_PINS; i++)
290 if (ioapic->redirtbl[i].fields.vector == vector)
291 __kvm_ioapic_update_eoi(ioapic, i);
301} 292}
302 293
303static int ioapic_in_range(struct kvm_io_device *this, gpa_t addr) 294static int ioapic_in_range(struct kvm_io_device *this, gpa_t addr)